$(document).ready(function() {  
    if (jQuery.fn.placeholder){
        $("#find-bar input[type=text]").placeholder();
	    $("#find-bar-small input[type=text]").placeholder();		
	    $("#find_it").click(function(){
	        goToSearchResults();
	        return false;
	    });
	}
	if ($.browser.msie) {
		// IE doesn't support the nth-child pseudo-selector
		$("#panes ul.pane-content li:nth-child(odd)").addClass("odd");
		
	}
	
	if (jQuery.fn.checkbox){
        $('#sidebar input[type=checkbox]').checkbox({
		        cls: 'jquery-checkbox',  /* checkbox  */
		        empty: 'jquery-checkbox/empty.png'  /* checkbox  */
        });
    }
    
    
   $("#find-bar input[type=text]").keydown(function(event) {
      if (event.keyCode == '13') {
         event.preventDefault();
         goToSearchResults();
       }  
    });

});

function goToSearchResults(){
    var findA=$("#find-a");
    var near=$("#near");
    if(findA.length&&near.length){
        findA.removeClass("error");
        near.removeClass("error");
        var valid=true;
        var findAVal=findA.val();
        if(findAVal==findA.attr("placeholder")){
            findAVal="";
        }
        else if(findAVal.length&&!/^[0-9a-zA-Z\s\-]+$/.test(findAVal)){                
             valid= false;
             findA.addClass("error");
        }

        var nearVal=near.val();
        if(nearVal==near.attr("placeholder")){
            nearVal="";
        }
        else if(nearVal.length&&!/^[0-9a-zA-Z\s\-]+$/.test(nearVal)){                
            valid= false;
             near.addClass("error");
        }
        if(valid&&(nearVal.length||findAVal.length)){
            window.location = "/LightSwitch/directory.aspx?category="+encodeURIComponent(findAVal)+"&near="+encodeURIComponent(nearVal);
        }
        
    }
}

function S4() {
   return (((1+Math.random())*0x10000)|0).toString(16).substring(1);
}
function guid() {
   return (S4()+S4()+"-"+S4()+"-"+S4()+"-"+S4()+"-"+S4()+S4()+S4());
}
var map;
var geocoder;

 function initializeMap() {
    try{
        if (GBrowserIsCompatible()) {
            map = new GMap2(document.getElementById("map_canvas"));
            map.setCenter(new GLatLng(34, 0), 1);
            geocoder = new GClientGeocoder();
        }
    }
    catch(err){
        map=null;
        geocoder=null;
    }
 } 
 function showLocation(address) {  
    if(geocoder){
        if(address&&address.length){ 
            geocoder.getLocations(address, addAddressToMap);
        }
    }
 } 
 function addAddressToMap(response) {
    if(map){
        map.clearOverlays();
        if (!response || response.Status.code != 200) {
            alert("Sorry, we were unable to geocode that address");
        } 
        else {
             place = response.Placemark[0];
             point = new GLatLng(place.Point.coordinates[1],
             place.Point.coordinates[0]);
             marker = new GMarker(point);
             map.addOverlay(marker);
             
             map.setCenter(point, 12);
             map.setUIToDefault();
         }
     }
 } 
 
 function createAccordion(accordion){
    if(accordion.length){
        $('.accordion-header .sign-icon',accordion).click(function() {
        var lnk=$(this).toggleClass("sign-icon-expanded");
        $(".accordion-header a.sign-icon-expanded",accordion).not(lnk).removeClass("sign-icon-expanded");
        var closest=lnk.closest('.accordion-header');
        if(closest.length){
            var content=closest.next('.accordion-content');  
            
            var options={};
            if(content.is(':visible')){
                options.toHide=content;
                options.toShow=$('.accordion-content:visible',accordion).not(content);
            }
            else{
                options.toShow=content;
                options.toHide= $('.accordion-content:visible',accordion).not(content);               
            }            
            slide(options);
        }
		return false;
	});
    }
}


function slide(options) {
	options = $.extend({
		easing: "swing",
		duration: 300
	}, options);
	if ( !options.toHide.size() ) {
		options.toShow.animate({height: "show"}, options);
		return;
	}
	if ( !options.toShow.size() ) {
		options.toHide.animate({height: "hide"}, options);
		return;
	}
	var overflow = options.toShow.css('overflow'),
		percentDone,
		showProps = {},
		hideProps = {},
		fxAttrs = [ "height", "paddingTop", "paddingBottom" ],
		originalWidth;
	// fix width before calculating height of hidden element
	var s = options.toShow;
	originalWidth = s[0].style.width;
	s.width( parseInt(s.parent().width(),10) - parseInt(s.css("paddingLeft"),10) - parseInt(s.css("paddingRight"),10) - (parseInt(s.css("borderLeftWidth"),10) || 0) - (parseInt(s.css("borderRightWidth"),10) || 0) );
	
	$.each(fxAttrs, function(i, prop) {
		hideProps[prop] = 'hide';
		
		var parts = ('' + $.css(options.toShow[0], prop)).match(/^([\d+-.]+)(.*)$/);
		showProps[prop] = {
			value: parts[1],
			unit: parts[2] || 'px'
		};
	});
	options.toShow.css({ height: 0, overflow: 'hidden' }).show();
	options.toHide.filter(":hidden").each(options.complete).end().filter(":visible").animate(hideProps,{
		step: function(now, settings) {
			// only calculate the percent when animating height
			// IE gets very inconsistent results when animating elements
			// with small values, which is common for padding
			if (settings.prop == 'height') {
				percentDone = (settings.now - settings.start) / (settings.end - settings.start);
			}
			
			options.toShow[0].style[settings.prop] =
				(percentDone * showProps[settings.prop].value) + showProps[settings.prop].unit;
		},
		duration: options.duration,
		easing: options.easing,
		complete: function() {
			if ( !options.autoHeight ) {
				options.toShow.css("height", "");
			}
			options.toShow.css("width", originalWidth);
			options.toShow.css({overflow: overflow});
		}
	});
}