// Page specific JavaScript

var queryString = encodeURI(document.location.href).replace(/^[^¥?]+¥??/,'');
var params = parseQuery(queryString);
//alert(params['prop_type']);


function parseQuery(query) {
	var Params = {};
	if (!query) {return Params;}// return empty object
	var Pairs = query.split(/[;&]/);
	for (var i=0; i<Pairs.length; i++) {
		var KeyVal = Pairs[i].split('=');
		if (! KeyVal || KeyVal.length != 2) {continue;}
		var key = unescape(KeyVal[0]);
		var val = unescape(KeyVal[1]);
		val = val.replace(/¥+/g, ' ');
		Params[key] = val;
	}
	return Params;
};


$(function() {

/**
 * @desc Enter description here...
 *
 */
	// get the form's id.	   
	var frm_rr = $("#RefineResultsForm");
	var frm_sp = $("#SearchPadForm");
	
	_initCheckboxes();

	function _initCheckboxes() {
		var sel_prop_type = frm_sp.find("#FormCid").val();
		if(sel_prop_type == '') {
			$(".checkbox").each(function(i){
				++i;
				$("#FormCid" + i).attr('checked', 'checked');
			});
		}
	};
/**
 * @desc Enter description here...
 *
 */
	var currentFocus = null;
	$(':text').focus( function() {
		currentFocus = this;
		$(currentFocus).css("background", "#FFFAC1");
	}).blur( function() {
		$(currentFocus).css("background", "#ffffff");
		currentFocus = null;
	}); 
/**
 * @desc Try to bring the values in the Search Pad and submit the main form.
 *
 */
	frm_sp.find(':button').click(function(){
		var a = ['FormQ', 'FormPriceLow', 'FormPriceHigh', 'FormNumOfRooms', 'FormRoomLayout'];
		$.each(a, function(i) {
			frm_rr.find("#"+a[i]).val(frm_sp.find("#"+a[i]).val());
		});
		// submit
		frm_rr.submit();
	});
/**
 * @desc Try to bring the selected value in the Search Pad.
 * 
 */
 	frm_sp.find("#FormCid").change(function(){
		
		// try to bring the selected value in the Search Pad.
		var sel_prop_type = frm_sp.find("#FormCid").val();
		if(sel_prop_type == '') {
			_initCheckboxes();
		} else {
			$(".checkbox").each(function(i){
				++i;
				$("#FormCid" + i).attr('checked', '');
			});
			frm_rr.find("#FormCid" + sel_prop_type).attr('checked', 'checked');
		}
 	});
/**
 * @desc Enter description here...
 *
 */
	$("#sortByDateLnk").click(function(){
		frm_rr.find("#FormSort").val('name_kana');
		current_direction = frm_rr.find("#FormDirection").val();
		directon = (current_direction == 'asc') ? 'desc' : 'asc'; 
		frm_rr.find("#FormDirection").val(directon);
		frm_rr.submit();
		return false;
	});
/**
 * @desc Enter description here...
 *
 */
	$("#sortByPriceLnk").click(function(){
		frm_rr.find("#FormSort").val('price');
		current_direction = frm_rr.find("#FormDirection").val();
		directon = (current_direction == 'asc') ? 'desc' : 'asc'; 
		frm_rr.find("#FormDirection").val(directon);
		frm_rr.submit();
		return false;
	});
/**
 * @desc Try to bring the selected value of NumOfItems and submit the main form.
 *
 */
	$("#NumOfItems").change(function(){
		$("#FormN").val($("#NumOfItems").val());
		frm_rr.submit();
	});
/**
 * @desc Show the options if it is enabled, else hide it.
 * 
 */
 	var options_cookie = getCookie('biz.options.enable');

	if(options_cookie == null) {
		$(".options").show();
	} else if (options_cookie == 0) {
		$(".options").hide();
		$("#showSearchOptions").show();
	} else {
		$(".options").show();
	}
	
	$("#showSearchOptions").children('a').click(function(){
		$(this).parent('div').hide();
		$(".options").show();
		$("#hideSearchOptions").show();
		date=new Date;
		date.setMonth(date.getMonth()+3);
		setCookie('biz.options.enable', 1, date);
	});		   
	$("#hideSearchOptions").children('a').click(function(){
		$(this).parent('div').hide();
		$(".options").hide();
		$("#showSearchOptions").show();
		//delCookie('biz.options.enable');
		
		// empty selected values
		frm_sp.find("#FormNumOfRooms").val('');
		frm_sp.find("#FormRoomLayout option").attr('selected', '');
		frm_sp.find("#FormRoomLayout").hide();		

		date=new Date;
		date.setMonth(date.getMonth()+3);
		setCookie('biz.options.enable', 0, date);
	});
});

/**
 * Google Maps
 *
 */
var map;
var gGeo;
var apikey = 'ABQIAAAA7TWIqiwj1mKi9xrVruRP-RSFNoZaEohrif3PXbFqDEaOoQuvQRQsOtzjBI6YOCeLsuaBuuExvpFS8Q';

$(function() {

	var _wrapper = $("#MdMap");
	var _map = $("#map");
	var _mapsShowLnk = $("#mapsShowLnk");
	var _mapsHideLnk = $("#mapsHideLnk");
	var _mapSizeLnk = $("#mapSizeLnk");
	var _expandSizeTxt = $("#expandSizeTxt");
	var _reduceSizeTxt = $("#reduceSizeTxt");
		   
	if(Cookie.isActive() == true) {
		
		loadScript();
		if(Cookie.isExpanded() == true) {
			_mapSizeLnk.text(_reduceSizeTxt.text()).removeClass("expand").addClass("reduce");
			_map.css('height', '500px');
			Cookie.expand();
		}
		Cookie.activate();
		_wrapper.show();	
	} else {
		_wrapper.hide();
		_mapsShowLnk.show();
		Cookie.deactivate();
	};
	
	_mapsShowLnk.click(function(){
		_wrapper.show();
		_map.show();
		loadScript();
		_mapsShowLnk.hide();
		Cookie.activate();
	});
	
	_mapsHideLnk.click(function(){
		_map.slideUp();
		_wrapper.slideUp();
		_mapsShowLnk.show();
		Cookie.deactivate();
	});
		
	_mapSizeLnk.click(function(){
		loadScript();						
		if(_mapSizeLnk.hasClass("expand")) {
			_mapSizeLnk.text(_reduceSizeTxt.text()).removeClass("expand").addClass("reduce");
			_map.css('height', '500px');
			Cookie.expand();
			
		} else if(_mapSizeLnk.hasClass("reduce")) {
			_mapSizeLnk.text(_expandSizeTxt.text()).removeClass("reduce").addClass("expand");
			_map.css('height', '250px');
			Cookie.reduce();
		}
	});

});

var Cookie = {
	isActive: function() {
		return getCookie('biz.map.enable');
	},
	isExpanded: function() {
		return getCookie('biz.map.expanded');
	},
	activate: function() {
		date=new Date;
		date.setMonth(date.getMonth()+3);
		setCookie('biz.map.enable', 1, date);
	},
	deactivate: function() {
		delCookie('biz.map.enable');
	},
	expand: function() {
		date=new Date;
		date.setMonth(date.getMonth()+3);
		setCookie('biz.map.expanded', 1, date);
	},
	reduce: function() {
		delCookie('biz.map.expanded');
	}
};

function makeMap(){
	
	$("#MdSearchResultItemsDefault dl dd").each(function(i){

		// get elements to create markers. 
		var name = $("#map_member-name-"+i).text();
		var location = $("#map_location-"+i).text();
		var bldg_str_addr = $("#map_bldg_str_addr-"+i).text();
		var phone = $("#map_phone-"+i).text();
		var username = $("#map_username-"+i).text();
		//var location = document.getElementById("spot-location-"+i).value;

		addMarker(location, bldg_str_addr, name, phone, username, i);
   });
	
   function addMarker(location, bldg_str_addr, name, phone, username, idx){ 

	   gGeo.getLatLng(location , 
		   function (point){ 
			   if (point) {
				   
				   //alert(point);
				   // creates a new marker manager that controlls visibility of markers for the specified map. 
				   var marker = new GMarker(point); 
				   GEvent.addListener(marker, "click", function() { 
						var txt=
							"<div style='width:220px;'>"
							  + "<div align='left'>"
							  + "<a href='/members/view/" + username + "/hl:" + generic.params.hl+ "'>" 
							  + "<h3 style='line-height:1.7em;'>" + name + "</h3>" 
							  + "</a>" 
							  + "<b>住所：</b>" + location + bldg_str_addr + "<br />" 
							  + "<b>電話：</b>" + phone
							  + "</div>"
							 + "</div>";
					  marker.openInfoWindowHtml(txt); 
				   }); 
				   // Adds an overlay to the map and fires the addoverlay event.
				   map.addOverlay(marker); 

				   // if the first marker, sets the map view to the given center and 
				   // triggers the event on page load.
				   /*if(idx==1){
					  map.setCenter(point);
					  GEvent.trigger(marker,"click");
				   }*/
			   } 
		   } 
	   )
   }
};

function loadScript() {
	var script = document.createElement("script");
	script.type = "text/javascript";
	script.src = 'http://maps.google.com/maps?file=api&v=2.x&key='+apikey+'&async=2&callback=loadMap';
	document.body.appendChild(script);
};

function loadMap(){
	map = new GMap2(document.getElementById("map"));
	map.setCenter(new GLatLng(35.368895, 132.791748), 10);
	//map.addControl(new GLargeMapControl());
	map.addControl(new GSmallMapControl());
	map.addControl(new GMapTypeControl()); 				
	gGeo = new GClientGeocoder();
	makeMap();

};

function refresh(){ // currently not used
	map.clearOverlays();
	makeMap();
};

function setCookie(name, value, expires, path, domain, secure) {
	document.cookie= name + "=" + escape(value) +
	((expires) ? "; expires=" + expires.toGMTString() : "") +
    ((path) ? "; path=" + path : "") +
    ((domain) ? "; domain=" + domain : "") +
	((secure) ? "; secure" : "");
};

function getCookie(name) {
	var dc = document.cookie;
	var prefix = name + "=";
	var begin = dc.indexOf("; " + prefix);
	if (begin == -1) {
	begin = dc.indexOf(prefix);
	if (begin != 0) return null;
	} else {
		begin += 2;
	}
	var end = document.cookie.indexOf(";", begin);
	if (end == -1) {
		end = dc.length;
	}
	return unescape(dc.substring(begin + prefix.length, end));
};

function delCookie(name, path, domain) {
	if (getCookie(name)) {
		document.cookie = name+"="+((path)?";path="+path:"")+((domain)?";domain="+ domain:"")+";expires=Thu, 01-Jan-1970 00:00:01 GMT";
	}
};
