var componentHeight = null;
var p_partner_viewer = null;
var zoom_done = false;

function updateCoordinates(address_1, address_2, zip_code, city, country, regionId, attribute1, attribute2, attribute3, attribute4, upperLeftCornerX, upperLeftCornerY, lowerRightCornerX, lowerRightCornerY, pPartnerViewer, autoZoom){
	p_autoZoom = autoZoom;
  var urlServlet = "/servlet/getPartners"
  +"?address_1="+address_1+"&address_2="+address_2+"&zip_code="+zip_code+"&city="+city+"&country="+country+"&regionId="+regionId
  +"&attribute1="+attribute1+"&attribute2="+attribute2+"&attribute3="+attribute3+"&attribute4="+attribute4
  +"&upperLeftCornerX="+upperLeftCornerX+"&upperLeftCornerY="+upperLeftCornerY
  +"&lowerRightCornerX="+lowerRightCornerX+"&lowerRightCornerY="+lowerRightCornerY
  +"&pPartnerViewer="+pPartnerViewer;
  xhrPartners = getXMLHttpRequest();    
	xhrPartners.onreadystatechange = handlePartnersHttpResponse;
	xhrPartners.open("GET", urlServlet, true);
	xhrPartners.send(null);
}

function getXMLHttpRequest(){
	var xhr = null;
	if(window.XMLHttpRequest) xhr = new XMLHttpRequest();
	else if(window.ActiveXObject){
		try{
			xhr = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e){
			xhr = new ActiveXObject("Microsoft.XMLHTTP");
		}
	}
	else xhr = false;
	return xhr;
}

function handlePartnersHttpResponse(){	
  if(xhrPartners.readyState == 4 && xhrPartners.status == 200){	
    response = xhrPartners.responseXML.documentElement;
    if(response != null){
      response = cleanXML(xhrPartners.responseXML.documentElement);
      createPartners(response);
    }
  }	
}

function cleanXML(docElement){
	var node = docElement.getElementsByTagName('*');
	for(i = 0; i < node.length; i++){
		a = node[i].previousSibling;
		if(a && a.nodeType == 3) nodeCleaner(a);
		b = node[i].nextSibling;
		if(b && b.nodeType == 3) nodeCleaner(b);
	}
	return docElement;
}

function nodeCleaner(n){
	if(!n.data.replace(/\s/g,'')) n.parentNode.removeChild(n);
}

function createPartners(response){
	var partners = response.getElementsByTagName("partner");
  /* Gets some values */
  var partner_no_result = response.getElementsByTagName("partner_no_result").item(0).firstChild.nodeValue;
  var partner_searchpage = response.getElementsByTagName("partner_locator_search_label").item(0).firstChild.nodeValue;
  var partner_phone = response.getElementsByTagName("partner_phone").item(0).firstChild.nodeValue;
  var partner_fax = response.getElementsByTagName("partner_fax").item(0).firstChild.nodeValue;
  var partner_website = response.getElementsByTagName("partner_website").item(0).firstChild.nodeValue;
  var partner_email_contact = response.getElementsByTagName("partner_email_contact").item(0).firstChild.nodeValue;
  var partner_viewer_url = response.getElementsByTagName("p_partner_viewer").item(0).firstChild.nodeValue;
  var partner_locator_attributes_label = response.getElementsByTagName("partner_locator_attributes_label").item(0).firstChild.nodeValue;
 	
 	clearPois();

	for(i=0 ; i<partners.length ; i++){
		var singlePartner = partners.item(i);
		addToMap(singlePartner);
	}
	
	if (p_autoZoom == "true" && !zoom_done){
		zoom_done = true;
		zoomOnPOICanvas();
	}
}

function getElementsByClassName(classname, node) {
  if(!node) {
    node = document.getElementsByTagName("body")[0];
  }
  
  var a = [];
  var re = new RegExp('\\b' + classname + '\\b');
  var els = node.getElementsByTagName("*");
  
  for(var i=0,j=els.length; i<j; i++) {
    if(re.test(els[i].className)) {
      a.push(els[i]);
    }
  }
  
  return a;
}

function max(a,b) {
  if(a > b) return a; 
  else return b; 
}

function addToMap(singlePartner){
	var id = singlePartner.getElementsByTagName("id").item(0) != null && singlePartner.getElementsByTagName("id").item(0).firstChild != null ? singlePartner.getElementsByTagName("id").item(0).firstChild.nodeValue : "";
  var companyName = singlePartner.getElementsByTagName("companyName").item(0) != null && singlePartner.getElementsByTagName("companyName").item(0).firstChild != null ? singlePartner.getElementsByTagName("companyName").item(0).firstChild.nodeValue : "";
  var coordinateX = singlePartner.getElementsByTagName("coordinateX").item(0) != null && singlePartner.getElementsByTagName("coordinateX").item(0).firstChild != null ? singlePartner.getElementsByTagName("coordinateX").item(0).firstChild.nodeValue : "";
  var coordinateY = singlePartner.getElementsByTagName("coordinateY").item(0) != null && singlePartner.getElementsByTagName("coordinateY").item(0).firstChild != null ? singlePartner.getElementsByTagName("coordinateY").item(0).firstChild.nodeValue : "";
	drawPoi(id, companyName, coordinateX, coordinateY);
}

