
///// lines of thought/////
//so salvar para a base de dados de o cookie sofrer alterações
//verificar existencia ao adicionar imovel
var oCookie;
Array.prototype.indexOf=function(elem)
{
	for(var x=0; x<this.length; x++)
	{
		if(this[x]==elem)
		{
			return x;
		}
	}
	return -1;
}

var imoList= new Array();
var nodeList= new Array();
//var lng ="PT";

function addImo(clid)
{
	//alert("pushing :"+clid);
	imoList.push(parseInt(clid));
}

function remImo(clid)
{
	if(imoList.indexOf(clid)!=-1)
	{
		imoList.splice(imoList.indexOf(clid),1);
	}
}



function initFavourites()
{
	//lng=lang;

	var check=readCookie('MyFavourites');
	if(check!="")
	{
		if(cookiesEnabled())
		{
			var list=readCookie('favourites');
			if(list!="")
			{
				imoList=list.split(',');
				//alert('getting from cookie');
			}
			else
			{
				//alert('getting from database empty cookie'); 
				imoList=getFromDB();
		
			}
		}
		else
		{
			//do request to mdb	
			imoList=getFromDB();
			//alert('getting from database');	
			
		}
		
	}
	nodeList=getElements();
	refreshNodes();
}

function refreshNodes()
{
	//alert("on init "+imoList.length + "location :"+window.location.href);
	//alert("Refreshing nodes");
	for(var g=0;g<nodeList.length;g++)
	{               
		var node=nodeList[g];
		if(imoList.indexOf(node.getAttribute("favourite"))==-1)
		{				
			node.ondoubleclick=function(){}
			node.style.cursor="hand";	
			node.src=node.getAttribute('addImage');
			node.alt=node.getAttribute('addAlt');
			node.onclick=function()
			{
				var check=readCookie("MyFavourites");
				//alert(check);
				if(check=="")
				{
					var status=doLogin();
					if(status)
					{				
						addImo(this.getAttribute("favourite"));
						window.location.reload();
					}
				}
				else
				{
					addImo(this.getAttribute("favourite"));
					refreshNodes();
				}
								
				if(this.getAttribute("_onClick"))
					eval(this.getAttribute("_onClick"));
			}
		}
		else
		{
			node.ondoubleclick=function(){}
			node.style.cursor="hand";	
			node.src=node.getAttribute('remImage');
			node.alt=node.getAttribute('remAlt');
			node.onclick=function()
			{
				var check=readCookie("MyFavourites");
				//alert(check);
				if(check=="")
				{
					var status=doLogin();
					if(status)
					{				
						remImo(this.getAttribute("favourite"));
						window.location.reload();
					}
				}
				else
				{
					remImo(this.getAttribute("favourite"));
					refreshNodes();
				}
								
				if(this.getAttribute("_onClick"))
					eval(this.getAttribute("_onClick"));
			}
		}
		
		if(node.getAttribute("favouriteStyle"))
		{
			node.className=node.tagName+'favourite';
		}
	}//end for
}//end function


//// Fazer o login

function doLogin()
{
	var response=showModeless('http://www.grupoprime.com/applets/container.htm?url=loginEN.aspx');
	if (response=="invalid")
	{
		return false;
	}
	else
	{
		return true;
	}
}


function showUserInfo()
{
	var response=showModeless('http://www.grupoprime.com/applets/container.htm?url=changeUserInfoEN.aspx');
	window.location.reload();
}

///////////////////////////////////////Autenticar

function doAuthentication(errorPage)
{
	var check=readCookie("MyFavourites");
	
	if(check=="")
	{
		var temp=doLogin();
		if(!temp)
		{	
			if(errorPage)
			{
				window.navigate(errorPage);
			}
			else
			{
				window.history.go(-1);
			}
		}
	}
}

////////////////////////guardar cookie /////////////////////////

function saveCookie()
{
	var Realestatelist=imoList.join(',');
	Realestatelist=Realestatelist.charAt(0)==","?Realestatelist.substring(1):Realestatelist;
	var dat=new Date();
	var nextYear = dat.getTime()+ (365 * 24 * 60 * 60 * 1000);
	dat.setTime(nextYear);
	document.cookie='favourites='+Realestatelist+';expires='+dat.toGMTString();
	
	var cook=readCookie('MyFavourites');
	var keys=cook.split('$');
		//alert("requesting: saveData?cli="+keys[0]+"&clids="+Realestatelist);	
		doRequest("http://www.grupoprime.com/applets/saveData.aspx?cli="+keys[0]+"&clids="+Realestatelist);	
		//alert("last Alert:" +document.cookie);	
}


window.onbeforeunload=function(){
	saveCookie();
}


function listFavourites(url)
{
	if(!url)
		url="listagem.htm";
		
	var check=readCookie("MyFavourites");
	if(check=="")
	{
		var status=doLogin();
		if(status)
		{				
			var aux=imoList.join(',');
			aux=aux.charAt(0)==","?aux.substring(1):aux;
			aux=aux==""?0:aux;
			var href="?RIL="+aux;
			window.location.href=url+href;
		}
	}
	else
	{
		var aux=imoList.join(',');
		aux=aux.charAt(0)==","?aux.substring(1):aux;
		aux=aux==""?0:aux;
		var href="?RIL="+aux;
		window.location.href=url+href;
	}
}

/*** verifica se os cookies estão bloqueados ***/
function cookiesEnabled()
{
	var _date = new Date();
	_date.setTime(_date.getTime()+9000);
	document.cookie='test=true;expires='+_date.toGMTString();
	var aux=readCookie('test');

	if(aux != "")
	{
		return true;	
	}
	
	return false;
}

/*** Percorre todos os elementos do body e devolde um array com a referência dos que manipulam os favoritos  ***/
function getElements()
{
	var temp= new Array(document.body);
	var fav= new Array();
	//var temp= document.body.childNodes;
	
	for(var i=0; i<temp.length; i++)
	{
		if(temp[i].hasChildNodes)
		{
			for(var x=0; x<temp[i].childNodes.length;x++)
			{
				var node=temp[i].childNodes[x];
				if(node.nodeType==1)
				{
					temp.push(node);
					if(node.getAttribute('favourite'))
						fav.push(node);
				}
			}
		}
		
	}
	return fav
}

////////////// Fazer pedidos externos///////////////////////////////////////////////////

function doRequest(_target, _method, _reader)
{
	var page_request;
	if (window.XMLHttpRequest)
	{ // if Mozilla, Safari etc
		page_request = new XMLHttpRequest();
	}
	else if (window.ActiveXObject)
	{ // if IE
		try 
		{
			page_request = new ActiveXObject("Msxml2.XMLHTTP");
		} 
		catch (e)
		{
			try
			{
				page_request = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (e){}
		}
	}
	else
		return false
	
	if(_method)
	{		
		page_request.onreadystatechange=_reader;
		
		page_request.open('GET', _target, _method);
		page_request.send();
	}
	else
	{
		page_request.open('GET',_target, false);
		page_request.send();
		
		return page_request.responseXML;	
	}
	
}

function getFromDB()
{
	var cook=readCookie('MyFavourites');
	var keys=cook.split('$');
	var data = doRequest("http://www.grupoprime.com/Applets/readData.aspx?user="+keys[0]);
	
	if(data.childNodes.length==0)
	{
		return new Array();
	}
	else
	{
		var arrTemp= new Array();
		for(var i=0; i<data.firstChild.childNodes.length; i++)
		{	
			//alert("putting : "+data.firstChild.childNodes[i].firstChild.nodeValue);
			arrTemp.push(data.firstChild.childNodes[i].firstChild.nodeValue);
		}
		
		return arrTemp;
	}
}


function logOut(url)
{
	saveCookie();

	var _date= new Date(2000,1,1);
	//alert(document.cookie);
	document.cookie="MyFavourites=false; expires=Fri, 27 Jul 2001 02:47:11 UTC;path=/";
	//alert(document.cookie);
	
	
	if(url)
	{
		document.location.href=url;
	}
	else
	{
		document.location.href="default.htm";
	}
	
}

function logIn()
{
	var status=doLogin();
	if(status)
	{				
		window.location.reload();
	}
}

function getUser()
{
	var cook=readCookie('MyFavourites');
	var keys=cook.split('$');
	if(keys.length>0)
	{
		return (keys[0]);
	}
}

function checkFlashForLogin(_movie, _variavel, _valor)
{
	var cook=readCookie('MyFavourites');
	var keys=cook.split('$');
	if(keys.length>1 && document.getElementById(_movie))
	{
		//alert("setting var");
		setFlashVar(_variavel, _valor, _movie);	
		setFlashVar("/:user", keys[1],_movie);
	}
}

function setFlashVar(_var, _value, _target)
{
	var obj=document.getElementById(_target);
	obj.setVariable(_var, _value);
}

function getFavourites()
{
	var check=readCookie("MyFavourites");
	if(check=="")
	{
		var status=doLogin();
		if(status)
		{				
			var aux=imoList.join(',');
			aux=aux.charAt(0)==","?aux.substring(1):aux;
			aux=aux==""?0:aux;
			return "RIL="+aux;
		}
		else return "";
	}
	else
	{
		var aux=imoList.join(',');
		aux=aux.charAt(0)==","?aux.substring(1):aux;
		aux=aux==""?0:aux;
		return "RIL="+aux;
	}
}


///////////////////////////// funções para as pesquisas ////////////////////

function saveSearch(lng)
{
	var check=readCookie("MyFavourites");
	//alert(check);
	if(check=="")
	{
		var status=doLogin();
		if(status)
		{				
			var args = document.location.href.split('?');
			var page=args[0].substring(args[0]);	
			var reg=/&/g;
			var params=args[1].replace(reg,'$');
			var cook=readCookie('MyFavourites');
			var keys=cook.split('$');
			var url="saveSearchEN.aspx?id="+keys[0]+"&page="+page+"&params="+params+"&lng="+lng;
			showModeless("http://www.grupoprime.com/applets/container.htm?url="+url);	
		}
	}
	else
	{
		var args = document.location.href.split('?');
		var page=args[0].substring(args[0]);	
		var reg=/&/g;
		var params=args[1].replace(reg,'$');
		var cook=readCookie('MyFavourites');
		var keys=cook.split('$');
		var url="saveSearchEN.aspx?id="+keys[0]+"&page="+page+"&params="+params+"&lng="+lng;
		showModeless("http://www.grupoprime.com/applets/container.htm?url="+url);
	}
}

function getSearches()
{
	var arrTemp = new Array();

	var elems= document.getElementsByName('search');
	
	for(var i=0; i<elems.length; i++)
	{
		if(elems[i].tagName=="INPUT" && elems[i].getAttribute('type')=="checkbox" )
		{
			arrTemp.push(elems[i]);
		}
	}
	return arrTemp;	
}


function deleteSearches()
{
	var arrSearches= getSearches();
	var ids=""
	//alert(arrSearches.length);
	
	for(var i=0; i<arrSearches.length; i++)
	{
		if(arrSearches[i].checked)
			ids+=arrSearches[i].value+",";
	}
	if(ids!="")
	{	
		var cook=readCookie('MyFavourites');
		var keys=cook.split('$');
		//alert("doing "+"http://www.grupoprime.com/applets/deleteSearch.aspx?id="+keys[0]+"&ids="+ids);
		var resp=doRequest("http://www.grupoprime.com/applets/deleteSearch.aspx?id="+keys[0]+"&ids="+ids);
		document.location.reload();
	}
	else
	{
		alert("Select a search to delete it.");	
	}
}

function listSearches(url)
{
	if(!url)
		url="listSearches.htm";
		
	var check=readCookie("MyFavourites");
	if(check=="")
	{
		var status=doLogin();
		if(status)
		{				
			window.location.href=url
		}
	}
	else
	{
		window.location.href=url
	}
}


///////////////////////////// funções para os alertas   //////////////////////////////



function saveAlert(lng)
{
		var args = document.location.href.split('?');
		var page=args[0].substring(args[0]);	
		var reg=/&/g;
		var params=args[1].replace(reg,'$');
		var cook=readCookie('MyFavourites');
		var keys=cook.split('$');
		var url="saveAlert.aspx?id="+keys[0]+"&page="+page+"&params="+params+"&lng="+lng;
		document.location.href=url;
}


function getAlerts()
{
	var arrTemp = new Array();

	var elems= document.getElementsByName('alert');
	
	for(var i=0; i<elems.length; i++)
	{
		if(elems[i].tagName=="INPUT" && elems[i].getAttribute('type')=="checkbox" )
		{
			arrTemp.push(elems[i]);
		}
	}
	return arrTemp;	
}


function deleteAlerts()
{
	var arrAlerts= getAlerts();
	var ids=""
	//alert(arrAlerts.length);
	
	for(var i=0; i<arrAlerts.length; i++)
	{
		if(arrAlerts[i].checked)
			ids+=arrAlerts[i].value+",";
	}
	if(ids!="")
	{	
		var cook=readCookie('MyFavourites');
		var keys=cook.split('$');
		//alert("doing "+"http://www.grupoprime.com/applets/deleteAlert.aspx?id="+keys[0]+"&ids="+ids);
		var resp=doRequest("http://www.grupoprime.com/applets/deleteAlert.aspx?id="+keys[0]+"&ids="+ids);
		document.location.reload();
	}
	else
	{
		alert("Select an alert to be deleted");	
	}
}

function listAlerts(url)
{
	if(!url)
		url="listAlerts.htm";
		
	var check=readCookie("MyFavourites");
	if(check=="")
	{
		var status=doLogin();
		if(status)
		{				
			var cook=readCookie("MyFavourites");
			var keys=cook.split('$');
			//alert("done in js ="+url+keys[0]);
			window.location.href=url+keys[0];
			
		}
	}
	else
	{
		var cook=readCookie("MyFavourites");
		var keys=cook.split('$');
		//alert("url="+url);
		window.location.href=url;
	}
}

function changeAlert(id,lng)
{
	if(id)
	{	
		var cook=readCookie('MyFavourites');
		var keys=cook.split('$');
		//alert('http://testcenter.imoguia.com/grupo_prime/applets/container.htm?url=changeAlert.aspx?lng='+lng+'&alert='+id);
		var response=showModeless('http://www.grupoprime.com/applets/container.htm?url=changeAlert.aspx?id='+keys[0]+'&lng='+lng+'&alert='+id);
		window.location.reload();
	}
}

function getEstates(id)
{
	if(id)
	{
		window.location.href="http://www.grupoprime.com/applets/showAlertEstates.aspx?alertId="+id+"&resPage=http://www.grupoprime.com/pt/listagem.htm";
	}

}


/////////////////////////////  Generic functions  ///////////////////////

/*** Devolve o valor de uma determinada chave do cookie ***/
function readCookie(val)
{
	var scrambles=new Array();
	scrambles=document.cookie.split(';');
	for(var x=0; x<scrambles.length;x++)
	{
		var keys= new Array();
		keys= scrambles[x].split('=');
		
		var aux=keys[0].toLowerCase();
		if(aux.trim()==val.toLowerCase() && keys[1] && keys[1]!="")
		{	
			return keys[1];
		}
	}
	return "";
}

String.prototype.lTrim=function()
{
	var index=0;
	while(this.charCodeAt(index)==32 && index<this.length)
	{
		index++; 
	}
	
	if(index==this.length)
		return "";
	else
		return this.substring(index);
}

String.prototype.rTrim=function()
{
	var index=this.length-1;
	
	while(this.charCodeAt(index)==32 && index>0)
	{
		index--;	
	}
	
	if(index==0 && this.charAt(index)==32)
		return "";
	else
		return this.substring(0, index+1);
}

String.prototype.trim=function()
{
	var aux=this.rTrim();
	return aux.lTrim();
}

function showModeless(url)
{
	var temp=window.showModalDialog(url, window,'dialogHeight:399px; dialogWidth:390px; dialogTop: 180px; dialogLeft: 490px; edge: Raised; center: Yes; help: No; resizable: no; status: No; scroll: No');	
	return temp;
}


	