function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}


// check login fields
function checkLogin() {
	if (document.frmLogin.usr.value.length == 0) {
	  alert('Por favor escreva o username.');
	  document.frmLogin.usr.focus();
	  return false;
	}
	if (document.frmLogin.pwd.value.length == 0) {
	  alert('Por favor escreva a password.');
	  document.frmLogin.pwd.focus();
	  return false;
	}
}

// newsletter e-mail cleaner
function clearText() {
	if (document.frmNewsletter.email.value == 'o seu e-mail') {
		document.frmNewsletter.email.value = '';
		return false;
	}
}

// check newsletter email
function checkMail() {
	if (document.frmNewsletter.email.value.length == 0) {
	  alert('Por favor escreva um e-mail válido.');
	  document.frmLogin.usr.focus();
	  return false;
	}
	if (document.frmNewsletter.email.value == 'o seu e-mail') {
	  alert('Por favor escreva um e-mail válido.');
	  document.frmLogin.usr.focus();
	  return false;
	}
}

    function confirmarEdicao (message, link) {
        if ( confirm(message) ) {
            window.location.href = link;
        }
        return false;
    }
    
    function textCounter(field, countfield, maxlimit) {
        if (field.value.length > maxlimit)
            field.value = field.value.substring(0, maxlimit);
        else
            countfield.value = maxlimit - field.value.length;
    }

// menu principal

function hide (id) {
	try {
		var el = document.getElementById(id);
		el.style.visibility = 'hidden';
		el.style.display = 'none';
	} catch (e) {}
}

function show (id) {
	try {
		var el = document.getElementById(id);
		el.style.visibility = 'visible';
		el.style.display = 'block';
	} catch (e) {}
}

function findPosX(obj)
{
    var curleft = 0;
    if (obj.offsetParent)
    {
        while (obj.offsetParent)
        {
            curleft += obj.offsetLeft
            obj = obj.offsetParent;
        }
    }
    else if (obj.x)
        curleft += obj.x;
    return curleft;
}

function findPosY(obj)
{
    var curtop = 0;
    if (obj.offsetParent)
    {
        while (obj.offsetParent)
        {
            curtop += obj.offsetTop
            obj = obj.offsetParent;
        }
    }
    else if (obj.y)
        curtop += obj.y;
    return curtop;
}

function positionDiv(divID, placeholderID, relX,relY)
{
    var obj = document.getElementById(placeholderID);
    var div = document.getElementById(divID);
    
    if (obj!=undefined && div!=undefined)
    {
        var pX = findPosX(obj);
        var pY = findPosY(obj);
        
        div.style.top   = pY+relY+'px';
        div.style.left  = pX+relX+'px';
        
        show(divID);
    }
}

function copyValue(fromId, toId)
{
    try
    {
        var from    = document.getElementById(fromId);
        var to      = document.getElementById(toId);
        to.value    = from.value;
    } catch (e) {}
}

/* Quando a data de chegada é seleccionada, preenche a 2a data*/
function onSearchDatePick(arrivalDateID, DepartureDateID)
{
//function() {onSearchDatePick('firstinput','secondinput')}
    try
    {
        var from    = document.getElementById(arrivalDateID);
        var to      = document.getElementById(DepartureDateID);
        if (to.value=='yyyy/mm/dd')
        {
            to.value    = from.value;
        }
    } catch (e) {}
}

// -- Menus flutuantes ----------------------------------------------------------------------

var x1 = 0;
var x2 = 0;
var y1 = 0;
var y2 = 0;
var isMenuOpen = false;
var wichMenuOpen = '';
var lastEvent;

var mouseX = 0;
var mouseY = 0;

document.onmousemove = monitorMousePos;

function monitorMousePos(e)
{
    if (!e) var e = window.event;
    mouseX = e.pageX ? e.pageX : e.clientX;  
    mouseY = e.pageY ? e.pageY : e.clientY;
    //log("mouseX:"+mouseX+', '+"mouseY:"+mouseY+"; x1: "+x1+", x2: "+x2+", y1: "+y1+", y2: "+y2);
}

function testMousePosition()
{
    //log("testMousePosition");
    if (isMenuOpen && (mouseX <= x1 || mouseX >= x2 || mouseY <= y1 || mouseY >= y2))
    {
        // Mouse está fora do menu
        closeMainMenu(wichMenuOpen);
    }
    else
    {
        self.clearTimeout(lastEvent);
		lastEvent = self.setTimeout("testMousePosition();", 1200);
    }
}

function openMainMenu(divID,placeholderID)
{
    wichMenuOpen = divID;
	
	hide ('mn_ideias');
	hide ('mn_anuncios');
	hide ('mn_servicos');
	hide ('mn_infolinks');
	hide ('mn_dotvilla');
	
	var mainMenu = document.getElementById(divID);

    if (mainMenu!=undefined)
    {
        positionDiv(divID, placeholderID, 0 , 20);
        show (divID);
        var ht = mainMenu.offsetHeight ? mainMenu.offsetHeight : mainMenu.style.height;
		
        x1  = findPosX(mainMenu);
        y1  = findPosY(mainMenu);
        x2  = x1+parseInt(mainMenu.style.width);
		y2  = y1+parseInt(ht);
		//alert(mainMenu.style.height)

		//log("x1: "+x1+", x2: "+x2+", y1: "+y1+", y2: "+y2);
		self.clearTimeout(lastEvent);
		lastEvent = self.setTimeout("testMousePosition();", 1500);
		isMenuOpen = true;
	}
}

function closeMainMenu(divID)
{
    //log('closeMainMenu('+divID+')')
	if (isMenuOpen)
    {
        hide (divID);
        isMenuOpen = false;
    }
}


// -- FIM Menus flutuantes ----------------------------------------------------------------------


function swapImageById(imgId, newSrc)
{
    var img = document.getElementById(imgId);
    if (img!=undefined)
    {
        img.src     = newSrc;
    }
}

function swapClassNameById(id, newClass)
{
    var obj = document.getElementById(id);
    if (obj!=undefined)
    {
        obj.className = newClass;
    }
}

function applyClassNameByName(name, newClass)
{
    var objList = document.getElementsByName(name);
    if (objList!=undefined)
    {
        for ( var i=0; i<objList.length; i++ )
        {
            objList[i].className = newClass;
        }
    }
}

function applyClassToObject(obj, newClass)
{
    if (obj!=undefined)
    {
        obj.className = newClass;
    }
    else
    {
        //log("")
    }
}

function clearCombobox(id, items)
{
    var combo   = document.getElementById(id);
    if (combo!=undefined)
    {
        if (items!=undefined)
        {
            combo.options.length = items;
        }
        else
        {
            combo.options.length = 0;
        }
        
    }
}

/* Funcoes XMLHTTP para a pesquisa de topo */

function doUpdateRegioes(idPaises)
{
    clearCombobox('idRegioes_topo', 1);
    clearCombobox('idCidades_topo', 1);
    XMLHTTPSend("f=listaRegioes&idPaises="+idPaises, callback_doUpdateRegioes);
}

function callback_doUpdateRegioes(responseXml)
{
	if (responseXml==undefined) return;
    
    try
    {
        /* Raiz do documento, para saber o numero de registos */
    	var result 	= responseXml.getElementsByTagName("result")[0];
    	var numRows = result.getAttribute("numRows");
    	var items 	= result.getElementsByTagName("record");
    	var combo 	= document.getElementById('idRegioes_topo');
        
    	combo.options.length 	= 1;
    	for (var I = 1 ; I < items.length +1 ; I++)
        {
            var item          = items[I-1];
    		var label 		  = item.getElementsByTagName("nome")[0].firstChild.nodeValue;
            label           += ' ('+item.getElementsByTagName("numero_propriedades")[0].firstChild.nodeValue+')';
    		var value 		  = item.getElementsByTagName("id")[0].firstChild.nodeValue;
    		combo.options[I]  = new Option(label, value);
    	}
    } catch (e) {}
    

}

function doUpdateCidades(idRegioes)
{
    clearCombobox('idCidades_topo', 1);
    XMLHTTPSend("f=listaCidades&idRegioes="+idRegioes, callback_doUpdateCidades);
}

function callback_doUpdateCidades(responseXml)
{
    var combo   = document.getElementById('idCidades_topo');
    combo.options.length    = 1;
    
    try
    {
        if (responseXml==undefined) return;
        
        /* Raiz do documento, para saber o numero de registos */
        var result  = responseXml.getElementsByTagName("result")[0];
        var numRows = result.getAttribute("numRows");
        var items   = result.getElementsByTagName("record");
    
        for (var I = 1 ; I < items.length+1 ; I++)
        {
            var item          = items[I-1];
            var label         = item.getElementsByTagName("nome")[0].firstChild.nodeValue;
            label           += ' ('+item.getElementsByTagName("numero_propriedades")[0].firstChild.nodeValue+')';
            var value         = item.getElementsByTagName("id")[0].firstChild.nodeValue;
            combo.options[I]  = new Option(label, value);
        }
    } catch (e) {}

}

/* Funcoes XMLHTTP para selecção da localização na adição de propriedade.
 * É necessária duplicação por causa de conflitos com o formulario da pesquisa de topo
 */

function doUpdateRegioesPropriedade(idPaises)
{
    XMLHTTPSend("f=listaRegioes&idPaises="+idPaises, callback_doUpdateRegioesPropriedade);
}

function callback_doUpdateRegioesPropriedade(responseXml)
{
    var combo   = document.getElementById('idCidadesPropriedade');
    combo.options.length    = 1;
    
	var combo 	= document.getElementById('idRegioesPropriedade');
	combo.options.length 	= 1;
    
    
	if (responseXml==undefined) return;
    
    /* Raiz do documento, para saber o numero de registos */
    try
    {
    	var result 	= responseXml.getElementsByTagName("result")[0];
    	var numRows = result.getAttribute("numRows");
    	var items 	= result.getElementsByTagName("record");
    	for (var I = 1 ; I < items.length +1 ; I++)
        {
            var item          = items[I-1];
    		var label 		  = item.getElementsByTagName("nome")[0].firstChild.nodeValue;
    		var value 		  = item.getElementsByTagName("id")[0].firstChild.nodeValue;
    		combo.options[I]  = new Option(label, value);
    	}
    }
    catch(e) {}
}

function doUpdateCidadesPropriedade(idRegioes)
{
    XMLHTTPSend("f=listaCidades&idRegioes="+idRegioes, callback_doUpdateCidadesPropriedade);
}

function callback_doUpdateCidadesPropriedade(responseXml)
{
    var combo   = document.getElementById('idCidadesPropriedade');
    combo.options.length    = 1;
    
    /* Raiz do documento, para saber o numero de registos */
    try
    {
        var result  = responseXml.getElementsByTagName("result")[0];
        var numRows = result.getAttribute("numRows");
        var items   = result.getElementsByTagName("record");
    
        for (var I = 1 ; I < items.length+1 ; I++)
        {
            var item          = items[I-1];
            var label         = item.getElementsByTagName("nome")[0].firstChild.nodeValue;
            var value         = item.getElementsByTagName("id")[0].firstChild.nodeValue;
            combo.options[I]  = new Option(label, value);
        }        
    }
    catch(e) {}
}

/* debug */


function log(msg)
{
    try {
        if (console!=undefined)
        {
            console.debug(new Date+" "+msg);
        }
    } catch (e) {}
}

/* Carrinho de compras */

function doUpdateShoppingCart(idPropriedade, accao, time)
{
    // updateShoppingCart&idPropriedade=102&accao=add&time=2
    //var param = "f=updateShoppingCart&idPropriedade=102&accao=add&time=2"
    var salt = Math.round(Math.random() * 1000000000) % 100000000;
    var param = "f=updateShoppingCart&idPropriedade="+idPropriedade+"&accao="+accao+"&time="+time+"&salt="+salt
    XMLHTTPSend(param, callback_doUpdateShoppingCart, 'text');
}

function callback_doUpdateShoppingCart(body)
{
    var obj = document.getElementById('shoppingCart');
    //var obj1 = document.getElementById('shoppingCartDebug');
    if (obj!=undefined)
    {
        obj.innerHTML =  body;
      //  obj1.value =  body;
    }
}

/* Adiciona o desconto a sessao */
function doAddShoppingCartDiscount(codigoDesconto)
{
    var salt = Math.round(Math.random() * 1000000000) % 100000000;
    var param = "f=manageShoppingCartDiscount&action=add&codigoDesconto="+codigoDesconto+"&salt="+salt
    XMLHTTPSend(param, callback_doShoppingCartUpdated, 'text');
}

function callback_doShoppingCartUpdated(body)
{
    log(body);
    doUpdateShoppingCart();
}

/* Adiciona o desconto a sessao */
function doRemoveShoppingCartDiscount()
{
    var salt = Math.round(Math.random() * 1000000000) % 100000000;
    var param = "f=manageShoppingCartDiscount&action=remove&salt="+salt
    XMLHTTPSend(param, callback_doShoppingCartUpdated, 'text');
}