/*
 company: wuwoo.com
 author:  wit
 mail:	  witsoft@gmail.com
 website: www.wuwoo.com, www.sinohope.com
*/

function WuwooInfoType( id ){
		this.id = id;
		this.idx = -1;
		this.fields_id = "";
		this.query_url = "";
		this.query_page = 0;
		this.query_extents = "";
		this.query_search_param = "";
		this.get_list_html = "";
		this.get_info_html = "";
		this.get_search_param = "";
		this.clean_search_param = "";
	};

var WIT = {
	APARTMENT : function()	{
		var t = new WuwooInfoType('apartment');
		t.idx=1;
		t.fields_id='data_container_list_fields_apartment';
		t.query_url='/datasource/getapartmentinfo.php';
		t.get_list_html = function(json){
			var	body = "<table width=100% cellspacing='0' cellpadding='0'><tr height=8><td width=8%></td><td width=36% align=left></td><td width=14% align=left></td><td width=10% align=left></td><td width=14%></td><td width=18%></td></tr>";
			for( i=0;i<json.length;i++ ){body += "<tr height=22 valign=top><td>&nbsp;<a href='javascript:Wuwoo.openInfoWindow("+json[i].pid+");'><img src='/images/markerffff2.gif' border=0></a></td><td width=200><a href='/apartment/info.php?lang="+Wuwoo.current_lang+"&infoids="+json[i].id+" ' target=_blank>"+json[i].placename+"</a></td><td>"+json[i].flat+"</td><td>"+json[i].area+"</td><td>"+json[i].priceRent+"</td><td>"+json[i].publishDate+"</td></tr>";}
			body+="</table>";
			return body;
		};
		t.get_info_html = function(pid,placename,infobody){
			var body = "<div id=data_infowindow_header style='border-bottom: 1px solid #D0D1C9;margin:0px 0px 10px 0px;'><strong><a href=/apartment/?lang="+Wuwoo.current_lang+"&pid="+pid+" target=_blank>"+placename+"</a></strong></div><div id=data_infowindow_body style='height:200px;width:300px;'>"+infobody+"</div><div id=infowindow_footer></div>";
			return body;
		};
		t.get_search_param = function(){
			t.query_search_param = "";
			if($("#data-search-toolbar-apartment-placename").val()!="")
				t.query_search_param += "&placename="+encodeURI($("#data-search-toolbar-apartment-placename").val());
			if($("#data-search-toolbar-apartment-flat").val()!="")
				t.query_search_param += "&flat="+$("#data-search-toolbar-apartment-flat").val();
			return t.query_search_param;
		};
		t.clean_search_param = function(){
			$("#data-search-toolbar-apartment-placename").val("");
			$("#data-search-toolbar-apartment-flat").val("");
		};
		return t;
	},
	SERVICEDAPARTMENT : function(){
		var t = new WuwooInfoType('servicedapartment');
		t.idx=2;
		t.query_url='/datasource/getservicedapartmentinfo.php';
		t.fields_id='data_container_list_fields_servicedapartment';
		t.get_list_html = function(json){
			var	body = "<table width=100% cellspacing='0' cellpadding='0'><tr height=8><td width=8%></td><td width=92% align=left></td></tr>";
			for( i=0;i<json.length;i++ ){body += "<tr height=22 valign=top><td>&nbsp;<a href='javascript:Wuwoo.openInfoWindow("+json[i].pid+");'><img src='/images/markerffff2.gif' border=0></a></td><td><a href='/servicedapartment/?lang="+Wuwoo.current_lang+"&pid="+json[i].pid+"' target=_blank>"+json[i].placename+"</a></td></tr>";}
			body+="</table>";
			return body;
		};
		t.get_info_html = function(pid,placename,infobody){
			var body = "<div id=infowindow_header><a href=/servicedapartment/?lang="+Wuwoo.current_lang+"&pid="+pid+" target=_blank>"+placename+"</a></div><table cellspacing=\"0\" cellpadding=\"0\" width=210 border=0><tr height=1 bgcolor=#D0D1C9><td></td></tr><tr height=6><td></td></tr><tr><td><div id=infowindow_body>"+infobody+"</div></td></tr></table>";
			return body;
		};
		t.get_search_param = function(){
			t.query_search_param = "";
			if($("#data-search-toolbar-servicedapartment-placename").val()!="")
				t.query_search_param = "&placename="+encodeURI($("#data-search-toolbar-servicedapartment-placename").val());
			return t.query_search_param;
		};
		t.clean_search_param = function(){$("#data-search-toolbar-servicedapartment-placename").val("");}
		return t;
	},
	VILLA : function() {
		var t = new WuwooInfoType('villa');
		t.idx=3;
		t.query_url='/datasource/getvillainfo.php';
		t.fields_id='data_container_list_fields_villa';
		t.get_list_html = function(json){
			var	body = "<table width=100% cellspacing='0' cellpadding='0'><tr height=8><td width=8%></td><td width=92% align=left></td></tr>";
			for( i=0;i<json.length;i++ ){body += "<tr height=22 valign=top><td>&nbsp;<a href='javascript:Wuwoo.openInfoWindow("+json[i].pid+");'><img src='/images/markerffff2.gif' border=0></a></td><td width=200><a href='/villa/?lang="+Wuwoo.current_lang+"&pid="+json[i].pid+"' target=_blank>"+json[i].placename+"</a></td></tr>";}
			body+="</table>";
			return body;
		};
		t.get_info_html = function(pid, placename, inforesult){
			var body = "<div id=infowindow_header><a href=/villa/?lang="+Wuwoo.current_lang+"&pid="+pid+" target=_blank>"+placename+"</a></div><table cellspacing=\"0\" cellpadding=\"0\" width=210 border=0><tr height=1 bgcolor=#D0D1C9><td></td></tr><tr height=6><td></td></tr><tr><td><div id=infowindow_body>"+inforesult+"</div></td></tr></table>";
			return body;
		};
		t.get_search_param = function(){
			t.query_search_param = "";
			if($("#data-search-toolbar-villa-placename").val()!="")
				t.query_search_param = "&placename="+encodeURI($("#data-search-toolbar-villa-placename").val());
			return t.query_search_param;
		};
		t.clean_search_param = function(){$("#data-search-toolbar-villa-placename").val("");};
		return t;
	},
	OFFICE : function()	{
		var t = new WuwooInfoType('office');
		t.idx=4;
		t.query_url='/datasource/getofficeinfo.php';
		t.fields_id='data_container_list_fields_office';
		t.get_list_html = function(json){
			var	body = "<table width=100% cellspacing='0' cellpadding='0'><tr height=8><td width=8%></td><td width=92% align=left></td></tr>";
			for( i=0;i<json.length;i++ ){body += "<tr height=22 valign=top><td>&nbsp;<a href='javascript:Wuwoo.openInfoWindow("+json[i].pid+");'><img src='/images/markerffff2.gif' border=0></a></td><td width=200><a href='/office/?lang="+Wuwoo.current_lang+"&pid="+json[i].pid+"' target=_blank>"+json[i].placename+"</a></td></tr>";}
			body+="</table>";
			return body;
		};
		t.get_info_html = function(pid, placename, inforesult){
			var body = "<div id=infowindow_header><a href=/office/?lang="+Wuwoo.current_lang+"&pid="+pid+" target=_blank>"+placename+"</a></div><table cellspacing=\"0\" cellpadding=\"0\" width=210 border=0><tr height=1 bgcolor=#D0D1C9><td></td></tr><tr height=6><td></td></tr><tr><td><div id=infowindow_body>"+inforesult+"</div></td></tr></table>";
			return body;
		};
		t.get_search_param = function(){
			t.query_search_param = "";
			if($("#data-search-toolbar-office-placename").val()!="")
				t.query_search_param = "&placename="+encodeURI($("#data-search-toolbar-office-placename").val());
			return t.query_search_param;
		};
		t.clean_search_param = function(){$("#data-search-toolbar-office-placename").val("");};
		return t;
	},
	HUGEPROPERTY : function()
	{
		var t = new WuwooInfoType('hugeproperty');
		t.idx=5;
		t.is_publish_info = true;
		return t;
	}
}

Wuwoo = {};
Wuwoo.map = null;
Wuwoo.map_layer = null;
Wuwoo.datatypes = [];
Wuwoo.current_lang="";
Wuwoo.current_datatype = null;
Wuwoo.current_extents = null;

var initMap = function(datatype,lang){
	if (GBrowserIsCompatible()) {
		Wuwoo.map = new GMap2(document.getElementById("map_container_view"));

		Wuwoo.map.setCenter(new GLatLng(39.917, 116.397), 12);
		Wuwoo.map.addControl(new GLargeMapControl());
		Wuwoo.map.addControl(new ExtMapTypeControl());
		Wuwoo.map.addControl(new GOverviewMapControl());
		Wuwoo.map.addControl(new GScaleControl());
		//Wuwoo.map.addControl(new GZoomControl(),new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(80,10)));
		var offset = 180;if(lang=="en")offset=180;
		Wuwoo.map.addControl(new GZoomControl({nOpacity:.2,sBorder:"2px solid red"},
			{sButtonHTML:"<img src='/images/sel.gif'/>",sButtonZoomingHTML:"<img src='/images/sel2.gif' />",oButtonStartingStyle:{width:'24px',height:'24px'}},
			{buttonClick:function(){},
			dragStart:function(){},
			dragging:function(x1,y1,x2,y2){},
			dragEnd:function(nw,ne,se,sw,nwpx,nepx,sepx,swpx){
				var ext = nw.lng() + ","+nw.lat() + ","+se.lng() + ","+se.lat();
			if(Wuwoo.current_datatype){Wuwoo.current_datatype.query_extents = ext;Wuwoo.sendQuery();}
			}}),new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(offset,7)));

		Wuwoo.map_layer = new MarkerLayer(Wuwoo.map);
		Wuwoo.map_layer.enable();

		$(window).unload(function (){$('.').unbind(); GUnload();});

		Wuwoo.map.enableContinuousZoom();
		Wuwoo.current_extents = Wuwoo.map.getBounds();

		GEvent.addListener(Wuwoo.map, "dragend", function(){Wuwoo.current_extents = Wuwoo.map.getBounds(); });

		Wuwoo.datatypes.push(new WIT.APARTMENT);
		Wuwoo.datatypes.push(new WIT.SERVICEDAPARTMENT);
		Wuwoo.datatypes.push(new WIT.OFFICE);
		Wuwoo.datatypes.push(new WIT.VILLA);
		Wuwoo.datatypes.push(new WIT.HUGEPROPERTY);

		Wuwoo.current_lang = lang;
		Wuwoo.setDataType(datatype);
		Wuwoo.getFlats();
	}
}

function contentResize(){
	var w = $(window);
	var W = w.width();
	var H = w.height();

	var offset = 11;
	var split_width=7;
	var header_container_width=W;
	var header_container_height=80;
	var footer_container_width=W;
	var footer_container_height=30;
	var data_container_width=393;
	var map_container_width=W-data_container_width-split_width;
	var map_container_height=H-header_container_height-footer_container_height-offset;
	var data_container_height=map_container_height;

	var offset = {'top': 40, 'left':header_container_width-160};
	$("#header_container_logo").css("position" ,"absolute").css(offset);
	offset = {'top': 6, 'left':header_container_width-100};
	$("#header_container_lang").css("position" ,"absolute").css(offset);
	offset = {'top': header_container_height+20, 'left':map_container_width+80};
	if(Wuwoo.current_lang=="cn")offset = {'top': header_container_height+20, 'left':map_container_width+130};
	$("#data_container_toolbar_publish").css("position" ,"absolute").css(offset);
	offset = {'top': header_container_height+20, 'left':map_container_width+80+$("#data_container_toolbar_publish").width()+6};
	if(Wuwoo.current_lang=="cn")offset = {'top': header_container_height+20, 'left':map_container_width+130+$("#data_container_toolbar_publish").width()+6};
	$("#data_container_toolbar_order").css("position" ,"absolute").css(offset);

	$("#header_container").css( {width: header_container_width, height: header_container_height} );
	$("#map_container").css( {width: map_container_width, height: map_container_height} );
	$("#map_container_view").css( {width: map_container_width, height: map_container_height} );
	$("#data_container").css( {width: data_container_width, height: data_container_height} );
	$("#footer_container").css( {width: footer_container_width, height: footer_container_height} );

	var data_container_toolbar_height=40;
	var data_container_list_height = data_container_height-data_container_toolbar_height;
	
	$("#data_container_toolbar").css( {width: data_container_width, height: data_container_toolbar_height} );
	$("#data_container_list").css( {width: data_container_width, height: data_container_list_height} );
	
	var data_container_list_fields_height=20;
	var data_container_list_pagebar_height=28;
	var data_container_list_resultlist_height=data_container_list_height-data_container_list_fields_height-data_container_list_pagebar_height;
	$("#data_container_list_fields").css( {width: data_container_width, height: data_container_list_fields_height} );
	$("#data_container_list_resultlist").css( {width: data_container_width, height: data_container_list_resultlist_height} );
	$("#data_container_list_pagebar").css( {width: data_container_width, height: data_container_list_pagebar_height} );
}
Wuwoo.setDataType = function(datatype){
	if(Wuwoo.current_datatype&&Wuwoo.current_datatype.id==datatype)return;
	for(i=0;i<Wuwoo.datatypes.length;i++){
		if(Wuwoo.datatypes[i].id==datatype){
			Wuwoo.current_datatype=Wuwoo.datatypes[i];
			$("#"+Wuwoo.datatypes[i].fields_id).show();
			Wuwoo.sendQuery();
		}else {$("#"+Wuwoo.datatypes[i].fields_id).hide();}
	}
};
Wuwoo.getFlats = function() {
	jQuery.getJSON(
		"/datasource/getflat.php?lang="+Wuwoo.current_lang,
		{},
		function(json){
			for( i=0;i<json.length;i++ ){
				$("<option value='"+json[i].id+"'>"+json[i].name+"</option>").appendTo("#data-search-toolbar-apartment-flat");
			}
		}
	)
}
Wuwoo.sendQuery = function(){
	if(Wuwoo.current_datatype==null)return;

	Wuwoo.map_layer.clearMarker();
	Wuwoo.map.closeInfoWindow();

	$("#data_container_list_resultlist").html("");$("#data_container_list_pagebar").html("");
	Wuwoo.addProgressIndicator($("#data_container_list_resultlist"));
	
	var queryURL = Wuwoo.current_datatype.query_url+"?lang="+Wuwoo.current_lang+"&db_next_page="+Wuwoo.current_datatype.query_page+"&extents="+Wuwoo.current_datatype.query_extents+Wuwoo.current_datatype.query_search_param;
	var returnData = "";var returnFooter = "";

	jQuery.ajax({
		type: "GET",
		url: queryURL,
		data: {},
		success: function(response) {
			eval(response);
			if(returnData!=""){
				json=JSON.parse(returnData);
				$("#data_container_list_resultlist").html(Wuwoo.current_datatype.get_list_html(json));
				$("#data_container_list_pagebar").html(returnFooter);
				Wuwoo.map_layer.parseData(json);
			}
			Wuwoo.removeProgressIndicator($("#data_container_list_resultlist"));
		},
		error: function(response) {
			Wuwoo.removeProgressIndicator($("#data_container_list_resultlist"));
			$("#data_container_list_resultlist").html("don't find infomation!");
		}
	});
};
Wuwoo.setPager = function(page) {
	if(Wuwoo.current_datatype){
		if(Wuwoo.current_datatype.query_page!=page){
			Wuwoo.current_datatype.query_page=page;
			Wuwoo.sendQuery();
		}
	}
};
Wuwoo.addProgressIndicator = function(node) {
    var $node = jQuery(node);
    if (!(jQuery(".progressindicator", node).length)) {
        $node.children().css("opacity", 0.5);
        $node.prepend(jQuery('<div class="progressindicator"><img src="/images/progress_indicator.gif"/></div>'));
    }
};
Wuwoo.removeProgressIndicator = function(node) {
    var $node = jQuery(node);
    $node.children().css("opacity", 1);
    jQuery(".progressindicator", node).remove();
};
Wuwoo.setCenter = function() {
	Wuwoo.map.setCenter(new GLatLng("+json[i].geoy+","+json[i].geox+"));
}
Wuwoo.publish = function(){
	window.open("/offer.php?datatype="+Wuwoo.current_datatype.id+"&lang="+Wuwoo.current_lang);
}
Wuwoo.order = function(dataid) {
	window.open("/order.php?datatype="+Wuwoo.current_datatype.id+"&dataid="+dataid+"&lang="+Wuwoo.current_lang);
}
Wuwoo.openInfoWindow = function(pid) {
	marker = Wuwoo.map_layer.getMarker(pid);if(marker==null)return;
	Wuwoo.map.setCenter(marker.getPoint(), Wuwoo.map.getZoom());
	if(marker.html==null)	{
		var queryURL = "/datasource/getplaceinfo.php?datatype="+Wuwoo.current_datatype.id+"&pid=" + escape(pid)+"&lang="+Wuwoo.current_lang;
		jQuery.ajax({
			type: "GET",
			url: queryURL,
			data: {},
			success: function(response) {
				marker.html=Wuwoo.current_datatype.get_info_html(pid,marker.placename,response);
				Wuwoo.removeProgressIndicator($("#data_infowindow_body"));
				marker.openInfoWindowHtml(marker.html);
				Wuwoo.addProgressIndicator($("#data_infowindow_body"));
			},
			error: function(response) {
				Wuwoo.removeProgressIndicator($("#data_infowindow_body"));
			}
		});
	}
	else
		marker.openInfoWindowHtml(marker.html);
}
Wuwoo.search = function() {
	var search_param = Wuwoo.current_datatype.get_search_param();
	if(search_param!="") {
		Wuwoo.sendQuery();
		Wuwoo.current_datatype.clean_search_param();
	}
}
Wuwoo.cleanSearch = function() {
	if(Wuwoo.current_datatype.query_extents!=""||Wuwoo.current_datatype.query_search_param!="")	{
		Wuwoo.current_datatype.query_extents="";Wuwoo.current_datatype.query_search_param="";
		Wuwoo.sendQuery();
	}
}
function setLang(lang){if( Wuwoo.current_lang!=lang ){document.location="/?lang="+lang+"&datatype="+Wuwoo.current_datatype.id+"&page="+Wuwoo.current_datatype.query_page;}}
function setOrder(id){window.open("/order.php?datatype="+Wuwoo.current_datatype.id+"&id="+id+"&lang="+Wuwoo.current_lang);}

Wuwoo.ResetPlacenamePosition = function(maptype){
	Wuwoo.map.closeInfoWindow();
	Wuwoo.map_layer.updateMarkerPositions(maptype);
}