/*
(c) 2008 SonnigeToskana.de

developed by
** Juergen Vogel **
* Webentwicklung *
* http://derjoerchen.de *

All rights reserved.
*/

var st = {};


st.nav = {
	
	objects: [],
	regions: [],
	markers: [],
	gMarker: [],
	textes: [],
	current_region: '',
	desc_template: '',
	top_template:'',
	
	init: function(pRegion) {
		
		
		if (GBrowserIsCompatible()) {	
			
			this.current_region='';
			
			var myCor=Array( 43.405047, 10.95336);		
			
			if(!this.map)
				this.map = new GMap2(document.getElementById("nav_map"));	
			
			this.pos = new GLatLng( myCor[0], myCor[1] );			
			this.map.setCenter(this.pos, 8);		
			
			var myMarker= new GMarker(this.pos);	
						
		    GEvent.addListener(myMarker, "click", function() {
         		myMarker.openInfoWindowHtml($('navigator_startinfo').innerHTML);
        	});
			
			this.map.addOverlay(myMarker);
			
			GEvent.trigger(myMarker, "click");	
		}
		
		this.desc_template=$('navigator_desc').innerHTML;
		this.top_template=$('navigator_top').innerHTML;
		

	},
	
	addObject: function( pId, pName, pRegion, pL, pB, pCity, pImg, pPersonsMin, pPersonsMax, pT, pPrice ) {
		

		this.objects[this.objects.length]=Array(pId, pName, pRegion, pL, pB, pCity, pImg, pPersonsMin, pPersonsMax, pT, pPrice, 0 );

				Event.observe($('nav_i_'+pId), 'click', function(e) { 							
							var myRegion=Event.element(e).lang; 
							if(myRegion!=st.nav.current_region)
								st.nav.filterRegion( myRegion, 0 );
					 } );		
	},
	
	changePos: function( pRegion ) {
		
			
			this.regions['r4_it_arezzo'] = Array( 43.471359,11.750565 );
			this.regions['r4_it_florenz'] = Array( 43.770846,11.255493 );
			this.regions['r4_it_grosseto'] = Array( 42.97652068,11.1648559 );
			this.regions['r4_it_livorno'] = Array( 43.551876,10.308011 );
			this.regions['r4_it_lucca'] = Array( 44.02639639,10.3958129 );
			this.regions['r4_it_pisa'] = Array(  43.6062506,10.50018310 );
			this.regions['r4_it_pistoia'] = Array( 43.842946,10.509109 );
			this.regions['r4_it_siena'] = Array( 43.3791013,11.43676757 );
			
			this.current_region=pRegion;
		
			this.map.clearOverlays();
			this.markers=new Object();

			if( this.regions[pRegion] ) {
				var myCor= this.regions[pRegion];
				this.pos = new GLatLng( myCor[0], myCor[1] );
				
				this.map.setZoom(9);
				this.map.panTo(this.pos);	
								
				for(var i=0;i<this.objects.length;i++) {
					
					if( this.objects[i][1]==pRegion ) {
						
						if(this.objects[i][3]!='' && this.objects[i][4]!='')
							this.addMarker(	this.objects[i][3], this.objects[i][4], i );
					}
				}
				
			}else{

				this.init();	
			}
		
	},	
	
	addMarker: function(pB,pL,pId) {
		
		
		if(this.objects[pId][11]==0) {
			
			if( !this.markers[pL] ) {
				
				
				this.gMarker[pL] = new GMarker( new GLatLng(pL, pB) );
				this.map.addOverlay( this.gMarker[pL] );	
							
				this.textes[pL]=new Object();
				this.textes[pL]['html']= this.top_template.replace("$city", this.objects[pId][5]);	
				
				this.gMarker['region']= this.objects[pId][1] ;
				
				this.setWindows(pL, pId, pL);						
			} 
					
			this.textes[pL]['html']+= this.desc_template.replace("$img", this.objects[pId][6] ).replace("$name",this.objects[pId][2] ).replace("$hausid",this.objects[pId][0]).replace("$hausid2",this.objects[pId][0]).replace("$personsMin",this.objects[pId][7]).replace("$personsMax",this.objects[pId][8]).replace("$priceMin",this.objects[pId][10]);
			
			
			Element.observe( $('nav_i_'+this.objects[pId][0]), 'mouseover', function(e) { 
															if( st.nav.gMarker['region'] == st.nav.current_region)					 
																GEvent.trigger( st.nav.gMarker[pL] , "click");
															} );
	
			this.markers[pL]=pId;
		}
	},
	
	setWindows: function(pMarker, pId, pL) {
		
		
		GEvent.addListener(this.gMarker[pL], "click", function() {

				st.nav.gMarker[pL].openInfoWindowHtml( "<div class='nav-info-outer'>"+st.nav.textes[pL]['html']+"</div>" )
		
		});	
		
		
	},
	
	filterProp: function() {
		
		
		for(var i=0;i<this.objects.length;i++) {
			
			var myPersons=this.objects[i][8] < $F('filter_persons') ;
			//var myPool=this.elements[i][2] < $F('filter_pool') ;
			var myType=this.objects[i][9] != $F('filter_villa') && this.objects[i][9] != $F('filter_appartement') ;			
			
			
			if( myPersons || myType ) {
				
				this.objects[i][11] = 1;
				Element.hide($('nav_i_'+this.objects[i][0]));
				var markEle=$('nav_g_'+this.objects[i][0]);
				if( markEle ) 
					Element.hide(markEle);
			}else {
				
				this.objects[i][11] = 0;
				Element.show($('nav_i_'+this.objects[i][0]));
				var markEle=$('nav_g_'+this.objects[i][0]);
				if( markEle )
					Element.show(markEle);		
			
			}
		}
		
		this.filterRegion( $F('region_select'), 0 );
		
	},
	
	filterRegion: function(pEle, pIdent) {
		
		if(pIdent==0)
			var myRegion=pEle;
		else
			var myRegion=$F(pEle);
			
		var mainOpt=$('region_select');		
		for(var i=0;i<mainOpt.options.length;i++) {			
			if(mainOpt.options[i].value==myRegion)
				mainOpt.options[i].selected=true;
		}		
		
		var elements=$('nav_results').getElementsByTagName('div');
		
		for(var i=0; i<elements.length; i++) {
		
			if(elements[i].id!='nav_r_'+myRegion && myRegion !='')	{
				Element.hide(elements[i]);
			}else {
				Element.show(elements[i]);
				this.changePos(myRegion);	
			}
		}		
	}
}


st.filter = {
	
	elements: [],
	myActiveData:[],
	
	
	register: function(pId, pPersons, pPool, pType, pBedrooms, pBathrooms, pAirCon, pWasher, pWashingMachine, pSauna, pDsl, pBreakfast, pHalfBoard, pFullBoard) {

		this.elements[this.elements.length]=Array(pId, pPersons, pPool, pType, pBedrooms, pBathrooms, pAirCon, pWasher, pWashingMachine, pSauna, pDsl, pBreakfast, pHalfBoard, pFullBoard);

		Event.observe(window, 'load', st.filter.sendData);
	},
	
	filter: function() {
		
		for(var i=0; i<this.elements.length;i++) {
			
			var ele=$('filter_e_'+this.elements[i][0]);
			var eleH=$('filter_h_'+this.elements[i][0]);
			
			// filters
			var myPersons=this.elements[i][1] < $F('filter_persons') ;
			var myPool=this.elements[i][2] < $F('filter_pool') ;
			var myType=this.elements[i][3] != $F('filter_villa') && this.elements[i][3] != $F('filter_appartement') ;
			var myBedrooms=this.elements[i][4] < $F('filter_bedrooms') ;
			var myBathrooms=this.elements[i][5] < $F('filter_bathrooms') ;
			var myAirCon=this.elements[i][6] < $F('filter_aircon') ;

			var myWasher=this.elements[i][7] < $F('filter_washer') ;
			var myWashingMachine=this.elements[i][8] < $F('filter_washing_machine') ;
			var mySauna=this.elements[i][9] < $F('filter_sauna') ;
			var myDsl=this.elements[i][10] < $F('filter_dsl') ;
			
			var myBreakfast=this.elements[i][11] < $F('filter_breakfast') ;
			var myHalfBoard=this.elements[i][12] < $F('filter_half_board') ;
			var myFullBoard=this.elements[i][13] < $F('filter_full_board') ;
			
			if( myPersons || myPool || myType || myBedrooms || myBathrooms || myAirCon || myWasher || myWashingMachine || mySauna || myDsl || myBreakfast || myHalfBoard || myFullBoard) {			
				Element.hide(ele);
				if(eleH) Element.hide(eleH);
				this.elements[i]['display']=0;
			}else{				
				Element.show(ele);
				if(eleH) Element.show(eleH);
				this.elements[i]['display']=1;
				var ii=1;
			}
	
		}
		if(ii==1) {
			Element.hide($('filter_no_results'));
			this.sendData();	
		}else 
			Element.show($('filter_no_results'));
		
	},
	
	sendData: function() {
		
		st.filter.myActiveData=new Object();
		for(var i=0;i<st.filter.elements.length;i++) {
			
			if(st.filter.elements[i]['display']!=0) {
				
				st.filter.myActiveData[i]=st.filter.elements[i][0];	
			}
		}
		
		new Ajax.Request( '/ajax.php', { method:'post', parameters:'type=navigation&elements='+ Object.toJSON(st.filter.myActiveData)+'&referer='+location.href } );
			
	},
	
	country: function(ele) {
		
		if(ele.checked==true) {

			var element=document.getElementsByName('region[]');
			
			for(var i=0;i<element.length;i++) {
				
				element[i].checked=true;
			}
		}else {
			
			var element=document.getElementsByName('region[]');
			
			for(var i=0;i<element.length;i++) {
				
				element[i].checked=false;
			}			
			
		}
		
		this.region();
		
	},
	
	toggle: function(ele) {
		
		
		Element.toggle($('filter_r_'+ele.value));	
		
	},
	
	region: function() {
		
		var element=document.getElementsByName('region[]');
		for(var i=0;i<element.length;i++) {
			
			if($('filter_r_'+element[i].value))
				if(element[i].checked==true) {
						Element.show($('filter_r_'+element[i].value));
						//this.elements[i]['display']=1;		
						var ii=1;
				}else{
						Element.hide($('filter_r_'+element[i].value));
						//this.elements[i]['display']=0;
				}

		}
		
		if(ii==1) {
			Element.hide($('filter_no_results'));
			this.sendData();			
		}else
			Element.show($('filter_no_results'));
		
	},
	
	setRegion: function(pRegion) {
		
		var element=document.getElementsByName('region[]');
		for(var i=0;i<element.length;i++) {
			
			if(element[i].value=="txt_"+pRegion) 
				element[i].checked=true;
			else
				element[i].checked=false;	
		}
		this.region();
	}
	
}

st.maps = function(pH, pL) {
	
	if (GBrowserIsCompatible()) {	
	
        var map = new GMap2(document.getElementById("map"));	
		var pos = new GLatLng(pL, pH)

		map.setCenter(pos, 9);		
		
		var myMarker= new GMarker(pos);	
		map.addOverlay(myMarker);
	     var marker = new GMarker(pos);
		 
         GEvent.addListener(marker, "click", function() {
           var html = $('maps_text1').innerHTML.replace("$[housedesc]", $('housedesc').innerHTML);
           marker.openInfoWindowHtml(html);
         });
         map.addOverlay(marker);
        GEvent.trigger(marker, "click");	   
	   
        var bottomRight = new GControlPosition(G_ANCHOR_BOTTOM_RIGHT, new GSize(10,10));
        GEvent.addListener(map, "dblclick", function() {
          map.removeControl(mapTypeControl);
          map.addControl(new GMapTypeControl(), bottomRight);
        });
        map.addControl(new GSmallMapControl());
	}
}




// old functions

function translationPopUp(wintype,myHeight)
{
	if (!myHeight) {
	  myHeight=255;
	}

  var nwl = ((screen.width/2)-(620/2));
  var nwh = ((screen.height/2)-(myHeight/2));
  popUp=window.open(wintype, 'Translation', 'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=yes,width=620,height='+myHeight+',left='+nwl+',top='+nwh+''); 
  popUp.window.focus(); 
}

function propertyGroupPopUp(wintype,myHeight)
{
	if (!myHeight) {
	  myHeight=255;
	}

  var nwl = ((screen.width/2)-(620/2));
  var nwh = ((screen.height/2)-(myHeight/2));
  popUp=window.open(wintype, 'PropertyGroup', 'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=620,height='+myHeight+',left='+nwl+',top='+nwh+''); 
  popUp.window.focus(); 
}


function showDetails(id) {
	var obj = "";

		// Check browser compatibility
		if(document.getElementById)
			obj = document.getElementById(id);
		else if(document.all)
			obj = document.all[id];
		else if(document.layers)
			obj = document.layers[id];
		else
			return 1;

		if (!obj) {
			return 1;
		}
		else if (obj.style)
		{
			obj.style.display = ( obj.style.display != "none" ) ? "none" : "";
		}
		else
		{
			obj.visibility = "show";
		}
}


function setObjType(psID){
	
}

function showHidden(id) {
	var obj = "";

		// Check browser compatibility
		if(document.getElementById)
			obj = document.getElementById(id);
		else if(document.all)
			obj = document.all[id];
		else if(document.layers)
			obj = document.layers[id];
		else
			return 1;

		if (!obj) {
			return 1;
		}
		else if (obj.style)
		{
			obj.style.display = ( obj.style.display != "none" ) ? "none" : "";
		}
		else
		{
			obj.visibility = "show";
		}
	}
