var Data={Init:function(){var query=''+document.location;query=query.substring((query.indexOf('?'))+1);if(query.length<1)return;var keypairs=query.split('&');var tmp,keyName,keyValue;for(var i=0;i<keypairs.length;i++){tmp=keypairs[i].split('=');if(tmp.length>=2){keyName=tmp[0];keyValue=tmp[1];keyValue=unescape(keyValue);};this[keyName]=keyValue;}}}
var SSS='<div class="hotelsearchresultswrapper fix"><div class="coltwo alpha"><a href="/hotel-details.cfm?pcode={0}"><img src="{2}" alt="{1}" width="100%"/></a></div><div class="colfour property"><p><a href="/hotel-details.cfm?pcode={0}"><span class="hotelname">{1}</span><span class="meta">{4}</span></a><br/>{3}</p><input type="submit" value="Hotel Details" onclick="location.href=\'/hotel-details.cfm?pcode={0}\'"/><input type="submit" value="Check Availability" onclick="location.href=\'https://reservation.magnusonhotels.com/bbe/page2.aspx?pcode={0}\'"/></div><div class="coltwo omega"><ul>{5}</ul></div></div>';
var results=[];
var hotelCord = [];
var mapDetails = [];
$(document).ready(function(){
	Data.Init();
	if(Data['arrivalDate']!=null){
		var chkIn = Data['arrivalDate'];
		var dateParts = chkIn.split("/");
		var mm = dateParts[0];
		var dd = dateParts[1];
		var yyyy = dateParts[2];
		$(".date").val(mm + '/' + dd + '/' + yyyy);
	};
	if(Data['numberOfNights']!=null){
		var nght=Data['numberOfNights'];
		$('#numberofnights').val(nght);
	};
	if(Data['numberOfRooms']!=null){
		var rm=Data['numberOfRooms'];
		$('#numberofrooms').val(rm);
	};
	if(Data['numberOfAdults']!=null){
		var adults=Data['numberOfAdults'];
		$('#numberofguests').val(adults);
	};
	if(Data['numberOfChildren']!=null){
		var child=Data['numberOfChildren'];
		$('#numberofchildren').val(child);
	};
	if(Data['q']!=null){
		var q=Data['q'];
		q=q.replace(/\+/g, ' ');
		$('#searchFor').val(q);
		$('#searchcriteria').val(q);
		DoSearch(q);
	};
	$('#searchFor').focus();
});
function DoSearch(q){
	$.ajax({type:'POST',url:'xml/search.cfm',data:$('#fm').serialize(),
		success:function(x){
			results=[];
			$(x).find('.hotelsearchresultswrapper').each(function(){
				results.push($(this));
				hotelCord.push({HotelID:$(this).attr('hotelID'),htlName:$(this).attr('htlName'),Lat:$(this).attr('lat'),Lng:$(this).attr('long')});
			});
			$(x).find('.colthreehalfgtr').each(function(){
				mapDetails.push($(this));
			});
			ShowResults(0);		
			initialize(0);
			$('#txSearch').html(''+results.length+' listings for "'+q+'"');
		}
	});   
}
function ShowResults(pg){
	if(results.length==0){
		$('#dvSearch').html('Sorry, we could not find any matching properties.');return;
	};
	if(pg == "all"){
		for(var i=0;i<=results.length;i++){
			$('#dvSearch').append(results[i]);
		};
		return;
	};
	pg=Math.abs(Math.round(pg));
	var top=Math.ceil(results.length/4)-1;
	if(pg>top)pg=top;
	var i1=4*(pg);i2=4*(pg+1)-1;
	if(i2>=results.length)i2=results.length-1;

	$('#dvSearch').empty();
	for(var i=i1;i<=i2;i++){
		$('#dvSearch').append(results[i]);
	};
	BuildPagers(pg);
}
function BuildPagers(pag){	
	$('#dvSearchPager').empty();
	if(results.length>4){
		var SSS='<li><a href="#" class="searchpager" rel="{1}">{0}</a></li>';
		var SSS2='<li><a href="#" class="pagernext" rel="{1}">{0}</a></li>';
		var top=Math.ceil(results.length/4);
		var tmp='<li><a href="#" class="pagernext" rel="all">View All</a></li>';
		if(pag >=5 && pag+4>=top){
			tmp+=Utils.Format(SSS2,'&laquo;',pag-4);
			for(var i=top-4;i<=top;i++){
				tmp+=Utils.Format(SSS,i,i-1);
			};
		}else if (pag >=5){
			var pgr = 10;
			if(((pag+1)%5)==0) pgr = pag+1;
			if(((pag+2)%5) == 0) pgr = pag+2;
			if(((pag+3)%5) == 0) pgr = pag+3;
			if(((pag+4)%5) == 0) pgr = pag+4;
			if(((pag+5)%5) == 0) pgr = pag+5;
			tmp+=Utils.Format(SSS2,'&laquo;',pgr-10);
			for(var i= pgr-4;i<=pgr;i++){
				tmp+=Utils.Format(SSS,i,i-1);
			};
			tmp+=Utils.Format(SSS2,'&raquo;',pgr);
		}else{		
			for(var i=1;i<=5;i++){
				tmp+=Utils.Format(SSS,i,i-1);
			};
			tmp+=Utils.Format(SSS2,'&raquo;',5);
		};
		$('#dvSearchPager').html(tmp);
		$('.searchpager').click(function(){
			ShowResults($(this).attr('rel'));
			return false;
		});
		$('.pagernext').click(function(){
			ShowResults($(this).attr('rel'));
			return false;
		});
		$('.searchpager').removeClass('pageselected');
		if(pag == 0)
			$('.searchpager:first').addClass('pageselected');	
		else if(pag>=1 && pag<5)
			$('.searchpager:eq('+(pag)+')').addClass('pageselected');
		else if (pag >=5 && pag< top-4)
			$('.searchpager:eq('+(pag-(pgr-5))+')').addClass('pageselected');
    	else if (pag >=top-4 && pag<= top)
			$('.searchpager:eq('+(pag-(top-5))+')').addClass('pageselected');
	}
}

var MagMap={
	states:[],cities:[],hotels:[],
	MRKS1:null,MRKS2:null,MRKS3:null,CN:'',ST:'',CI:'',
	LV:1,Z1:3,Z2:6,Z3:9,Z4:11,$dv:null,
	Init:function(sMap){
		this.states=WSt;
		this.hotels=WPr;
		$(sMap).append('<div id="dvInfoBox"></div>');
		this.$dv=$('#dvInfoBox');
		this.Show1();
	},
	ShowBox:function(tx,mrk){
		var pos=DvMap.fromLatLngToContainerPixel(mrk.getLatLng());
		this.$dv.show().html(tx).css({left:pos.x+14+'px',top:pos.y-23+'px'});
	},
	HideBox:function(){
		this.$dv.hide();
	},
	Show1:function(mrk){
		this.HideBox();
		DvMap.clearOverlays();
		if(this.MRKS1==null)this.MRKS1=this.getMarkers();
		for(var i=0;i<this.MRKS1.length;i++){
			DvMap.addOverlay(this.MRKS1[i]);
		};
	},
	GetHotelText:function(id){
		var SSS='<a href="{3}" class="dvPropName">{0}</a><div class="dvPropAddr">{1}</div><div class="dvPropDesc"><img src="{4}" class="imgPropDesc" />{2}</div><div class="dvPropLinks"><a class="buPropResv" href="{3}">Reserve</a><a class="buPropView" href="{3}">View Hotel</a></div>';
		var h=this.getHotel(id);
		return this.format(SSS,h.Name,this.getCityLabel(h.CityID),h.Desc,'http://www.google.com','images/map/hotel.jpg');
	},
	OpenInfoWindow:function(mrk,id){
		$.get('xml/gethotel.cfm?hotelID='+id, function(data){
			mrk.openExtInfoWindow(DvMap,'magnusInfo',data,{beakOffset:1});
		});
	},
	getHotel:function(id){
		for(var i=0;i<this.hotels.length;i++){
			if(this.hotels[i].HotelID==id)return this.hotels[i];
		};
		return null;
	},
	getMarkers:function(type){
		var mrks=[];
			for(var i=0;i<this.hotels.length;i++){
				var tmp=this.hotels[i];
				var obj={lat:tmp.Lat,lng:tmp.Lng,txt:tmp.Name+'<br/>',id:tmp.HotelID,icn:'hotel'};
				mrks.push($.googleMap.marker(obj));
			};
		return mrks;
	},
	format:function(){
		if(arguments.length==0)return '';
		var s=arguments[0];
		for(var i=1;i<arguments.length;i++){
			var r=new RegExp('\\{'+(i-1)+'\\}','gm');
			s=s.replace(r,arguments[i]);
		};
		return s;
	}
};
var DvMap;
function initialize(){
	var myLat=hotelCord[0].Lat,myLng=hotelCord[0].Lng;
	$('#dvMap').googleMap(myLat,myLng,11,{controls:['GLargeMapControl3D','GMapTypeControl'],markers:null});
	DvMap=$.googleMap.maps['dvMap'];
	DvMap.addMapType(G_PHYSICAL_MAP);
	DvMap.removeMapType(G_HYBRID_MAP);
	DvMap.setMapType(G_PHYSICAL_MAP);
	MagMap.Init('#dvMap');	
};

