

/*************************************************
 * Setup Google Map
 *************************************************/
var map;
var mgr;
var points = new Array(2);

function initialize(){
    if (GBrowserIsCompatible()) {
        var mapOptions = {
            googleBarOptions: {
                style: "new"
            }
        }
        map = new GMap2(document.getElementById("map"), mapOptions);
		map.setUIToDefault();
		map.enableScrollWheelZoom(); 
        map.addControl(new GMapTypeControl());
        map.setMapType(G_PHYSICAL_MAP);
        map.addMapType(G_PHYSICAL_MAP);
        map.removeMapType(G_HYBRID_MAP);
        
        map.setCenter(new GLatLng(52.000, -2.000), 6);
       
		var customIcon = new GIcon(G_DEFAULT_ICON);
		customIcon.image = "../theme/images/map-pin.png";
		customIcon.iconSize = new GSize(16, 16);
		customIcon.shadowSize = new GSize(0, 0);
		customIcon.iconAnchor = new GPoint(8, 8);


		markerOptions = { icon:customIcon };
		

        var mgrOptions = {
            borderPadding: 50,
            maxZoom: 15,
            trackMarkers: true
        };
        mgr = new MarkerManager(map, mgrOptions);
    }
}

$(document).ready(function(){
    /*************************************************
     * Add event listeners
     *************************************************/
    //Bind search form to ajax call
    var options2 = {
        dataType: 'json',
        beforeSubmit: removeDefaultSearchParams,
        success: showSearchResults
    };
	
    $('#FindInnForm').ajaxForm(options2);
	
	
	
	if ($.getURLParam("do_search")=="true") {
		
	  if($.getURLParam("filter_name") != "Pub+name"){
	  		$("#filter_name ").val($.getURLParam("filter_name"));
	  }
	  if($.getURLParam("filter_city") != "City%2FTown%2FCounty"){
		  $("#filter_city ").val($.getURLParam("filter_city"));
	  }
	  if($.getURLParam("filter_region") != ""){
		  $("#filter_region ").val($.getURLParam("filter_region"));
	  }	
	  
	 var submitBtnTO = setTimeout(submitBtn, 3000);
	 
	}
	
	function submitBtn(){
    	$("#FindInnForm").submit();
		clearTimeout(submitBtnTO);
	}
    //Bind close event to pop up
   /* $('#MapPopups').click(function(){
									  alert("HELLO");
        //$('.map-popup').fadeOut("fast");
       // return false;
    });
    */
    
    //Bind scroll to Search result
    $('#scrollit-next').click(function(){
        var height = $('#SearchResult').height();
        $('#SearchResult').animate({
            scrollTop: '+=' + height + 'px'
        }, 'slow');
        return false;
    });
    $('#scrollit-prev').click(function(){
        var height = $('#SearchResult').height();
        $('#SearchResult').animate({
            scrollTop: '-=' + height + 'px'
        }, 'slow');
        return false;
    });
	
	//Bind scroll to Search result
    $('#scrollit1-next').click(function(){
        var height = $('#SearchResult').height();
        $('#SearchResult').animate({
            scrollTop: '+=' + height + 'px'
        }, 'slow');
        return false;
    });
    $('#scrollit1-prev').click(function(){
        var height = $('#SearchResult').height();
        $('#SearchResult').animate({
            scrollTop: '-=' + height + 'px'
        }, 'slow');
        return false;
    });
    
    
    //Setup tabs between map and search result
    var tabContainers = $('div.tabs > div');
    tabContainers.hide().filter(':first').show();
    $('div.tabs ul.tabNavigation a').click(function(){
        tabContainers.hide();
        tabContainers.filter(this.hash).show();
        $('div.tabs ul.tabNavigation a').removeClass('selected');
        $(this).addClass('selected');
        return false;
    }).filter(':first').click();
    
    
    /************************************************
     * Functions
     ************************************************/
	
	

	
	if($.cookie('searched') == "true" && $.getURLParam("do_search") != "true"){
		$('#picBeforeSearch').hide();
		var doSearchTO = setTimeout(doSearch, 3000);
	}
	//alert("Searched::" + $.cookie('searched'));
	
	function doSearch(){
		$("#filter_name").val($.cookie('pubCookie'));
		$("#filter_region").val($.cookie('regionCookie'));
		$("#filter_city").val( $.cookie('cityCookie'));
		$("#FindInnForm").submit();	
		clearTimeout(doSearchTO);
		
		$("#filter_name").val("Pub name");
		$("#filter_region").val("");
		$("#filter_city").val("City/Town/County");
		
	//	alert("Do Search");
	}
	
	
    function removeDefaultSearchParams(formData, jqForm, options){
		$("#SearchProgressIndicator").html('<img src="theme/images/ajax-loader-bar.gif">');
    	$("#SearchProgressIndicator").show();//alert('x');
		
		
		
		
        for (i = 0; i < formData.length; i++) {
            if (formData[i].value == "Pub name") {
                formData[i].value = "";
            }
            else 
                if (formData[i].value == "City/Town/County") {
                    formData[i].value = "";
                }
        }
		
		
		 if($.getURLParam("do_search") != "true"){
		
				
			var expDate = new Date();
            expDate.setTime(expDate.getTime() + (15 * 60 * 1000));


			var pubValue = $("#filter_name").val();
			var regionValue = $("#filter_region").val();
			var cityValue = $("#filter_city").val();
	
			$.cookie('pubCookie', pubValue, { expires: expDate });
			$.cookie('regionCookie', regionValue, { expires: expDate });
			$.cookie('cityCookie', cityValue, { expires: expDate });
			$.cookie('searched', "true", { expires: expDate });
		 }

        return true;
    }
    
  

//GK******************************************** browser detection *******************************

//initialization, browser, os detection
var d, dom, nu='', brow='', ie, ie4, ie5, ie5x, ie6, ie7;
var ns4, moz, moz_rv_sub, release_date='', moz_brow, moz_brow_nu='', moz_brow_nu_sub='', rv_full=''; 
var mac, win, old, lin, ie5mac, ie5xwin, konq, saf, op, op4, op5, op6, op7;

d=document;
n=navigator;
nav=n.appVersion;
nan=n.appName;
nua=n.userAgent;
old=(nav.substring(0,1)<4);
mac=(nav.indexOf('Mac')!=-1);
win=( ( (nav.indexOf('Win')!=-1) || (nav.indexOf('NT')!=-1) ) && !mac)?true:false;
lin=(nua.indexOf('Linux')!=-1);
// begin primary dom/ns4 test
// this is the most important test on the page
if ( !document.layers )
{
	dom = ( d.getElementById ) ? d.getElementById : false;
}
else { 
	dom = false; 
	ns4 = true;// only netscape 4 supports document layers
}
// end main dom/ns4 test

op=(nua.indexOf('Opera')!=-1);
saf=(nua.indexOf('Safari')!=-1);
konq=(!saf && (nua.indexOf('Konqueror')!=-1) ) ? true : false;
moz=( (!saf && !konq ) && ( nua.indexOf('Gecko')!=-1 ) ) ? true : false;
ie=((nua.indexOf('MSIE')!=-1)&&!op);
if (op)
{
	str_pos=nua.indexOf('Opera');
	nu=nua.substr((str_pos+6),4);
	brow = 'Opera';
}
else if (saf)
{
	str_pos=nua.indexOf('Safari');
	nu=nua.substr((str_pos+7),5);
	brow = 'Safari';
}
else if (konq)
{
	str_pos=nua.indexOf('Konqueror');
	nu=nua.substr((str_pos+10),3);
	brow = 'Konqueror';
}
// this part is complicated a bit, don't mess with it unless you understand regular expressions
// note, for most comparisons that are practical, compare the 3 digit rv nubmer, that is the output
// placed into 'nu'.
else if (moz)
{
	// regular expression pattern that will be used to extract main version/rv numbers
	pattern = /[(); \n]/;
	// moz type array, add to this if you need to
	moz_types = new Array( 'Firebird', 'Phoenix', 'Firefox', 'Iceweasel', 'Galeon', 'K-Meleon', 'Camino', 'Epiphany', 'Netscape6', 'Netscape', 'MultiZilla', 'Gecko Debian', 'rv' );
	rv_pos = nua.indexOf( 'rv' );// find 'rv' position in nua string
	rv_full = nua.substr( rv_pos + 3, 6 );// cut out maximum size it can be, eg: 1.8a2, 1.0.0 etc
	// search for occurance of any of characters in pattern, if found get position of that character
	rv_slice = ( rv_full.search( pattern ) != -1 ) ? rv_full.search( pattern ) : '';
	//check to make sure there was a result, if not do  nothing
	// otherwise slice out the part that you want if there is a slice position
	( rv_slice ) ? rv_full = rv_full.substr( 0, rv_slice ) : '';
	// this is the working id number, 3 digits, you'd use this for 
	// number comparison, like if nu >= 1.3 do something
	nu = rv_full.substr( 0, 3 );
	for (i=0; i < moz_types.length; i++)
	{
		if ( nua.indexOf( moz_types[i]) !=-1 )
		{
			moz_brow = moz_types[i];
			break;
		}
	}
	if ( moz_brow )// if it was found in the array
	{
		str_pos=nua.indexOf(moz_brow);// extract string position
		moz_brow_nu = nua.substr( (str_pos + moz_brow.length + 1 ) ,3);// slice out working number, 3 digit
		// if you got it, use it, else use nu
		moz_brow_nu = ( isNaN( moz_brow_nu ) ) ? moz_brow_nu = nu: moz_brow_nu;
		moz_brow_nu_sub = nua.substr( (str_pos + moz_brow.length + 1 ), 8);
		// this makes sure that it's only the id number
		sub_nu_slice = ( moz_brow_nu_sub.search( pattern ) != -1 ) ? moz_brow_nu_sub.search( pattern ) : '';
		//check to make sure there was a result, if not do  nothing
		( sub_nu_slice ) ? moz_brow_nu_sub = moz_brow_nu_sub.substr( 0, sub_nu_slice ) : '';
	}
	if ( moz_brow == 'Netscape6' )
	{
		moz_brow = 'Netscape';
	}
	else if ( moz_brow == 'rv' || moz_brow == '' )// default value if no other gecko name fit
	{
		moz_brow = 'Mozilla';
	} 
	if ( !moz_brow_nu )// use rv number if nothing else is available
	{
		moz_brow_nu = nu;
		moz_brow_nu_sub = nu;
	}
	if (n.productSub)
	{
		release_date = n.productSub;
	}
}
else if (ie)
{
	str_pos=nua.indexOf('MSIE');
	nu=nua.substr((str_pos+5),3);
	brow = 'Microsoft Internet Explorer';
}
// default to navigator app name
else 
{
	brow = nan;
}
op5=(op&&(nu.substring(0,1)==5));
op6=(op&&(nu.substring(0,1)==6));
op7=(op&&(nu.substring(0,1)==7));
op8=(op&&(nu.substring(0,1)==8));
op9=(op&&(nu.substring(0,1)==9));
ie4=(ie&&!dom);
ie5=(ie&&(nu.substring(0,1)==5));
ie6=(ie&&(nu.substring(0,1)==6));
ie7=(ie&&(nu.substring(0,1)==7));
// default to get number from navigator app version.
if(!nu) 
{
	nu = nav.substring(0,1);
}
/*ie5x tests only for functionavlity. dom or ie5x would be default settings. 
Opera will register true in this test if set to identify as IE 5*/
ie5x=(d.all&&dom);
ie5mac=(mac&&ie5);
ie5xwin=(win&&ie5x);

// ********************************************************








  //Show search result in search result list and pin point each pub/inn on map
    function showSearchResults(data){
		
		
		
    	$('#picBeforeSearch').hide();
    	
		//Stop search indicator
		$("#SearchProgressIndicator").hide();
		$("#SearchProgressIndicator").html("");
		
        //reset
        $("#SearchResult").empty();
		mgr.clearMarkers();
		 
		$("#SearchResult-wrapper").fadeIn();
		
		//If no result
		if(data.length == 0 || (data.length == 2 && Number(data[0]) != Number.NaN)){
			$("#SearchResult").append('<center><img src="theme/images/title-therearezero.png" alt="No result"></center>');
			
			$("#SearchLeftTop").hide();
			$("#SearchRightTop").hide();
			$("#SearchInfoTextTop").hide();
			
			$("#SearchLeftBottom").hide();
			$("#SearchRightBottom").hide();
			$("#SearchInfoTextBottom").hide();
		
			return true;
		} else {
			$("#SearchLeftTop").show();
			$("#SearchRightTop").show();
			$("#SearchInfoTextTop").show();
			
			$("#SearchLeftBottom").show();
			$("#SearchRightBottom").show();
			$("#SearchInfoTextBottom").show();
		}
		
        //Put all Pub/Inns in search result tab
       
        var allResultCounter = '';
        var startValue = '';
		var desc = '';
		var sdesc = '';

        $.each(data, function(i, item){
        	
			
			if (item.description!=null&&item.description.length>0) {
				desc=item.description.length<150?item.description:item.description.substring(0,150);
				sdesc=item.description.length<100?item.description:item.description.substring(0,100);
			} else if (item.toSeeNearby!=null&&item.toSeeNearby.length>0) {
				desc=item.toSeeNearby.length<150?item.toSeeNearby:item.toSeeNearby.substring(0,150);
				sdesc=item.toSeeNearby.length<100?item.toSeeNearby:item.toSeeNearby.substring(0,100);
			} else {
				desc = '...';
				sdesc = '...';
			}

        	if (i == 0 && Number(item) != Number.NaN) {
        		allResultCounter = item;
        	} else if (i == 1 && Number(item) != Number.NaN) {
        		startValue = item;
        	} else
        	{
	            var html = "";
	            html += '<div class="resultLine">';
		            html += '<div class="result-image hover"><a id="popup-inn-link-' + item.innID + '" href="visit/' + item.innID + '/" title="' + item.name + '">'
					if(item.image_filename != ""){
						html +='<img id="PubPhoto" src="photos/thumbnail_3_' + item.image_filename + '">';
					} else {
						html +='<img id="PubPhoto" src="theme/images/no-pub-image.jpg">';
					}
					html +='<img src="theme/images/inn-pub-image-overlay.png" />';
					html += '<span class="rating">' + createRatingDiv(item) + '</span></a></div>';
					html += '<div class="resultContent">';
			            html += '<span class="result-name hover"><a id="popup-inn-link-' + item.innID + '" href="visit/' + item.innID + '/" title="' + item.name + '">' + item.name + '</a></span><br />';
						
			            /*html += '<div class="result-region">' + item.region;
			            if ((item.region != null && item.region.length > 0) && (item.city != null && item.city.length > 0)) {
			            	html += ', ';
			            }
			            html += item.city +'</div>';*/
						html += '<div class="result-region">' + item.city + '</div>' + '<span class="result-description">' + desc + '...</span>';
			            html += '<div class="result-amenities">' + createAmenitiesDiv(item) + '</div>';
		            html += '</div>';
				html += '</div>';			
				
	            $("#SearchResult").append(html);
				
				/*$('.hover').hover(function(){
					 $(this).animate({opacity: .8}, "fast");
	               // $(this).addClass('pretty-hover');
	            }, function(){
					 $(this).animate({opacity: 1}, "fast");
	               // $(this).removeClass('pretty-hover');
	            });*/
	            
	            //Prepare map pop up for pub/inn
				

	            var popuphtml = '<div class="map-popup" id="MapPopUP-' + item.innID + '">';
	            popuphtml += '<div class="content">';
	            popuphtml += '<div class="result-name"><a href="visit/' + item.innID + '/" title="' + item.name + '">' + item.name + '</a></div>';
				popuphtml += '<div class="clear"></div>';
	            popuphtml += '<div class="result-image"><a href="visit/' + item.innID + '/" title="' + item.name + '">';
				if(item.image_filename != ""){
					popuphtml += '<img src="photos/thumbnail_3_' + item.image_filename + '">';
				} else {
					popuphtml += '<img src="theme/images/no-pub-image.jpg">';
				}
				popuphtml += '<img src="theme/images/inn-pub-image-overlay.png" /></a>';
	            popuphtml += '<span class="rating">' + createRatingDiv(item) + '</span></div>';
				popuphtml += '<div class="result-description">' + sdesc + '... <a href="visit/' + item.innID + '/">More</a></div>';
	            popuphtml += '<div class="result-amenities" style="width: 145px !important;">' +  createAmenitiesDiv(item) + '</div>';
				popuphtml += '<div class="clear"></div>';
	            popuphtml += '</div>';
				popuphtml += '<div id="Close-popup-' + item.innID + '" class="close-link"><a href="" title="Close"></a></div>';
	            $("#MapPopups").append(popuphtml);
	            
	            //Bind close event to pop up
	            $('#Close-popup-' + item.innID + ' a').click(function(){
	                $("#MapPopUP-" + item.innID).fadeOut("fast");
	                return false;
	            });
	            
				
				/*$('#MapPopUP-' + item.innID).bind('drag',function( event ){
		
					$( this ).css({
						top: event.offsetY,
						left: event.offsetX
					});
				});*/
				
				//Pin Pub/Inn in map
				z = 1;
				if ((item.googleLat != null || item.googleLat != "") && (item.googleLng != null || item.googleLng != "")) {
					var markerPos = new GLatLng(item.googleLat, item.googleLng);
					var marker = new GMarker(markerPos, markerOptions);
					map.addOverlay(marker);
					
					points[i-2] = markerPos;
					GEvent.addListener(marker, "click", function(){
						$("#MapPopUP-" + item.innID).fadeIn("fast");
						$("#MapPopUP-" + item.innID).css({"z-index": ++z});
						
					});
					mgr.addMarker(marker, 3);
				}
	           // bindPopupLink('#popup-inn-link-' + item.innID);
	           // bindPopupLink('#popup-inn-link-2-' + item.innID);
        	}
			
			
			
        });
		
		//END EACH//
		fitMap();
		
        var maxnum;
        if (Number(allResultCounter) - (Number(startValue) + 20) < 0) {
        	maxnum = allResultCounter;
        	$("#SearchRightTop").hide();
        	$("#SearchRightBottom").hide();
        } else {
        	maxnum = Number(startValue) + 20;
        	$("#SearchRightTop").show();
        	$("#SearchRightBottom").show();
        }
        var infotext = (Number(startValue)+1)+'-'+maxnum+' of '+allResultCounter+' results';

        if (Number(startValue) > 0) {
        	$("#SearchLeftTop").show(); 
        	$("#SearchLeftBottom").show(); 
        } else {
        	$("#SearchLeftTop").hide();
        	$("#SearchLeftBottom").hide();
        }

        $("#SearchInfoTextTop").text(infotext);
        $("#SearchInfoTextBottom").text(infotext);
		
        return true;
    }
    
	
	
	function fitMap() {
		
		var bounds = new GLatLngBounds();
		for (var i=0; i< (points.length - 1); i++) {
			bounds.extend(points[i]);
		}
		
		map.setZoom(map.getBoundsZoomLevel(bounds));
		map.setCenter(bounds.getCenter());
		
	}


    function createRatingDiv(item){
		if(item.rating_count == 0) return "";
		var r = 0;
		r = Math.round(item.rating/item.rating_count);
		
		var div = "";
        div += '<img src="theme/images/blank.gif" border="0" width="'+((5-r)*9)+'" height="3" alt="" />';
        //div += '<img src="theme/images/blank.gif" border="0" width="50" height="3" alt="" />';
        
        for (i = 0; i < r; i++) {
            div = div + '<img src="theme/images/star-red.png" border="0" width="18" height="18" alt="" />';
        }
        return div
    }


    function createAmenitiesDiv(item){
        var div = "";
		
		if ( ie6 ) { 
		
        if (item.hasCaskAles == "on") {
            div += '<img src="theme/images/icon-cask-ales.gif">';
        }
        if (item.hasGoodFood == "on") {
            div += '<img src="theme/images/icon-good-food.gif">';
        }
        if (item.isFamilyFriendly == "on") {
            div += '<img src="theme/images/icon-family-friendly-invert.gif">';
        }
        if (item.hasAccessibility == "on") {
            div += '<img src="theme/images/icon-accessiblilty-invert.gif">';
        }
        if (item.hasPublicTransport == "on") {
            div += '<img src="theme/images/icon-public-transport-invert.gif">';
        }
        if (item.isPetsWelcome == "on") {
            div += '<img src="theme/images/icon-pets-welcome.gif">';
        }
        if (item.hasStunningViews == "on") {
            div += '<img src="theme/images/icon-stunning-views.gif">';
        }
        if (item.hasWalking == "on") {
            div += '<img src="theme/images/icon-walking-invert.gif">';
        }
        if (item.hasCycling == "on") {
            div += '<img src="theme/images/icon-cycling-invert.gif">';
        }		
		
		
		
		} 
		
		
		
		else { 
		
	        if (item.hasCaskAles == "on") {
	            div += '<img src="theme/images/icon-cask-ales.png">';
	        }
	        if (item.hasGoodFood == "on") {
	            div += '<img src="theme/images/icon-good-food.png">';
	        }
	        if (item.isFamilyFriendly == "on") {
	            div += '<img src="theme/images/icon-family-friendly-invert.png">';
	        }
	        if (item.hasAccessibility == "on") {
	            div += '<img src="theme/images/icon-accessiblilty-invert.png">';
	        }
	        if (item.hasPublicTransport == "on") {
	            div += '<img src="theme/images/icon-public-transport-invert.png">';
	        }
	        if (item.isPetsWelcome == "on") {
	            div += '<img src="theme/images/icon-pets-welcome.png">';
	        }
	        if (item.hasStunningViews == "on") {
	            div += '<img src="theme/images/icon-stunning-views.png">';
	        }
	        if (item.hasWalking == "on") {
	            div += '<img src="theme/images/icon-walking-invert.png">';
	        }
	        if (item.hasCycling == "on") {
	            div += '<img src="theme/images/icon-cycling-invert.png">';
	        }
		
		}
		
        return div;
    }
	
	
    
    //add listener to each link for showing Pub/Inn
    function bindPopupLink(selector){
        $(selector).click(function(){
            var inn_url = $(this).attr("href");
            $("#InnPopUP .content").html('<div class="ajaxloader"><img src="theme/images/ajax-loader.gif"></div>');
            $("#InnPopUP").fadeIn("fast", function(){
                $("#InnPopUP .content").load(inn_url + " #InnDetails");
            });
            return false;
        });
    }
});
