/*
@author : Yannick Komotir
@description : ajax interactions for maps in valority
@year : 2009
*/

//constantes
var TEXT_NODE;
var ELEMENT_NODE;
var notWhitespace = /\S/;
var k = 0;
var tab = new Array();

try {
	TEXT_NODE = Node.TEXT_NODE;
} catch(e) {
	TEXT_NODE = 3;
}
try {
  ELEMENT_NODE = Node.ELEMENT_NODE;
} catch(e) {
  ELEMENT_NODE = 1;
} 

//fin constantes


//fonctions

function createRequest(){
	var  xmlHttp = false;
	if(window.XMLHttpRequest){
		xmlHttp=new XMLHttpRequest();
	}else{
		try{
  		xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
		}catch (e) {
  		try {
    		xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
  		} catch (e2) {
    		xmlHttp = false;
  		}
		}
	}
	return xmlHttp;
}

function getDataes(postDataes){
	var ajaxHttp = createRequest();
	if(ajaxHttp){
		ajaxHttp.open("POST", "/requests/request");
		ajaxHttp.onreadystatechange = ajaxHandler;
		ajaxHttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
		ajaxHttp.send(postDataes);

		}
	return false;
}
function ajaxHandler(){
	if ( this.readyState == 4 ) {
  	var resultbounds = new GLatLngBounds();
  	var literalInfos = "";
  	var marker = "";
  	var contenu = "";
  	var imageSRC = "/extension/design_valority/design/design_valority/images/picto_maison.gif";
  	var titre = "";
  	var nombreTotal = 0;
  	var codePostal = 0;
  	var relatedItems = "";
  	var lienItems = "";
  	var titreItems = "";
  	var surfHabItems = "";
  	var prixItems = "";
  	var continueItems = "";
  	tableau_resultat = new Array();
  	  	
  	/*
    container.innerHTML += "Returned data: " + this.responseText+ "<br/>";
    */
    //alert(this.responseText);
    var variables = this.responseXML;
    var variables2 = variables.getElementsByTagName("Reponse");
    variables2 = cleanWhitespace(variables2[0]);
    variables3 = variables2.getElementsByTagName("Item");
    //alert(variables3.length);
    if(map)map.clearOverlays();
    map.panTo(new GLatLng(45.7637913,4.8339774));
		map.setZoom(10);
		
		//clearTimeout();
		
    for (var i=0; i < variables3.length; i++) {
    	//container.innerHTML += variables3[i].firstChild.nodeValue + " : " + variables3[i].getAttribute("nombre") + "<br/>";
    	literalInfos = variables3[i].getAttribute("codepostal") + " France";
    	titre = variables3[i].getAttribute("titre");
    	lien = variables3[i].getAttribute("url");
    	codePostal = variables3[i].getAttribute("codepostal");
    	var lat = parseFloat(variables3[i].getAttribute("lat"));
      var lng = parseFloat(variables3[i].getAttribute("long"));
      var point = new GLatLng(lat,lng);
    	nombreTotal = variables3[i].getAttribute("nombre");
    	
    	//les relateds 
			relatedItems = variables3[i].getElementsByTagName("related");
    	contenu = "<div class='gmap_bulle_titre'>Il y a " + nombreTotal + " r&eacute;sultat dans " + codePostal +"</div><br/><div class='gmap_bulle_liste_des_annonces'>";
			
			for(var j=0; j < relatedItems.length; j++) {
				lienItems = relatedItems[j].getAttribute("urlAlias");
				
				titreItems = relatedItems[j].firstChild.nodeValue;
				surfHabItems = relatedItems[j].getAttribute("surfHab");
				prixItems = relatedItems[j].getAttribute("prix");
				
				continueItems = ( parseInt(nombreTotal) > 5 ) ? "<div class='spacer'>...</div><br/>" : "";
				contenu += "<div class='gmap_bulle_liste_une_annonce'><a href='"+lienItems+"' onclick='annoncedetailajax(this, "+codePostal+");return false'><p class='gmap_bulle_nom_categorie'>" + titreItems + "</p><p class='gmap_bulle_surface'>" + surfHabItems + "m&#178;</p>" + prixItems + "&euro</a></div>";
			}
			contenu += "</div>" + continueItems + "<div class='gmap_bulle_voir_tous_resultats'><a href='#' onclick='clickMap("+ codePostal +")'>Voir tous les r&eacute;sultats (" + nombreTotal + ")</a></div>";
			tableau_resultat.push(new Array(titre,codePostal,lat,lng,contenu));
			
			//marker = createMarker(point,titre,tab[i],imageSRC);
			//map.addOverlay(marker);
			/*
			clientgeocoder.getLatLng(literalInfos,function(p){
    			if(p){
    				marker = createMarker(p,titre,tab[i],imageSRC);
    				//alert(marker.value);
        		map.addOverlay(marker);
        		setTimeout("k++",2000);
        		//resultbounds.extend(p);
        		//map.setZoom(map.getBoundsZoomLevel(resultbounds));
     				//map.panTo(resultbounds.getCenter());
    			}else{
    				alert(literalInfos + " : n'est pas connu sur googlemaps");
    				
    			}
    			})
    			*/
    			
      }
      placerMarkers();
      /*
      taille=tableau_resultat.length;
			timer_carte(0);
     */
     /*
     if(map){
     	map.setZoom(map.getBoundsZoomLevel(resultbounds));
     	map.panTo(resultbounds.getCenter());
     	}
     */
     	
    //alert( variables2.length );
    /*
    for (var i=0; i < variables2.childNodes.length; i++) {
    	container.innerHTML += "valeur : " + variables2.childNodes[i].firstChild.nodeValue + "<br/>";
      }
    */
  }

}

function cleanWhitespace(node) {
	
	for ( var j = 0; j < node.childNodes.length; j++) {
		var childNode = node.childNodes[j];
		if ((childNode.nodeType == TEXT_NODE)&&(!notWhitespace.test(childNode.nodeValue))) {
			
			node.removeChild(node.childNodes[j]);
			j--;
		}
		
		if (childNode.nodeType == ELEMENT_NODE) 
			cleanWhitespace(childNode);
		}
		return node;
}


function handlerFunction() {
  if (XMLHttp.readyState == 4) {
  	var container = document.getElementById('carte_test');
    container.innerHTML = "Returned data: " + XMLHttp.responseText;
  }
}
function processQuery(){
	var mURL = "/requests/request";
	var data = "word1=JavaScript&word2=Phrasebook";
	$.post(mURL, data, callback, "xml");
}
function callback(data,textstatus){
	if ( textstatus == "success" ) {
		alert('Ok');
		var container = $('carte_test');
    var variables = $('variables',data);
    alert(variables.childNodes.length);
    for (var i=0; i < variables.childNodes.length; i++) {
    	container.innerHTML += "valeur : " + variables.childNodes[i].nodeValue;
      }
	}
}
/*YKO : fonction de mise à jour de la carte*/
function updateMap(){
  var ids = new Array('cree_alert', 'cree_alert_',
                  'cree_recherche_favorite', 'cree_recherche_favorite_');
  for (i = 0 ; i < ids.length ; i++) {
    var a = document.getElementById(ids[i]);
  	if (a) {
  	  a.firstChild.nodeValue = ' ';
  	  a.style.backgroundImage = 'none';
  	}
//	    a.style.display = 'none';
  }

	var postDataes = getDataesForMap();
	//alert(postDataes);
	getDataes(postDataes);
}
/* Fin fonction de mise à jour de la carte*/

/*YKO : fonction de récuperation des données du formulaire */
function getDataesForMap(){
		var inputForm = document.getElementById('full_liste_annonce_recherche');
		var inputFormList = inputForm.getElementsByTagName('input');
		var dataes = "";
		for( i = 0 ; i < inputFormList.length ; i++){
			if( (inputFormList[i].type == "checkbox")&&( !inputFormList[i].checked) )
				continue;
		
			if( ( inputFormList[i].value ) && !( /\s/.test(inputFormList[i].value) ) ){
						var n1 = inputFormList[i].name;
				var n2 = inputFormList[i].value;
				
				dataes += n1 + "=" + n2 + "&";
			}
		}
		return dataes;
}
/* Fin fonction de mise à jour de la carte*/
function clickMap(cp){
	var a = document.getElementById('situation_geographique');
	a.value = cp;
	var b = document.getElementById('full_liste_annonce_recherche');
	b.submit()
	}

function annoncedetail(lien, node, cp)
{
        
	  var adresse = "/"+lien+"/"+node+"?click_bulle_cp="+cp;
	
	  //document.form_tri.action=adresse;
	  
	  var a = document.getElementById('situation_geographique');
	 a.value = cp;
	
	  var b = document.getElementById('full_liste_annonce_recherche');
	   b.action=adresse;
	  b.submit()
           // alert(adresse);
}


function annoncedetailajax(lien, cp)
{
         var lien_form=lien.href;
    
         var a = document.getElementById('situation_geographique');
         a.value = cp;
	
	  var b = document.getElementById('full_liste_annonce_recherche');
	   b.action=lien_form;
	  b.submit()
	  
   
     
     }
     

function annoncesuivant(lien)
{
          var lien_form=lien.href;
	  var b = document.getElementById('resul_rech_suiv');
	  b.action=lien_form;
	  b.submit()
	
   
     }