$(document).ready(function(){
    documentInit(); 
});

function documentInit(){
    initSearchBar();
    initNav();
    $(".hideByDefault").hide();
    $(".showLevel1Services").bind('click',function(){
        $("#servicesLevel1").toggle('slow');
        return false;
    });
    $(".showLevel1ServicesB2B").bind('click',function(){
        $("#servicesB2BLevel1").toggle('slow');
        return false;
    });
    $(".showLevel1Products").bind('click',function(){
        $("#productsLevel1").toggle('slow');
        return false;
    });
    $(".showLevel1Brands").bind('click',function(){
        $("#brandsLevel1").toggle('slow');
        return false;
    });
    $(".showLevel1Chains").bind('click',function(){
        $("#chainsLevel1").toggle('slow');
        return false;
    });

    checkHash();
    showRelevantDivs();
};

function initNav(){
    $(".navlink").click(function(){
        var pageNumber = getPageNumberByNavHref(this.href);
        load(pageNumber);
        return false;
    });
}

function initSearchBar(){    
   $("#zapperForm").submit(function(){ search(); return false; });
      
   $(".searchQRY[type=checkbox]").bind('change',function () {
		 search(); 
         //return false;
   });
   
   $(".zapperLink").bind('click',function () { 
       $(this).parent().prev().attr('checked', (($(this).parent().prev().attr('checked') == '')? 'checked' : '')  );
       $(this).parent().prev().trigger('change');
   	 //idt = ($(this).parent().attr('for')); 
     //alert($('#' +idt).parent().html());
     //$("#" + idt).trigger('click');
   	 //document.getElementById(idt).click(); 
   	    return false;  
   });

}


function checkHash(){
    if (window.location.hash){
        var hash = Base64.decode(window.location.hash);
        hash = hash.substring(1);
        searchArray = hash.split('&');
        var selectedPage = 1;
        for(i=0;i< searchArray.length;i++){
            if (searchArray[i] != ''){
                parts = searchArray[i].split('=');
                var key = parts[0];
                var value = parts[1];
                if (key == 'sp') selectedPage = value;
                if (key.substring(key.length -2) == '[]'){
                    // checkbox array
                    key = key.substring(0,key.length-2);
                    
                    if(key=='city') {
											key += '[]';
                    }
                    
                    $(".searchQRY[name='"+key+"']").each(function(){
                    	if($(this).attr('type') == 'text') {
                    		$(this).val(value);
                    	} else {
                        if ($(this).val() == value) $(this).attr('checked', true);
											}
                    });
                } else {
                    // input text
                    $(".searchQRY[name='"+key+"']").val(value);
                }
            }
        }
        load(selectedPage);
    }
}

function showRelevantDivs() {
	// kijkt of er een checkbox in een hidden div geselecteerd is, zo ja, dan wordt de div wel weergegeven 
  $(".hideByDefault").each(function(){
      var allUnChecked = true;
      $(this).find("input[type='checkbox']").each(function(){
          if ($(this).is(':checked') == true) allUnChecked = false;
          
      });
      //alert(allUnChecked);
      if (allUnChecked == false) $(this).show();
  });
}


// end init

function getPageNumberByNavHref(href){
    return href.substr(href.indexOf('nav=')+4);
}

//

function buildSearchQuery(){
    var searchQRY = '';
    $(".searchQRY").each(function(){
        searchPart = '';
        switch($(this).attr('type')){
            case 'checkbox':
                if ($(this).is(':checked')){
                    searchPart = '&' +  $(this).attr('name') + '[]=' + $(this).val();
                    $("#is"+$(this).val()).addClass('active');
                } else {
                    $("#is"+$(this).val()).removeClass('active');
                }
            break;
            default:
            		if($(this).val() != '') {
                		searchPart = '&' + $(this).attr('name') + '=' + $(this).val();
								}
        }
        searchQRY += searchPart;
    });    
    return searchQRY;
}

function load(pageNumber){
    var searchQRY = '&sp=' + pageNumber + buildSearchQuery(pageNumber);
    if (window.location.hash != Base64.encode(searchQRY)) window.location.hash = Base64.encode(searchQRY);
    $("#overview").fadeTo(250, 0.1, function () {
        $.get('/directory/companyresults/?requestType=ajax'+ searchQRY,function(HTML){
            $("#overview").html(HTML);
            $("#overview").fadeTo(500, 1, function () {});
            // reload nav
            var selectedPage = $("input[name='selectedPage']").val();
            var maxItemsOnPage = $("input[name='maxItemsOnPage']").val();
            var totalItems = $("input[name='totalItems']").val();
            var heading1 = $("input[name='heading1']").val();   
    
            $.get('/directory/loadNav/?requestType=ajax&sp='+selectedPage + '&maxItemsOnPage='+maxItemsOnPage + '&totalItems='+totalItems,function(navHTML){
                $(".navigation").html(navHTML);
                $("h1").html(heading1);
                initNav();
            });
            // end reload nav
        });
    });  
   $("html").scrollTop(0); 
 
}  

function search(){
    load('1');
}




