var timerlen = 5;
var slideAniLen = 250;

var timerID = new Array();
var startTime = new Array();
var obj = new Array();
var endHeight = new Array();
var moving = new Array();
var dir = new Array();
var curContent = "";

function slidedown(objname) {
		if (curContent != "") {
			li_id		= "li_" + curContent;
			link_id		= "a_" + curContent;
			document.getElementById(li_id).className	= "tabelement";
			document.getElementById(link_id).href	= "javascript:slidedown('" + curContent + "');";
			document.getElementById('prop_content').style.display = "none";
		}
		
        if(moving[objname])
                return;

		if (curContent == objname)
			return;		// cannot slide down something that is already visible
  
        moving[objname] = true;
        dir[objname] = "down";
		
		xmlHttp		= GetXmlHttpObject();
		if (xmlHttp == null) {
			alert ("Browser does not support HTTP Request");
			return;
		}
		
		curContent	= objname;
		
		li_id			= "li_" + curContent;		
		document.getElementById(li_id).className	= "d_id";
		
		var url;
		if (objname	== "desc")
			url		= "/level3/description.php";
		else if (objname == "basic")
			url		= "/level3/basic.php";
		else if (objname == "building")
			url		= "/level3/building.php";
		else if (objname == "plot")
			url		= "/level3/plot.php";
		else if (objname == "ext")
			url		= "/level3/ext.php";
		else if (objname == "location")
			url		= "/level3/location.php";
		else if (objname == "video")
			url		= "/level3/video.php";
			
		url			= url + "?id=" + prop_id;
		url			= url + "&sid=" + Math.random();

		xmlHttp.onreadystatechange	= contentLoaded;
		xmlHttp.open("GET", url, true);
		xmlHttp.send(null);
}

function slideup(objname){
        if(moving[objname])
                return;

        if (curContent != objname)
                return; // cannot slide up something that is already hidden

        moving[objname] = true;
        dir[objname] 	= "up";
		
		li_id			= "li_" + curContent;		
		document.getElementById(li_id).className	= "tabelement";
		
        startslide(objname);
}

function startslide(objname){
        //obj[objname] = document.getElementById(objname);
		obj[objname]	= document.getElementById('prop_content');

        endHeight[objname] = parseInt(obj[objname].style.height);

        startTime[objname] = (new Date()).getTime();

        if(dir[objname] == "down"){
                obj[objname].style.height = "1px";
        }

        obj[objname].style.display = "block";

        timerID[objname] = setInterval('slidetick(\'' + objname + '\');',timerlen);
}

function slidetick(objname){
        var elapsed = (new Date()).getTime() - startTime[objname];

        if (elapsed > slideAniLen)
                endSlide(objname);
        else {
                var d =Math.round(elapsed / slideAniLen * endHeight[objname]);
                if(dir[objname] == "up")
                        d = endHeight[objname] - d;

				obj[objname].style.height = d + "px";
				
        }

        return;
}

function endSlide(objname){
        clearInterval(timerID[objname]);

        if(dir[objname] == "up")
                obj[objname].style.display = "none";

        obj[objname].style.height = endHeight[objname] + "px";
		
		slidestatus	= dir[objname];
		link_id		= "a_" + curContent;
		
		if (slidestatus == "up") {
			document.getElementById(link_id).href	= "javascript:slidedown('" + curContent + "');";
			//document.getElementById(li_id).className	= "tabelement";
		}
		else {
			document.getElementById(link_id).href	= "javascript:slideup('" + curContent + "');";
			//document.getElementById(li_id).className	= "d_id";
		}

        delete(moving[curContent]);
        delete(timerID[objname]);
        delete(startTime[objname]);
        delete(endHeight[objname]);
        delete(obj[objname]);
        delete(dir[objname]);
		
		if (slidestatus	== "up")
			curContent = "";

        return;
}

//================================================================================
//							GOOGLE MAPS FUNCTIONS
//================================================================================

var a_map 		= null
var c_map		= null;
var geocoder 	= null;

function initializeMaps() {
	if (GBrowserIsCompatible()) {
		// Country Map
    	c_map		= new GMap2(document.getElementById("c_map_canvas"));
		c_map.setCenter(new GLatLng(40.41674, -3.70325), 4);
		c_map.disableDragging();
		
		geocoder 	= new GClientGeocoder();
		
		var customUI = c_map.getDefaultUI();
		customUI.maptypes.satellite = false;
		customUI.maptypes.hybrid = false;
		customUI.maptypes.physical = false;
		customUI.controls.largemapcontrol3d = false;
		customUI.controls.scalecontrol = false;
		customUI.zoom.scrollwheel = false;
		customUI.zoom.doubleclick = false;
		customUI.keyboard  = false;
		c_map.setUI(customUI);	
    }
}

function showLocation(area) {
    geocoder.getLocations(area, addAddressToMap);
}

function showCoordLocation(lat, long) {
	c_map.clearOverlays();
	point = new GLatLng(lat, long);
	marker = new GMarker(point);
   	c_map.addOverlay(marker);
	
	geocoder.getLocations(point, updateAddress);
}

function updateAddress(response) {
	if (!response || response.Status.code != 200) {
    	alert("\"" + address + "\" not found");
  	} else {
    	place = response.Placemark[0];

		document.getElementById('area_map').innerHTML = '<b>' + place.AddressDetails.Country.AdministrativeArea.AdministrativeAreaName + '</b><br />' + 
      			place.AddressDetails.Country.CountryName;
  	}
}


function addAddressToMap(response) {
	c_map.clearOverlays();
  	if (!response || response.Status.code != 200) {
    	alert("\"" + address + "\" not found");
  	} else {
    	place = response.Placemark[0];
    	point = new GLatLng(place.Point.coordinates[1],
                        place.Point.coordinates[0]);
    	marker = new GMarker(point);
    	c_map.addOverlay(marker);
		document.getElementById('area_map').innerHTML = '<b>' + place.AddressDetails.Country.AdministrativeArea.AdministrativeAreaName + '</b><br />' + 
      			place.AddressDetails.Country.CountryName;
    	//marker.openInfoWindowHtml('<b>' + place.AddressDetails.Country.AdministrativeArea.AdministrativeAreaName + '</b><br />' + 
      	//place.AddressDetails.Country.CountryName);
  	}
}

function showCoordinates(lat, lng, html) {
	// Area Map
	a_map 		= new GMap2(document.getElementById("a_map_canvas"));
	G_PHYSICAL_MAP.getMaximumResolution = function () { return 12 }; 
	G_NORMAL_MAP.getMaximumResolution = function () { return 12 }; 
    G_SATELLITE_MAP.getMaximumResolution = function () { return 12 }; 
    G_HYBRID_MAP.getMaximumResolution = function () { return 12 }; 
	
	var point = new GLatLng(lat,lng);
	a_map.setCenter(point, 12);
	a_map.setMapType(G_HYBRID_MAP);
	var marker = new GMarker(point);
	marker.openInfoWindowHtml(html);
	a_map.addOverlay(marker);
	
	a_map.setUIToDefault();
}

function showAddress(address) {
	// Area Map
	a_map 		= new GMap2(document.getElementById("a_map_canvas"));
		
	geocoder.getLatLng(
		address,
		function(point) {
			if (!point) {
				alert(address + " not found");
			} else {
				a_map.setCenter(point, 12);
				a_map.setMapType(G_HYBRID_MAP);
				var marker = new GMarker(point);
				a_map.addOverlay(marker);
				parts = address.split(",");
				if (parts.length == 4) {
					marker.openInfoWindowHtml('<b>' + parts[0] + '</b><br />' + 
										  parts[1] + '<br />' +
										  parts[2] + '<br />' + 
										  parts[3]);
				}
				else {
					marker.openInfoWindowHtml('<b>' + parts[0] + '</b><br />' + 
										  parts[1] + '<br />' +
										  parts[2]);
				}
			}
		}
	);
	a_map.setUIToDefault();
}

function IncludeJavaScript(jsFile) {
	document.write('<script type="text/javascript" src="'
    	+ jsFile + '"></scr' + 'ipt>'); 
}

function getLocation() {
		xmlHttp		= GetXmlHttpObject();
		if (xmlHttp == null) {
			alert ("Browser does not support HTTP Request");
			return;
		}
		
		var url;
		url		= "/level3/functions/getLocation.php";
			
		url			= url + "?id=" + prop_id;
		url			= url + "&sid=" + Math.random();

		xmlHttp.onreadystatechange	= locationLoaded;
		xmlHttp.open("GET", url, true);
		xmlHttp.send(null);
}

function locationLoaded() {
	if (xmlHttp.readyState == 4 || xmlHttp.readyState == "complete") {
		var content		= xmlHttp.responseText;
		//alert(content);
		initializeMaps();
		parts = content.split(",");
		var first_party	= trim(parts[0]);
		var comunidad	= trim(parts[1]);
		var province	= trim(parts[2]);
		var city		= trim(parts[3]);
		var country		= trim(parts[4]);
		var lat			= trim(parts[5]);
		var long		= trim(parts[6]);
		
		if ((lat == "" && long == "") || (lat == 0 && long == 0)) {
			showLocation(comunidad);
			
			if (first_party == 1)
				showAddress(province + ", " + comunidad + ", " + country);
			else
				showAddress(city + ", " + province + ", " + comunidad + ", " + country);
		}
		else {
			showCoordLocation(lat, long);
			var txt		= '<b>' + province + '</b><br />' + 
										  comunidad + '<br />' +
										  country;
			showCoordinates(lat, long, txt);
		}
	} 
}


//================================================================================
//							AJAX FUNCTIONS
//================================================================================

function GetXmlHttpObject() {
	var xmlHttp=null;
	try
	{
	// Firefox, Opera 8.0+, Safari
	xmlHttp=new XMLHttpRequest();
	}
	catch (e) {
		//Internet Explorer
		try {
			xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e) {
			xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
		}
	}
	return xmlHttp;
}

function contentLoaded() {
	if (xmlHttp.readyState == 4 || xmlHttp.readyState == "complete") {
		var content		= xmlHttp.responseText;
		document.getElementById('prop_content').innerHTML	= content;
		if (curContent == 'location')
			getLocation();
		startslide('prop_content');
	} 
}


function trim(str) {
	return str.replace(/^\s\s*/, '').replace(/\s\s*$/, '');	
}
