/* GLOBAL VARIABALES */
var xmlobject;
var googlemap;
var zoomlevel;
/* AJAX Object Initialization*/

function getXMLHttpObject() {
    if (window.XMLHttpRequest){
        // If IE7, Mozilla, Safari, etc: Use native object
        var xmlobject = new XMLHttpRequest()
    } else {
        if (window.ActiveXObject){
            // ...otherwise, use the ActiveX control for IE5.x and IE6
            var xmlobject = new ActiveXObject("Microsoft.XMLHTTP"); 
        }
    }
	return xmlobject;
}
/* google map locator */
function googleMaps(maplocation,width,height) 
{
	if(!width)
		width = 244;
	if(!height)
		height = 145;
		
	zoomlevel = 7;
	if(!maplocation)
	{
		maplocation = "India";
		zoomlevel = 2;
	}

    var mapOptions = {
		zoom: zoomlevel,
		mapTypeControl: false,
		navigationControl: false,
		mapTypeId: google.maps.MapTypeId.HYBRID
    }

    map = new google.maps.Map(document.getElementById("mloutput"), mapOptions);
	geocoder = new google.maps.Geocoder();
	
	if (geocoder) 
	{
		geocoder.geocode(
			{'address': maplocation}, 
			function(results, status) 
			{
				if (status == google.maps.GeocoderStatus.OK) 
				{
					if (status != google.maps.GeocoderStatus.ZERO_RESULTS) 
					{
						map.set_center(results[0].geometry.location);
						var marker = new google.maps.Marker(
							{
								map: map, 
								position: results[0].geometry.location
							}
						);
					}else{
						alert("No results found");
					}
				}else{
					alert("Geocode was not successful for the following reason: " + status);
				}
			}
		);
    }
}

/* mobile locator - with maps */
function gmobilelocator(fldmobilenumberID) {
	mobilelocator(fldmobilenumberID, gmobilelocator_callback);
}
//simple mobilelocator note that php path is different
function smobilelocator(fldmobilenumberID) {

    var fldmobilenumber = document.getElementById(fldmobilenumberID);
    var mobilenumber = fldmobilenumber.value;

    /* get ajax object */
   // if(xmlobject == null) 
    {
        xmlobject = getXMLHttpObject();
        if(xmlobject == null) {
            alert("Ooops. Browser is not supported");
            return;
        }
    }
    if ((mobilenumber.length<10) || (mobilenumber==""))
    {
        alert("Please enter a Correct Mobile Number");
        return false;
    }
    document.getElementById("mloutput").innerHTML = "<img src='../images/spinner.gif'/>";	
    /* dont process until length of 8 */
    if(mobilenumber.length >= 10) {
        var moblocurl = "../php/mobilelocator.php?mo=" + mobilenumber;
        xmlobject.onreadystatechange = smobilelocator_callback;
        xmlobject.open("GET", moblocurl, true);
        xmlobject.send(null);
        return true;
    }
}

/* mobile locator - without maps */
function rmobilelocator(fldmobilenumberID) {
	/* reset previous selection */
	var fldmobilenumber = document.getElementById(fldmobilenumberID).value;
	if(fldmobilenumber.length >= 10) {
		resetvalue("ezlocation");
		resetvalue("ezservprov");
		mobilelocator(fldmobilenumberID, rmobilelocator_callback);
	}
}
function memmobloc(fldmobilenumberID) {
	var fldmobilenumber = document.getElementById(fldmobilenumberID).value;
	if(fldmobilenumber.length >= 9) {
		mobilelocator(fldmobilenumberID, memmobloc_callback);
	}
}

/* mobile locator */
function mobilelocator(fldmobilenumberID, callbackmethod) {
	var fldmobilenumber = document.getElementById(fldmobilenumberID);
	var mobilenumber = fldmobilenumber.value;
	/* get ajax object */
		xmlobject = getXMLHttpObject();
		if(xmlobject == null) {
			alert("Ooops. Browser is not supported");
			return;
		}
	
	/* remove leading zeros*/
	if(mobilenumber.charAt(0) == '0') {
		alert("oops! Prefix '0' is not required for Locating your Mobile Number");
		fldmobilenumber.value = "";
		return false;
	}
	
	/* dont process until length of 8 */
	if(mobilenumber.length >= 9) {
		var moblocurl = "../php/mobilelocator.php?mo=" + mobilenumber;
		xmlobject.onreadystatechange = callbackmethod;
		xmlobject.open("GET", moblocurl, true);
		xmlobject.send(null);
		return true;
	}else{
		alert("Ooops. Mobile Number cannot be less than 10");
	}
}
function smobilelocator_callback() {
	if(xmlobject.readyState == 4 || xmlobject.readyState == "complete") {
		document.getElementById("mloutput").innerHTML = xmlobject.responseText;
	}
}
function memmobloc_callback() {
	if(xmlobject.readyState == 4 || xmlobject.readyState == "complete") {
		document.getElementById("valmono").innerHTML = "";
		document.getElementById("memmoblocrst").innerHTML = xmlobject.responseText;
	}
}

/* ajax callback - with maps */
function gmobilelocator_callback() {
	if(xmlobject.readyState == 4 || xmlobject.readyState == "complete") {
		var location  = xmlobject.responseText;
		var delimiter = location.indexOf(",")
		var provider = location.substring(0, delimiter);
		
		document.getElementById("mloutputlabel").innerHTML = location;
		if(delimiter == -1) {
			/* invalid mobile number */
			googleMaps();
			return;
		}
		googleMaps(location.substring(delimiter+1, location.length),244,145);
	}
}
/* ajax callback - without maps */
function rmobilelocator_callback() {
	if(xmlobject.readyState == 4 || xmlobject.readyState == "complete") {
		var location  = xmlobject.responseText;
		var delimiter = location.indexOf(",")
		var provider = location.substring(0, delimiter);

		selectvalue("ezlocation", location);
		selectvalue("ezservprov", provider);
		document.getElementById("mloutputlabel").innerHTML = location;

		selectvalue("tarifflocation", location);
		selectvalue("tariffserpro", provider);
		
		if(delimiter == -1) {
			/* invalid mobile number */
			googleMaps();
			return;
		}
		googleMaps(location.substring(delimiter+1, location.length),244,145);
	}
}
/* resets combobox value */
function resetvalue(fldprovider) {
	fldobject = document.getElementById(fldprovider);
	fldobject.selectedIndex=0;
}
/* selects the combo box with a specified value */
function selectvalue(fldprovider, sprovider) {
	fldobject = document.getElementById(fldprovider);
	for(var count=1;count<fldobject.length;count++) {
		if(sprovider.search(fldobject.options[count].value) != -1) {
			fldobject.selectedIndex=count;
			break;
		}
	}
}
/*HIK-Reviewed*/
