var address = '';var message = '';var count = 0;var baseAddr = '';var basePoint = null;var pointsArr;var multijobs;var baseMarker;var currentPoint;var currentZoom;var addressgiven = true;var userRole = '';var jobSeeker = 'jobseeker';var recruiter = 'recruiter';var distanceLimit = -1;function initializeGMaps(role,_distanceLimit) {var mapDivID = document.getElementById("DisplayJobsMap");baseAddr = document.getElementById(mapsPrefix+'hdn_baseAddress').value;if(baseAddr.length < 4) {addressgiven = false;}
if(_distanceLimit == null || _distanceLimit == "undefined")
{distanceLimit = -1;}
else
{distanceLimit = _distanceLimit;}
userRole = role;if(mapDivID) {if (GBrowserIsCompatible()) {map = new GMap2(mapDivID);geocoder = new GClientGeocoder();map.addControl(new GSmallMapControl());showBaseAddress(baseAddr);pointsArr = new Array();multijobs = new Array();}
}
}
function initializeMapsforFirefox(role) {var mapDivID = document.getElementById("DisplayJobsMap");userRole = role;if(mapDivID) {if (GBrowserIsCompatible()) {map = new GMap2(mapDivID);geocoder = new GClientGeocoder();map.addControl(new GSmallMapControl());}
}
}
function showBaseAddress(userAddress) 
{if (geocoder) {geocoder.getLatLng(userAddress,
function(point) {if (!point) {if(userAddress.indexOf(',') > 0)            
{userAddress = userAddress.substr(userAddress.indexOf(',')+1,userAddress.length);showBaseAddress(userAddress);}
} else {basePoint = point;baseAddr = userAddress;map.addOverlay(createBaseMarker(point,baseAddr));}
}
);}
}
function createBaseMarker(latlng,addr) 
{if(userRole == jobSeeker || userRole == "courses") 
{var guyIcon = new GIcon(G_DEFAULT_ICON);guyIcon.image = "/cssserver20091030/images/map_markers/man_arrow-0.png";guyIcon.transparent = "/cssserver20091030/images/map_markers/man-pick.png";guyIcon.iconSize = new GSize(45, 50);}else {var guyIcon = new GIcon(G_DEFAULT_ICON);guyIcon.image = "/cssserver20091030/images/map_markers/office.png";guyIcon.transparent = "/cssserver20091030/images/map_markers/man-pick.png";guyIcon.iconSize = new GSize(45, 50);}  
baseMarker = new GMarker(latlng,{icon: guyIcon});GEvent.addListener(baseMarker,"click", function(latlng) {if(userRole == jobSeeker)
{var myHtml = "<div style='width:280px'>Your current location is  <b>"+baseAddr + "</b><br/>Job distance calculated from this location. </div>";}
else if(userRole == "courses")
{var myHtml = "<div style='width:280px'>Your current location is  <b>"+baseAddr + "</b><br/>Training institute distance calculated from this location. </div>";}
else 
{var myHtml = "<div style='width:280px'>Your current location is  <b>"+baseAddr + "</b><br/>Jobprofiles distance calculated from this location. </div>";}
map.openInfoWindow(latlng, myHtml);var iw = map.getInfoWindow();baseMarker.openInfoWindowHtml(myHtml);});return baseMarker;}
function createMarker(id,latlng,distanceinKM) {var isItemFound = false;if(pointsArr.length > 0) {for(var i = 0;i< pointsArr.length;i++ ) {if(pointsArr[i] == latlng.toString()) {isItemFound = true;if(multijobs[latlng]) {multijobs[latlng] += 1;break;} else {multijobs[latlng] = 2;break;}
} 
}
if(!isItemFound) {pointsArr[pointsArr.length] = latlng.toString();}
} else {pointsArr[0] = latlng.toString();}
setMapMarkrerDetails(id,latlng.toString());if(userRole == jobSeeker || userRole == "courses") 
{var redIcon  = new GIcon(G_DEFAULT_ICON);var markerImage = (multijobs[latlng] ? multijobs[latlng] : 1) + ".png"
redIcon.image = "/cssserver20091030/images/map_markers/marker"+markerImage;markerOptions = {icon:redIcon };}else {var redIcon  = new GIcon(G_DEFAULT_ICON);var markerImage = (multijobs[latlng] ? multijobs[latlng] : 1) + ".png"
redIcon.image = "/cssserver20091030/images/map_markers/profile"+markerImage;markerOptions = {icon:redIcon };} 
var marker = new GMarker(latlng,markerOptions);marker.value = id;var noOfJobs = multijobs[latlng] ? multijobs[latlng] : 1;GEvent.addListener(marker,"click", function() {var maxHeight = (70 + noOfJobs * 20) < 300 ? (70 + noOfJobs * 20) : 300 ;var myHtml = "<div style='width:350px;height:"+maxHeight+"'>"+ getMapMarkrerDetails(id,latlng.toString(),distanceinKM,multijobs[latlng] ? multijobs[latlng] : 1 ) + "</div>";marker.openInfoWindowHtml(myHtml);var iw = map.getInfoWindow();marker.openInfoWindowHtml(myHtml);});return marker;}
function showAddress(id,MapAddress) {if (geocoder) {geocoder.getLatLng(
MapAddress,
function(point) {if (!point ) {if ( MapAddress.indexOf(',') > 0 ) 
{showAddress(id,MapAddress.substr(MapAddress.indexOf(',')+1,MapAddress.length));}
} else {var userDistance = addressgiven ? distace(basePoint,point) : -1;if(distanceLimit == -1)
{map.addOverlay(createMarker(id,point,userDistance));}
else           
{if(distanceLimit > userDistance)
{map.addOverlay(createMarker(id,point,userDistance));}
}
}
}
);}
}
function getMapCenter() 
{currentPoint = map.getCenter();currentZoom = map.getZoom();}
function setMapCenter()
{if(currentPoint)
{map.setCenter(currentPoint,currentZoom);} else {map.setCenter(new GLatLng(11, 4), 1);}    
}
function setmapcentertoJobseeker()
{map.setCenter(new GLatLng(15.501236, 78.54337), 4);}
function showMapCenter() {map.setCenter(new GLatLng(86, 25), 1);}
function refreshMap() {pointsArr = new Array();multijobs = new Array();}
function ShowAllDetails(jobsCount) {document.getElementById('toolTip').style.width = '300px'
document.getElementById('toolTip').style.height = '300px'
}
function distace(point1,point2) {point1 = point1 ? point1.toString() : new GLatLng(17.501236, 78.54337).toString();var lat1 = point1.split(',')[0];lat1 = ((lat1.indexOf('(') == -1)? lat1 : lat1.slice(1) ).parseDeg();var long1 = point1.split(',')[1];long1 = ((long1.indexOf(')') == -1 )? long1 : long1.slice(1,long1.length-1)).parseDeg()    
return LatLon.distHaversine(lat1,long1,point2.y.toString().parseDeg(),point2.x.toString().parseDeg()).toPrecision(4)   
}
function LatLon(lat, lon) {this.lat = lat;this.lon = lon;}
LatLon.distHaversine = function(lat1, lon1, lat2, lon2) {var R = 6371;var dLat = (lat2-lat1).toRad();var dLon = (lon2-lon1).toRad();lat1 = lat1.toRad(), lat2 = lat2.toRad();var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
Math.cos(lat1) * Math.cos(lat2) * 
Math.sin(dLon/2) * Math.sin(dLon/2);var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));var d = R * c;return d;}
String.prototype.parseDeg = function() {if (!isNaN(this)) return Number(this);var degLL = this.replace(/^-/,'').replace(/[NSEW]/i,'');var dms = degLL.split(/[^0-9.,]+/);for (var i in dms) if (dms[i]=='') dms.splice(i,1);switch (dms.length) {case 3:                                              
var deg = dms[0]/1 + dms[1]/60 + dms[2]/3600;break;case 2:                                              
var deg = dms[0]/1 + dms[1]/60;break;case 1:                                              
if (/[NS]/i.test(this)) degLL = '0' + degLL;var deg = dms[0].slice(0,3)/1 + dms[0].slice(3,5)/60 + dms[0].slice(5)/3600;break;default: return NaN;}
if (/^-/.test(this) || /[WS]/i.test(this)) deg = -deg;return deg;}
Number.prototype.toRad = function() {return this * Math.PI / 180;}
Number.prototype.toPrecision = function(fig) {if (this == 0) return 0;var scale = Math.ceil(Math.log(this)*Math.LOG10E);var mult = Math.pow(10, fig-scale);return Math.round(this*mult)/mult;}



