/*
 * Browser compatibility Mozilla Firefox, IE 5+, Chrome
 * */

function CustomBrowserXMLObject() {
	var ieVersions = new Array(["Microsoft.XmlDom","Microsoft.XMLHTTP"],
				               ["MSXML.DOMDocument","Microsoft.XMLHTTP"],
				               ["Msxml2.DOMDocument","MSXML2.XMLHTTP"]);
	var xmlHttp = null;
	var xmlDoc = null;
	var client = "";
	
	function initialize(){
		if(window.ActiveXObject){// IE Older 5.0+ - 7.0
			var i,len = ieVersions.length;
			for(i = 0;i<len ; i++){
				try{
					xmlDoc = new ActiveXObject(ieVersions[i][0]);
					xmlHttp = new ActiveXObject(ieVersions[i][1]);
					client = "ie";
					break;
				}catch(e1){}
			}
		}else if(window.XMLHttpRequest){// Firefox, Opera 8.0+, Safari
			xmlHttp = new XMLHttpRequest();
			xmlDoc = document.implementation.createDocument("", "", null);
			client = navigator.userAgent.toLowerCase().indexOf('chrome')>-1?"chrome":"mozilla";			
		}else{
			client = "Unknown Client";
		}
	}
	
	this.operationOnXML = function(url,callback){
		if(this.getClient() == "ie"){ 
			//alert("@ IE End");
			xmlDoc.async = false;
			xmlDoc.onreadystatechange = function() {
				if (xmlDoc.readyState == 4) {
					callCallback();
				}
			};
			xmlDoc.load(url);
		}else if(this.getClient() == "mozilla"){
			//alert("@ Mozilla End");
			//xmlDoc = document.implementation.createDocument("", "", null);
			
			xmlDoc.load(url);
			xmlDoc.onload = function() {
				//alert("Mozilla Load Time : "+(new Date().getTime()-tmpTime));
				callCallback();
			}
		}else if(this.getClient() == "chrome"){
			xmlhttp = this.getXMLHttpObject();
			xmlhttp.open("GET",url,false);
			xmlhttp.send(null);
			xmlDoc = xmlhttp.responseXML;
			callCallback();
		}
		
		function callCallback(){
			//alert("Calling callback : ");
			new callback;
		}
	}
	
	this.getXMLHttpObject = function(){
		if(xmlHttp == null){
			initialize();
		}
		return xmlHttp;
	}
	
	this.getXMLDocObject = function(url){
		if(xmlDoc == null){
			initialize();
		}
		return xmlDoc;
	}
	
	this.getClient = function(){
		if(xmlDoc == null){
			initialize();
		}
		return client;
	}
}

function initializeDairyMarker(type,category,typeOfJoin){
	var tmpTime = new Date().getTime();
	var xmlDoc = null;
	
	var url = "DairyMarker.sdp?category="+category+"&typeOfJoin="+typeOfJoin;
	
	var browserObj = new CustomBrowserXMLObject();
	//xmlDoc = browserObj.getXMLDocObject();
	
	browserObj.operationOnXML(url,function(){
		//alert("Called Callback");
		xmlDoc = browserObj.getXMLDocObject();
		var htmlMessage = null;
		
		var paramArray = new Array( ["0","0","MPCS"],
									["0","3","CC"]);
		var markerArray = [];
		
		var rootNode = null;
		var locNodeList = null;
		var locDetails = null;
		var locLen,locItr ;
		
		var message = null;
		var statusCode = null;
		var categoryIco = null;
		var iconTypeId = null;
		var iconId = null;
		var details = null;
		
		try{
			rootNode = xmlDoc.documentElement;
			statusCode = parseInt(rootNode.childNodes[0].attributes[0].nodeValue);
			message = rootNode.childNodes[1];
			
			if(statusCode == 1){
				locNodeList = rootNode.childNodes[2];
				locLen = locNodeList.childNodes.length;
				
				for(locItr = 0; locItr<locLen; locItr++){
					locDetails = locNodeList.childNodes[locItr];
					
					/* Icon Id initialization */
					categoryIco = locDetails.attributes[5].nodeValue;
					iconTypeId = "0";
					if(category == "MPCS"){
						iconId = "0";
					}else if(category == "CC"){
						iconId = "3";
					}
					
					markerArray.push([new GLatLng(locDetails.attributes[0].nodeValue,locDetails.attributes[1].nodeValue),
									  [[iconTypeId,iconId],
									   ["District",locDetails.attributes[9].nodeValue],
									   ["Rt Name",locDetails.attributes[3].nodeValue],
									   ["Category",locDetails.attributes[4].nodeValue],
									   ["Altitude",locDetails.attributes[5].nodeValue]]
									 ]);
				}
				//alert("DATA : "+markerArray);
				showHideDairyMarker([paramArray,markerArray],true,type,category,typeOfJoin);
			}else{
				alert("No Data Found");
			}
		}catch(e){
			alert("Exc[Dairy] : "+e);
		}
	});
}

function initializeTourismMarker(type,category){
	var tmpTime = new Date().getTime();
	var xmlDoc = null;
	
	var url = "TourismMarker.sdp?category="+category;
	
	var browserObj = new CustomBrowserXMLObject();
	//xmlDoc = browserObj.getXMLDocObject();
	
	browserObj.operationOnXML(url,function(){
		//alert("Called Callback");
		xmlDoc = browserObj.getXMLDocObject();
		var htmlMessage = null;
		
		var paramArray = new Array( ["1","0","Leisure"],
									["1","1","Pilgrim"],
									["1","2","Hotels"]);
		var markerArray = [];
		
		var rootNode = null;
		var locNodeList = null;
		var locDetails = null;
		var locLen,locItr ;
		
		var message = null;
		var statusCode = null;
		var categoryIco = null;
		var iconTypeId = null;
		var iconId = null;
		var details = null;
		
		try{
			rootNode = xmlDoc.documentElement;
			statusCode = parseInt(rootNode.childNodes[0].attributes[0].nodeValue);
			message = rootNode.childNodes[1];
			
			if(statusCode == 1){
				locNodeList = rootNode.childNodes[2];
				locLen = locNodeList.childNodes.length;
				
				for(locItr = 0; locItr<locLen; locItr++){
					locDetails = locNodeList.childNodes[locItr];
					
					/* Icon Id initialization */
					categoryIco = locDetails.attributes[5].nodeValue;
					iconTypeId = "1";
					if(category == "Leisure"){
						iconId = "0";
					}else if(category == "Pilgrim"){
						iconId = "1";
					}else if(category == "Hotels"){
						iconId = "2";
					}
					
					markerArray.push([new GLatLng(locDetails.attributes[0].nodeValue,locDetails.attributes[1].nodeValue),
									  [[iconTypeId,iconId],
									   ["Name",locDetails.attributes[5].nodeValue],
									   ["Type",locDetails.attributes[3].nodeValue+"("+locDetails.attributes[4].nodeValue+")"],
									   ["Town",locDetails.attributes[6].nodeValue],
									   ["Taluka",locDetails.attributes[7].nodeValue],
									   ["District",locDetails.attributes[8].nodeValue]]
									 ]);
				}
				//alert("DATA : "+markerArray);
				showHideTourismMarker([paramArray,markerArray],true,type,category);
			}else{
				alert("No Data Found");
			}
		}catch(e){
			alert("Exc[Tourism Marker] : "+e);
		}
	});
}

function initializeAgricultureMarker(type,category){
	var tmpTime = new Date().getTime();
	var xmlDoc = null;
	
	var url = "AgricultureMarker.sdp?category="+category;
	
	var browserObj = new CustomBrowserXMLObject();
	//xmlDoc = browserObj.getXMLDocObject();
	
	browserObj.operationOnXML(url,function(){
		//alert("Called Callback");
		xmlDoc = browserObj.getXMLDocObject();
		var htmlMessage = null;
		
		var paramArray = new Array( ["2","0","Agri Inputs Shops"],
									["2","1","Coop Banks"]);
		var markerArray = [];
		
		var rootNode = null;
		var locNodeList = null;
		var locDetails = null;
		var locLen,locItr ;
		
		var message = null;
		var statusCode = null;
		var categoryIco = null;
		var iconTypeId = null;
		var iconId = null;
		var details = null;
		
		try{
			rootNode = xmlDoc.documentElement;
			statusCode = parseInt(rootNode.childNodes[0].attributes[0].nodeValue);
			message = rootNode.childNodes[1];
			
			if(statusCode == 1){
				locNodeList = rootNode.childNodes[2];
				locLen = locNodeList.childNodes.length;
				
				for(locItr = 0; locItr<locLen; locItr++){
					locDetails = locNodeList.childNodes[locItr];
					
					/* Icon Id initialization */
					categoryIco = locDetails.attributes[5].nodeValue;
					iconTypeId = "2";
					if(category == "Agri inputs shop"){
						iconId = "0";
					}else if(category == "Coop Bank"){
						iconId = "1";
					}
					
					markerArray.push([new GLatLng(locDetails.attributes[0].nodeValue,locDetails.attributes[1].nodeValue),
									  [[iconTypeId,iconId],
									   ["Name",locDetails.attributes[4].nodeValue],
									   ["Type",locDetails.attributes[3].nodeValue],
									   ["Altitude",locDetails.attributes[7].nodeValue],
									   ["Location",locDetails.attributes[5].nodeValue],
									   ["District",locDetails.attributes[6].nodeValue]]
									 ]);
				}
				//alert("DATA : "+markerArray);
				showHideAgricultureMarker([paramArray,markerArray],true,type,category);
			}else{
				alert("No Data Found");
			}
		}catch(e){
			alert("Exc[Agriculture Marker] : "+e);
		}
	});
}

function initializeTownFontMarker(type,category){
	var tmpTime = new Date().getTime();
	var xmlDoc = null;
	
	var url = "TownFontMarker.sdp";
	
	var browserObj = new CustomBrowserXMLObject();
	//xmlDoc = browserObj.getXMLDocObject();
	
	browserObj.operationOnXML(url,function(){
		//alert("Called Callback");
		xmlDoc = browserObj.getXMLDocObject();
		var htmlMessage = null;
		
		var paramArray = new Array( ["1","6","Town Font"]);
		var markerArray = [];
		
		var rootNode = null;
		var locNodeList = null;
		var locDetails = null;
		var locLen,locItr ;
		
		var message = null;
		var statusCode = null;
		var iconTypeId = null;
		var iconId = null;
		var details = null;
		
		try{
			rootNode = xmlDoc.documentElement;
			statusCode = parseInt(rootNode.childNodes[0].attributes[0].nodeValue);
			message = rootNode.childNodes[1];
			
			if(statusCode == 1){
				locNodeList = rootNode.childNodes[2];
				locLen = locNodeList.childNodes.length;
				
				for(locItr = 0; locItr<locLen; locItr++){
					locDetails = locNodeList.childNodes[locItr];
					
					/* Icon Id initialization */
					iconTypeId = "1";
					iconId = "6";
					
					markerArray.push([new GLatLng(locDetails.attributes[0].nodeValue,locDetails.attributes[1].nodeValue),
									  [[iconTypeId,iconId],
									   ["Name",locDetails.attributes[3].nodeValue]]
									 ]);
				}
				//alert("DATA : "+markerArray);
				showHideTownFontMarker([paramArray,markerArray],true,type,category);
			}else{
				alert("No Data Found");
			}
		}catch(e){
			alert("Exc[Town Font Marker] : "+e);
		}
	});
}

function initializeMilkRouteMarker(type,category){
	var tmpTime = new Date().getTime();
	var xmlDoc = null;
	
	var url = "MilkRouteMarker.sdp";
	
	var browserObj = new CustomBrowserXMLObject();
	//xmlDoc = browserObj.getXMLDocObject();
	
	browserObj.operationOnXML(url,function(){
		//alert("Called Callback");
		xmlDoc = browserObj.getXMLDocObject();
		var htmlMessage = null;
		
		var paramArray = new Array( ["3","0","Milk Route"]);
		var markerArray = [];
		
		var rootNode = null;
		var locNodeList = null;
		var locDetails = null;
		var locLen,locItr ;
		
		var message = null;
		var statusCode = null;
		var iconTypeId = null;
		var iconId = null;
		var details = null;
		
		try{
			rootNode = xmlDoc.documentElement;
			statusCode = parseInt(rootNode.childNodes[0].attributes[0].nodeValue);
			message = rootNode.childNodes[1];
			
			if(statusCode == 1){
				locNodeList = rootNode.childNodes[2];
				locLen = locNodeList.childNodes.length;
				
				for(locItr = 0; locItr<locLen; locItr++){
					locDetails = locNodeList.childNodes[locItr];
					
					/* Icon Id initialization */
					iconTypeId = "3";
					iconId = "0";
					
					markerArray.push([new GLatLng(locDetails.attributes[0].nodeValue,locDetails.attributes[1].nodeValue),
									  [[iconTypeId,iconId],
									   ["Altitude",locDetails.attributes[5].nodeValue],
									   ["Major Marker",locDetails.attributes[7].nodeValue],
									   ["District",locDetails.attributes[9].nodeValue],
									   ["MPCS",locDetails.attributes[10].nodeValue]]
									 ]);
				}
				//alert("DATA : "+markerArray);
				showHideMilkRouteMarker([paramArray,markerArray],true,type,category);
			}else{
				alert("No Data Found");
			}
		}catch(e){
			alert("Exc[Town Font Marker] : "+e);
		}
	});
}
function setBoundingBoxOfLayer(type,field,csMap){
	var boundBox = null;
	
	var xmlDoc = null;
	
	var url = "GetBoundingBoxLayer.sdp?type="+type+"&field="+field;
	
	var browserObj = new CustomBrowserXMLObject();
	
	browserObj.operationOnXML(url,function(){
		//alert("Called Callback");
		xmlDoc = browserObj.getXMLDocObject();
		
		var rootNode = null;
		var boxNodeList = null;
		var boxDetails = null;
		var boxLen;
		
		var statusCode = null;
		var swPoint = null;
		var nePoint = null;
		try{
			rootNode = xmlDoc.documentElement;
			statusCode = parseInt(rootNode.childNodes[0].attributes[0].nodeValue);
			
			if(statusCode == 1){
				boxNodeList = rootNode.childNodes[1];
				boxLen = boxNodeList.childNodes.length;
				
				if(boxLen == 2){
					boxDetails = boxNodeList.childNodes[0];
					swPoint = new GLatLng(boxDetails.attributes[1].nodeValue,boxDetails.attributes[2].nodeValue);
					
					boxDetails = boxNodeList.childNodes[1];
					nePoint = new GLatLng(boxDetails.attributes[1].nodeValue,boxDetails.attributes[2].nodeValue);
					
					boundBox = new GLatLngBounds(swPoint,nePoint);
					
					// Setting Boundbox Zoom level to supplied map
					//alert('Here');
					csMap.setCenterFromBoundbox(boundBox);
				}				
			}
		}catch(e){
			alert("Exc[Boundboc Creation] : "+e);
		}
	});
}

function setBoundingBoxOfMarker(csMap,type,field,wherefield,value,like){
	var boundBox = null;
	
	var xmlDoc = null;
	
	var url = "GetBoundingBoxMarker.sdp?" +
							"type="+type+
							"&field="+field+
							"&where="+wherefield+
							"&value="+value+
							"&like="+like;
	//alert(url);
	var browserObj = new CustomBrowserXMLObject();
	
	browserObj.operationOnXML(url,function(){
		//alert("Called Callback");
		xmlDoc = browserObj.getXMLDocObject();

		var rootNode = null;
		var boxNodeList = null;
		var boxDetails = null;
		var boxLen;

		var statusCode = null;
		var swPoint = null;
		var nePoint = null;
		try{
			rootNode = xmlDoc.documentElement;
			statusCode = parseInt(rootNode.childNodes[0].attributes[0].nodeValue);
			
			if(statusCode == 1){
				boxNodeList = rootNode.childNodes[1];
				boxLen = boxNodeList.childNodes.length;
				
				if(boxLen == 2){
					boxDetails = boxNodeList.childNodes[0];
					swPoint = new GLatLng(boxDetails.attributes[1].nodeValue,boxDetails.attributes[2].nodeValue);
					
					boxDetails = boxNodeList.childNodes[1];
					nePoint = new GLatLng(boxDetails.attributes[1].nodeValue,boxDetails.attributes[2].nodeValue);
					
					boundBox = new GLatLngBounds(swPoint,nePoint);
					
					// Setting Boundbox Zoom level to supplied map
					//alert('Here');
					csMap.setCenterFromBoundbox(boundBox);
				}
			}
		}catch(e){
			alert("Exc[Boundbox Creation] : "+e);
		}
	});
}

function showSchoolDetailsAjax(id,target){
	var url = "jspResources/school/schoolDetails.jsp?id="+id;
	//alert("Ajax Called : "+id);
    var xmlDoc = null;
    var browserObj = new CustomBrowserXMLObject();
    var xmlhttpObj = browserObj.getXMLHttpObject();
	
    xmlhttpObj.onreadystatechange = function(){
        if (xmlhttpObj.readyState == 4 && xmlhttpObj.status == 200){
        	target.innerHTML = xmlhttpObj.responseText;        	
        }
    }
	
    xmlhttpObj.open("GET",url,true);
    xmlhttpObj.send(null);
}

function editSchoolDetailsAjax(id,target){
	var url = 'jspResources/school/schoolDetailsEdit.jsp?id='+id;
	//alert("Ajax Called : "+typeCode);
    var xmlDoc = null;
    var browserObj = new CustomBrowserXMLObject();
    var xmlhttpObj = browserObj.getXMLHttpObject(); 
    //alert(url);
    var data = null;
    
    xmlhttpObj.onreadystatechange=function(){
        if (xmlhttpObj.readyState == 4 && xmlhttpObj.status == 200){
        	target.innerHTML = xmlhttpObj.responseText;
        }else if(xmlhttpObj.readyState == 2 || xmlhttpObj.readyState == 3){
        }
    }
    xmlhttpObj.open("POST",url,true);
    xmlhttpObj.send(null);
}

