function mOvr(src,color) {
	if (!src.contains(event.fromElement)) {
		src.style.cursor = 'hand';
		src.bgColor = color
	}
}
function mOut(src,color) {
	if (!src.contains(event.toElement)) {
		src.style.cursor = 'default';
		src.bgColor = color
	}
}
function mClk(src) {
	if(event.srcElement.tagName=='TD'){
		src.children.tags('A')[0].click()
	}
}

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_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) { //v3.0
  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); return x;
}

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];}
}

function MM_validateForm() { //v3.0
  var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
  for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
    if (val) { nm=val.name; if ((val=val.value)!="") {
      if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
        if (p<1 || p==(val.length-1)) errors+='- '+nm+' debe ser una direccion de email.\n';
      } else if (test!='R') { num = parseFloat(val);
        if (val!=''+num) errors+='- '+nm+' debe ser un numero.\n';
        if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
          min=test.substring(8,p); max=test.substring(p+1);
          if (num<min || max<num) errors+='- '+nm+' debe ser un numero entre '+min+' y '+max+'.\n';
    } } } else if (test.charAt(0) == 'R') errors += '- '+nm+' debe ser ingresado.\n'; }
  } if (errors) alert('Tiene los siguientes errores:\n'+errors);
  document.MM_returnValue = (errors == '');
}

function MM_validateFormEn() { //v4.0
  var i,p,q,nm,test,num,min,max,errors='',args=MM_validateFormEn.arguments;
  for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
    if (val) { nm=val.name; if ((val=val.value)!="") {
      if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
        if (p<1 || p==(val.length-1)) errors+='- '+nm+' must contain an e-mail address.\n';
      } else if (test!='R') { num = parseFloat(val);
        if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
        if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
          min=test.substring(8,p); max=test.substring(p+1);
          if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
    } } } else if (test.charAt(0) == 'R') errors += '- '+nm+' is required.\n'; }
  } if (errors) alert('The following error(s) occurred:\n'+errors);
  document.MM_returnValue = (errors == '');
}

function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}


function cambioFoto(src)
{
	document.images['imgFotoGrande'].src = src;
}


/************ Mi Listado ****************************/

function validarBuscador(form){
	var suma = form.idTipo.value + form.idOp.value + form.idPrecio.value + form.idHab.value + form.idLoc.value
	if(suma==0) alert("Debe seleccionar al menos UN criterio de búsqueda.")
	else form.submit()
}

function toggle(show,hide,display) {
    document.getElementById(show).style.display = display;
    document.getElementById(hide).style.display = "none";
}

function hide(id) {
    document.getElementById(id).style.display = "none";
}

function show(id,display) {
    document.getElementById(id).style.display = display;
}

/************************** SECCION AJAX *****************************/
	
var http = objetus(); // We create the HTTP Object
	
function actualizarCiudadProvincia() {	// Funcion que realiza la peticion cuando el campo pierde el foco....
  var zipValue = document.getElementById("zip").value;
  http.open("GET", url + escape(zipValue), true);
  http.onreadystatechange = handleHttpResponse;
  http.send(null);
}

function handleHttpResponse() {			// Funcion que detecta la respuesta del server y actualiza el formulario ...
	if (http.readyState == 4) {
	    // Aca podemos realizar acciones en javascript o DOM en base a los valores devueltos por el XMLHttpRequest
	    var results = http.responseText.split(",");
        var idObjetoPadre='miListadoOcultar';       // inicializamos el nodo padre donde crear la tabla

    	switch(results[0]){
    		case "Eliminado":
                if(document.getElementById('tablaMiListado')){
                    var mytable = document.getElementById('tablaMiListado');
                    var nodoPadre = mytable.parentNode;           // se para en el nodo padre de la tabla
					for (var i=0; i<nodoPadre.childNodes.length; i++) {  // Recorro los hijos del padre, hasta encontrar uno de tipoTABLE y lo borro
						var elmHIJO = nodoPadre.childNodes[i];         // 
						if(elmHIJO.nodeName == 'TABLE'){               // Si el nodo que miro es TABLE
							nodoPadre.removeChild(nodoPadre.childNodes[i])  // Elimina el hijo iésimo del nodoPadre
						}
					}
                }
    		break
    		
    		case "Agregado":
    			if(!document.getElementById('tablaMiListado')){	// Preguntamos si la tabla No existe par acrearla
                    document.getElementById("miListadoOcultar").style.display = "block";    // habilitamos el div contenedor
                    crearTablaSola(idObjetoPadre);              // Llamamos al función que crea la tabla
    			}
                insertarFila(results);                          // Inertamos UNA fila a la tabla...
                alert (results[1]);
			break
            
            case "Eliminar":
                    eliminarFila(results[2]);                   // elimina la propiedad por su IdPropiedad...
            break;
            
            case "NoAgregado":
            	alert (results[1]);
            break;
    	}
    	//alert (results[1]);     // Muestra el mensaje eviado por funciones.php de la operación realizada
	}
}


function objetus() {	// Funcion que permite realizar todo lo anterior ...
         try {
                 objetus = new ActiveXObject("Msxml2.XMLHTTP");
        } catch ( e) {
                 try { 
                         objetus= new ActiveXObject ("Microsoft.XMLHTTP");
                 } catch (E) {
                          objetus= false; 
                } 
        }
        if (! objetus && typeof XMLHttpRequest!= 'undefined') {
                 objetus = new XMLHttpRequest();
        } 
        return objetus
}

/************************************** OPCIONES DEL CARRITO **********************************/

function eliminarLista(){
  var url = "funcionessesion.php?op=delAll&rm=" + Math.random(); // Script php en el sevidor, junto al parámetro,,,
  http.open("GET", url , true);
  http.onreadystatechange = handleHttpResponse;
  http.send(null);
}


function agregarLista(form){
  var opciones="&id=" + form.id.value + "&refInm=" + form.refInm.value + "&tipoOp=" + form.tipoOp.value + "&tipoInm=" + form.tipoInm.value + "&zona=" + form.zona.value+ "&img=" + form.img.value;
  var url = "funcionessesion.php?op=add" + opciones + "&rm=" + Math.random(); // Script php en el sevidor, junto al parámetro,,,
  http.open("GET", url , true);
  http.onreadystatechange = handleHttpResponse;
  http.send(null);
}

function agregarListaHref(opciones){
  var url = "funcionessesion.php?op=add" + opciones + "&rm=" + Math.random(); // Script php en el sevidor, junto al parámetro,,,
  http.open("GET", url , true);
  http.onreadystatechange = handleHttpResponse;
  http.send(null);
}


function eliminarPropiedad(idP){
  var opciones="&idP=" + idP;
  var url = "funcionessesion.php?op=delProp" + opciones + "&rm=" + Math.random(); // Script php en el sevidor, junto al parámetro,,,
  http.open("GET", url , true);
  http.onreadystatechange = handleHttpResponse;
  http.send(null);
}


/************************************* Funciones para manipular tablas con DOM ***************************/

function insertarFila(results) {
    var elmTR;
    var elmTD;
    var elmText;

	mytable = document.getElementById("tablaMiListado"); 
	//elmTBODY = mytable.getElementsByTagName("tbody");  
	elmTBODY = document.getElementById("tbodyMiListado");

    elmTR = document.createElement('tr');               // Crea el mnodo TR a insertar en la tabla
    elmTR.id = "idP_"+results[2];
    
    for (var i=3; i<=6; i++) {
        elmTD = document.createElement('td');           // Crea el nodo TD a insertar en el nodo TR
        elmText = document.createTextNode(results[i]);  // Crea la cadena de texto del nodo TD (elementos del vector de resultados: results)
        elmTD.appendChild(elmText);                     // Agrega el nodo de texo al nodo del TD
        elmTR.appendChild(elmTD);                       // Agrega el nodo TD al nodo TR
    }


    // Agregamos las celdas para las Funciones de: Eliminar y Ver mas info...
    elmTD = document.createElement('td');       // Crea el nodo TD
    
    anchor = document.createElement("a");       // Crea el nodo <a>
    anchor.href = "javascript:eliminarPropiedad(" + results[2] +")";    // Define la propiedad href del nodo <a>
    anchor.id = "del_"+results[2];              // Define la propiedad id del nodo <a>
    hometext = document.createTextNode("borrar");  // Crea el nodo de texto de la etiqueta <a>
    anchor.appendChild(hometext);               // Agrega el nodo de texto como hijo del nodo <a>
    // Agregamos la etiqueta <a> al td...
    elmTD.appendChild(anchor);                  // Agrega el nodo <a> como hijo del nodo TD
    elmTR.appendChild(elmTD);                   // Agrega el nodo TD como hijo del nodo TR
    
    // Repetimos el proceso anterior para el link de Ver as info de la Propiedad
    elmTD = document.createElement('td');       
    anchor = document.createElement("a");
    anchor.href = "ver-inmueble.php?id=" + results[2];
    anchor.id = "mod_"+ results[2];             // Id de la Propiedad
    hometext = document.createTextNode("mas info");
    anchor.appendChild(hometext);
    elmTD.appendChild(anchor);
    elmTR.appendChild(elmTD);
    /*-------------------------------------------------------------------------------*/
  
    elmTBODY.appendChild(elmTR);                 // Agrega el nodo TR com hijo del nodo TBODY de la tabla
    mytable.appendChild(elmTBODY);               // Agrega el nodo tHead como hijo del nodo TABLE
}

/*-----------------------------------------------------------------------------------*/
 
function eliminarFila(idP) {
	var mytable = document.getElementById("tablaMiListado"); 
	var elmTBODY = document.getElementById("tbodyMiListado");  

	var cont = 0  // Inicializo el contador de elementos TR en cero..
	//alert('HIjos del TBODY: '+elmTBODY.childNodes.length)
	var tam=elmTBODY.childNodes.length;

	for (var i=0; i<tam; i++) {  // Recorro todos los nodos hijos de tbody, hasta encontrar el TR indicado...
		var elmTR = elmTBODY.childNodes[i];         // 
		//alert('NOmbre nodo hijo TBODY: '+elmTR.nodeName);
		if(elmTR.nodeName=='TR'){cont++}            // Si el hijo de TBODY es un TR lo cuento
		if(elmTR.id == 'idP_' + idP){               // Si el nodo Tr actual es que estoy buscando
			posElm = i;   // Elimino el nodo nro i...
		}
	}
	elmTBODY.removeChild(elmTBODY.childNodes[posElm])
	//alert('Contador: '+cont);

	var nodoPadre = mytable.parentNode;           // se para en el nodo padre de la tabla
	//alert('Nodo padre: '+nodoPadre.nodeName)

	if(cont==1){                                    // Si se eliminó el único TR del TBODY, borro la tabla...    
		for (var i=0; i<nodoPadre.childNodes.length; i++) {  // Recorro los hijos del padre, hasta encontrar uno de tipoTABLE y lo borro
			var elmHIJO = nodoPadre.childNodes[i];         // 
			if(elmHIJO.nodeName == 'TABLE'){               // Si el nodo que miro es TABLE
				nodoPadre.removeChild(nodoPadre.childNodes[i])  // Elimina el hijo iésimo del nodoPadre
				//alert('Se eliminó la tabla también: '+ elmHIJO.nodeName)
			}
		}
	}
}


/*-----------------------------------------------------------------------------------*/

function crearTablaSola(idObjetoPadre){
    var myObject = document.getElementById(idObjetoPadre);  // Obtiene el nodo padre donde se insertará la tabla
    var mytable  = document.createElement("table");         // Crea el nodo TABLE
    mytable.id   = "tablaMiListado";                        // Define el id del nodo TABLE
    var mytablehead = document.createElement("thead");      // Crea el nodo tHead de la tabla
    var mytablebody = document.createElement("tbody");      // Crea el nodo tbody de la tabla
    mytablebody.id  = "tbodyMiListado";                    // Define el id del nodo TOBDY
    
    // Creamos el tHead de la tabla
    var vecValTh = new Array("Referencia","Operación","Inmueble","Zona"," ","");    // Vector con las cadenas de text de cada TH
    
    mycurrent_row = document.createElement("tr");           // Crea el nodo TR que va dentro del tHead
    for(var i = 0; i < vecValTh.length; i++) {              // THs del Head (uno por cada valor del vector vecValTh...
        mycurrent_cell = document.createElement("th");      // Crea el primer nodo TH
        currenttext = document.createTextNode(vecValTh[i]); // Crea el nodo de texto que va dentro del TH
        mycurrent_cell.appendChild(currenttext);            // Agrega el nodo de texto como hijo del nodo TH
        mycurrent_row.appendChild(mycurrent_cell);          // Agrega el nodo TH como hijo del nodo TR
    }
    mytablehead.appendChild(mycurrent_row);                 // Agrega el nodo TR com hijo del nodo tHead de l a tabla
    mytable.appendChild(mytablehead);                       // Agrega el nodo tHead como hijo del nodo TABLE
    mytable.appendChild(mytablebody);                       // Agregamos el tbody a la tabla    
    myObject.insertBefore(mytable,myObject.childNodes[0])   // Inserto la tabla en antes del mprimer nodo del DIV..
}
