$(function() {
    
    var delay = (function(){
  var timer = 0;
  return function(callback, ms){
    clearTimeout (timer);
    timer = setTimeout(callback, ms);
  };
})();

        
    var r_text = new Array ();
        r_text[0] = "I am searching for? Accommodation in Colesberg";
        r_text[1] = "I am searching for? Accommodation in Knysna or Sedgefield";
        r_text[2] = "I am searching for? Colesberg or Hanover";
        r_text[3] = "I am searching for? Bloemfontein";
        r_text[4] = "I am searching for? Cape Town";
        r_text[5] = "I am searching for? Colesberg Tourism information";
        r_text[6] = "I am searching for? Johannesburg Accommodation";
        
    var pathname = window.location.pathname;
    var results_container = null;
    var results_list = null;
    var search_box = $("#search_box");
    var search_button = $("#searchButton");
    var keyword = getUrlVars()["keyword_word"]; 
   // keyword = decodeURI(keyword);
    
    if (pathname == '/search'){
        results_container = $(".container_listed");
        results_list = $("#results_listed");
        
    }else{
        results_container = $(".container_dropdown");
        results_list = $("#dropdown_listed");
    }    
                        
    var i = Math.floor(7*Math.random())
    search_box.val(r_text[i]);

    search_button.click(function(a){
        
        if (pathname == '/search'){
            search_box.trigger('keyup');
        }else{
            window.open('/search?keyword_word='+search_box.val());    
        }
        results_container.fadeOut();
    });
    
    search_box.click(function() {
        search_box.val('');
        results_container.fadeOut();
    });   
            
    search_box.keyup(function() {

        var search_word = search_box.val();
        var dataString = 'keyword_word='+ search_word;        
        var firstLetter = search_word.substr(0, 1);
        
        search_word = firstLetter.toUpperCase() + search_word.substr(1);       
        search_box.val(search_word);

        delay(function(){
     
	if(search_word != '' && search_word.length >= 4){
	
            $.ajax({
                type: "GET",
                url: "/controller/search.php",
                data: dataString,
                dataType: 'json',
                cache: true,
                beforeSend: function(html){
                    results_list.empty();   
                    search_box.addClass('loading')
                },
                success: function(data){
                    
                    results_list.empty();                
                    results_container.fadeIn();
                    build_empty(data, search_word);
                    build_results(data);                                                            
                }
            });
	}
        
        }, 500 );
    });
    
    function build_empty(data, search_word){
        if(data == ''){
            results_list.append(
                $('<li>').append(
                    $('<p style="font-size:16px;" class="no_result">').html('No search results found for: <b>'+search_word+'</b>')
                ).append(
                    $('<p style="margin-top:-7px;" class="no_result">').html('<i>Please redefine your search. e.g. Accommodation Knysna</i>')
                )
            );   
        }        
    }
    
    function build_dropdown(data){
        
        $.each(data, function(key, value) {                           
                        
            results_list.append(
                $('<li>').append(
                    $('<p class="header">').html(value.name)
                ).append(
                    $('<p class="tag">').html(value.tags)
                ).click(function(){
                    search_box.val(value.name);
                    results_container.fadeOut();
                    window.open(value.url)                          
                })                                                      
            );
        });
    }
    
    function build_list(data){

        $.each(data, function(key, value) {                           
            
            
            if(value.rating == undefined){                
                var rating = '';
            }else{
                var rating = '/images/ratings/stars'+value.rating+'.gif';
            }            
                        
            results_list.append(
                $('<li class="list_item" >').append(
                    $('<p class="header">').html(value.name).append(
                        $('<img>').attr('src',rating).addClass('star')
                    )
                    
                ).append(                    
                    $('<p class="body">').html(value.description_formated)
                ).append(
                    $('<p class="tag">').html("Tags: "+value.tags)
                ).click(function(){                
                    window.open(value.url)                          
                })                                                      
            );
        });
    }
    
    function build_results(data){
        
        if (pathname == '/search'){
            build_list(data);
        }else{
            build_dropdown(data);
        }
        results_list.show();
        search_box.removeClass('loading')
    } 
    
    function getUrlVars() {
	var vars = {};
	var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) {
		vars[key] = value;
	});
	return vars;
    }
            
    if(keyword != undefined){    
        search_box.val(decodeURI(keyword));
        search_box.trigger('keyup');
    }
    
});
