
var ajaxObjAPInRange;
var ajaxObjAPDetails;
var ajaxObjAPByCCZ;
var ajaxObjAPNumberInRange;
var resLabel = null;

function requestAccessPointsInRange(tlLat, tlLong, brLat, brLong, catList) {
	ajaxObjAPInRange = new XMLHttp(requestAPInRangeResultHandler);
	ajaxObjAPInRange.createXmlHttpRequestObject();    
    	
	requestNumberOfAccessPointsInRange(tlLat, tlLong, brLat, brLong, catList);
		
	var url = EXEC_QUERY_SCRIPT_URL + '?p=1&p1='+tlLat+'&p2='+tlLong+'&p3='+brLat+'&p4='+brLong+'&cat='+catList;
	ajaxObjAPInRange.sendRequest(url);		
	
}

function requestAPInRangeResultHandler() {
	if (ajaxObjAPInRange.xmlHttpObj.readyState == 4) {
		if (ajaxObjAPInRange.xmlHttpObj.status == 200) 	{
			/*
			try {
				if (netscape.security.PrivilegeManager.enablePrivilege) {
					netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserRead');
				}
			}
			catch (ex) {}
			*/
						
			xmlResponse = ajaxObjAPInRange.xmlHttpObj.responseXML;
			aps = xmlResponse.getElementsByTagName('accesspoint');
			
			var result = new Array();
			for (t=0; t< aps.length; t++) {
				//alert(aps[t].getElementsByTagName('apname')[0].childNodes[0].nodeValue);
				id = aps[t].getElementsByTagName('id')[0].childNodes[0].nodeValue;
				lat = aps[t].getElementsByTagName('latitude')[0].childNodes[0].nodeValue;
				long = aps[t].getElementsByTagName('longitude')[0].childNodes[0].nodeValue;
				acc = aps[t].getElementsByTagName('category')[0].childNodes[0].nodeValue;
				result[t] = new AccessPoint(id, lat, long, acc);				
			}
			addAccesspointsOnMap(result);
			if (map.getZoom() >= AP_DISPLAY) {
			    showResultsOnPage(result);
			}
		    else {
		        if (div) {
		            for (i=0;i<div.childNodes.length; i++)
		            div.removeChild(div.childNodes[i]);
		        }
		    }		    
		    if (searching) 
            {
	            map.removeControl(searching);
	        }           
		} 
	}
}

function requestNumberOfAccessPointsInRange(tlLat, tlLong, brLat, brLong, catList) {
    ajaxObjAPNumberInRange = new XMLHttp(requestNumberAPInRangeResultHandler);
	ajaxObjAPNumberInRange.createXmlHttpRequestObject();
	var url = EXEC_QUERY_SCRIPT_URL + '?p=4&p1='+tlLat+'&p2='+tlLong+'&p3='+brLat+'&p4='+brLong+'&cat='+catList;
	ajaxObjAPNumberInRange.sendRequest(url);
}

function requestNumberAPInRangeResultHandler() {
	if (ajaxObjAPNumberInRange.xmlHttpObj.readyState == 4) {
		if (ajaxObjAPNumberInRange.xmlHttpObj.status == 200) 	{
			/*
			try {
				if (netscape.security.PrivilegeManager.enablePrivilege) {
					netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserRead');
				}
			}
			catch (ex) {}
			*/
						
			//xmlResponse = ajaxObjAPNumberInRange.xmlHttpObj.responseXML;	
			//var apsinrange = xmlResponse.getElementsByTagName('apsnumber')[0].childNodes[0].nodeValue;
			
			//if (map.getZoom() >= AP_DISPLAY)
			//{
			//    if (apsinrange >= MAX_ACCESS_POINTS_DISPLAYED)
			//    {
			//         document.getElementById("apNrDiv").innerHTML = "Access points in rage: " + apsinrange + ". Showing only " + MAX_ACCESS_POINTS_DISPLAYED +". Please zoom in....";
			//    }
			//    else 
			//    {
			//        document.getElementById("apNrDiv").innerHTML = "Number of access points: " + apsinrange;
			//    }			    
			//}	
			/*if (searching) 
            {
	            map.removeControl(searching);
	        }     
	        */   				     		
		} 
	}
}


var apIDForResultHandler = 0;
var pinIDForResultHandler;

function requestDetailsForAccessPointWithPinId(pinID) {
	for (k = 0; k < accessPoints.length; k++) {
		if (accessPoints[k].PinID == pinID) {
			//populate the ap with data from db
			apIDForResultHandler = k;
			pinIDForResultHandler = pinID;				
			requestDetailsForAccessPoint(accessPoints[k].APId, marker);
		}
	}
}

function requestDetailsForAccessPoint(apid) {
	ajaxObjAPDetails = new XMLHttp(requestDetailsForAPResultHandler);
	ajaxObjAPDetails.createXmlHttpRequestObject();
	var url = EXEC_QUERY_SCRIPT_URL + '?p=2&p1='+apid;
	ajaxObjAPDetails.sendRequest(url);
}

function requestDetailsForAPResultHandler() {   
	if (ajaxObjAPDetails.xmlHttpObj.readyState == 4) {
		if (ajaxObjAPDetails.xmlHttpObj.status == 200) 	{
			/*
			try {
				if (netscape.security.PrivilegeManager.enablePrivilege) {
					netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserRead');
				}
			}
			catch (ex) {}
			*/			            
			var xmlResponse = ajaxObjAPDetails.xmlHttpObj.responseXML;									                                    
            
			accessPoints[apIDForResultHandler].APId = xmlResponse.getElementsByTagName('id')[0].childNodes[0].nodeValue;
			accessPoints[apIDForResultHandler].APName = xmlResponse.getElementsByTagName('apname')[0].childNodes[0].nodeValue;
						
			if (xmlResponse.getElementsByTagName('welcomemsg')[0].childNodes[0]) {
				accessPoints[apIDForResultHandler].Description = xmlResponse.getElementsByTagName('welcomemsg')[0].childNodes[0].nodeValue;
			} else {
				accessPoints[apIDForResultHandler].Description = "";
			}
			accessPoints[apIDForResultHandler].OwnerName = xmlResponse.getElementsByTagName('ownerid')[0].childNodes[0].nodeValue;
			accessPoints[apIDForResultHandler].Category = xmlResponse.getElementsByTagName('category')[0].childNodes[0].nodeValue;
			if (accessPoints[apIDForResultHandler].Category == 1) {
				accessPoints[apIDForResultHandler].Picture = AP_PICTURES_URL + "?" + accessPoints[apIDForResultHandler].APId;
			}
			else {
				accessPoints[apIDForResultHandler].Picture = getLargeImageForAccessModifier(accessPoints[apIDForResultHandler].Category);
				accessPoints[apIDForResultHandler].Description = "WiFi Out Enabled Hotspot";
			}
			//if (xmlResponse.getElementsByTagName('ownersite')[0].childNodes[0]) {
			//	accessPoints[apIDForResultHandler].HomeSite = xmlResponse.getElementsByTagName('ownersite')[0].childNodes[0].nodeValue;
			//} else {
			//	accessPoints[apIDForResultHandler].HomeSite = "";
			//}
			//if (xmlResponse.getElementsByTagName('ownerskypename')[0].childNodes[0]) {
			//	accessPoints[apIDForResultHandler].OwnerSkypeName = xmlResponse.getElementsByTagName('ownerskypename')[0].childNodes[0].nodeValue;
			//} else {
			//	accessPoints[apIDForResultHandler].OwnerSkypeName = "";
			//}
			if (xmlResponse.getElementsByTagName('address')[0].childNodes[0]) {
				accessPoints[apIDForResultHandler].Address = xmlResponse.getElementsByTagName('address')[0].childNodes[0].nodeValue;
			} else {
				accessPoints[apIDForResultHandler].Address = "";
			}
			if (xmlResponse.getElementsByTagName('city')[0].childNodes[0]) {
				accessPoints[apIDForResultHandler].City = xmlResponse.getElementsByTagName('city')[0].childNodes[0].nodeValue;
			} else {
				accessPoints[apIDForResultHandler].City = "";
			}			
			accessPoints[apIDForResultHandler].Latitude = xmlResponse.getElementsByTagName('latitude')[0].childNodes[0].nodeValue;
			accessPoints[apIDForResultHandler].Longitude = xmlResponse.getElementsByTagName('longitude')[0].childNodes[0].nodeValue;
			
			accessPoints[apIDForResultHandler].hasCompleteInfo = true;
            
            //create html info popup for an AP in utils.js
            resultHtml = buildAPDetailsPopupContent(accessPoints[apIDForResultHandler]);            						                  
            //AP on map clicked
            if (clickMarker) { 
                tableClicked = true;       
                map.openInfoWindow(clickMarker.getPoint(), resultHtml);  
                infoPopup=map.getInfoWindow();     
                clickMarker = null;
                //remove Search result
			    //document.getElementById("apAddress").innerHTML = "-";

            }
            //link in result table clicked
            else 
            {                                                               
                bigResult = "";
                bigResult = resultHtml;            
                map.openInfoWindow(map.getCenter(), bigResult);
                infoPopup=map.getInfoWindow();
				//map.openInfoWindow(map.getCenter(), resultHtml);
				//remove Search result
			    document.getElementById("apAddress").innerHTML = "-";
            }           
            
            if (searching) 
            {
	            map.removeControl(searching);
	        }           
		} 
	}
}

function closeMarker()
{
    clickMarker = null;
}

function requestAccessPointsByCountryCityZIP(country, city, zip) {
    tableClicked = false;
    if (map.getZoom() >= AP_DISPLAY) {
        ajaxObjAPByCCZ = new XMLHttp(requestAccessPointsByCountryCityZIPResultHandler);
        ajaxObjAPByCCZ.createXmlHttpRequestObject();
        var url = EXEC_QUERY_SCRIPT_URL + '?p=3&p1='+country+'&p2='+city+'&p3='+zip;
        ajaxObjAPByCCZ.sendRequest(url);    
    }
}

function requestAccessPointsByCountryCityZIPResultHandler() {
	// move forward only if the transaction has completed
	if (ajaxObjAPByCCZ.xmlHttpObj.readyState == 4) {
		// status of 200 indicates the transaction completed successfully
		if (ajaxObjAPByCCZ.xmlHttpObj.status == 200) 	{
			//for mozilla
			/*
			try {
				if (netscape.security.PrivilegeManager.enablePrivilege) {
					netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserRead');
				}
			}
			catch (ex) {}
			*/
			// extract the XML retrieved from the server
			xmlResponse = ajaxObjAPByCCZ.xmlHttpObj.responseXML;			
			if (map.getZoom() >= AP_DISPLAY)			
			    showResultsOnPage(xmlResponse);
			   
			if (searching) 
            {
	            map.removeControl(searching);
	        }           
		} 
	}
}
