var mSalahMap=null;
var mLastPointClicked=null;
var mPrayerMethods=new Array('Muslim World League', 'Egyptian General Authority of Survey', 'University of Islamic Sciences', 'Umm Al Qura', 'Islamic society of North America');
var mAsarMethods = new Array('Shafi', 'Hanafi');
var mIdPrefix='ctl00_cph1_';

function map_Init() {
    if (typeof (GMap2) != "undefined") {
        mSalahMap = new GMap2(document.getElementById("salahMap"), {draggableCursor:"pointer"});
	    mSalahMap.addControl(new GLargeMapControl3D());
	    mSalahMap.addControl(new GMenuMapTypeControl());
	    mSalahMap.addControl(new GOverviewMapControl());
	    GEvent.addListener(mSalahMap, 'click', clickHandler);
	    GEvent.addListener(mSalahMap , 'zoom', zoomHandler);
	    if (mPlaceCoords.length == 2) {
	        showPrayerTimes(getPlaceLatitude(), getPlaceLongitude());
		    mSalahMap.setCenter(mLastPointClicked, getZoomLevel());
		}
	    else {
	        reset_Map();
		}
	}
}

function cleanUp() {
    if (mSalahMap!=null)
    {
        GUnload();
    } 
}

function clickHandler(overlay, point) {
    if (point) {
	    mLastPointClicked=point;
	    getPrayerTimes(point.y, point.x, getPrayerDate(), getAsarMethod(), getPrayerMethod());
    	mSalahMap.panTo(mLastPointClicked);
	}
}

function zoomHandler(oldZoom, newZoom) {
	setZoomLevel(newZoom);
}

function getPrayerTimes(latitude, longitude, prayerDate, asarMethod, prayerMethod) {
    PageMethods.GetPrayerTimesFromPoint(latitude, longitude, prayerDate, Number(asarMethod), Number(prayerMethod), getPrayerTimes_CallBack);
}

function getPrayerTimes_CallBack(response) {				
    var prayerTimesHTML= responseToPrayerTime(response);
	mSalahMap.openInfoWindowHtml(mLastPointClicked, prayerTimesHTML);
}

function showPrayerTimes(latitude, longitude) {
	var placePoint=new GLatLng(latitude, longitude);
	mLastPointClicked=placePoint;
    getPrayerTimes(placePoint.y, placePoint.x, getPrayerDate(), getAsarMethod(), getPrayerMethod());			
}

function responseToPrayerTime(prayerArrayData) {
    var classNames = new Array('normalItem', 'alternatingItem');
	var prayerNamesNonRamadan=new Array("Fajr", "Sunrise", "Zohar", "Asar", "Magrib", "Isha");
	var prayerNamesRamadan = new Array("Suhur", "Fajr", "Sunrise", "Zohar", "Asar", "Magrib (Iftari)", "Isha");
	var placeName = prayerArrayData[0];
	var placeUniqueName = prayerArrayData[1];
	var countryName = prayerArrayData[2];
	var prayerPage;
	setMapTitle(prayerArrayData[0]);
	if (prayerArrayData.length == 10) {
	    prayerNames = prayerNamesNonRamadan
	    prayerPage = "../../PrayerTimes/" + countryName + "/" +  placeUniqueName + "/Month";
	}
	else {
	    prayerNames = prayerNamesRamadan;
	    prayerPage = "../../RamadanPrayerTimes/" + countryName + "/" + placeUniqueName + "/Month";
	}
    
    var placeID=prayerArrayData[prayerArrayData.length-1];
	var html='<table cellspacing="0" cellpadding="0" border="0" id="infoWindowPrayerTimes">';
	html+='<thead>';
	html+="<tr class='prayerDate'><td colspan='2'>" + getPrayerDate() + "</td></tr>";
	html+="<tr class='prayerLink'><td colspan='2'>";
	html+='<a title="View prayer times for '
	html+=prayerArrayData[0];
	html+='"';
	html+=" href='";
	html += prayerPage;
	html += "'>";
	html+=placeName;
	html+="</a>";
	html+= "</td></tr>";
	html+="<tr class='prayerMethod'><td>" ;
	html+="<a class='calcMethod' title='Frequently asked questions about prayer times' href='FaqSearch.aspx?criteria=organisation'>" + mPrayerMethods[getPrayerMethod()-1] + "</a>";
	html+= "</td></tr>";
	html+= "<tr class='asarMethod'><td>";
	html+= "<a class='calcMethod' title='Frequently asked questions about prayer times' href='FaqSearch.aspx?criteria=Shafi'>" + mAsarMethods[getAsarMethod() - 1] + "</a>";
	html+="</td></tr>";
	html+= "<tr class='seperatorItem'></tr>";
	html += "</thead><tbody>";

	for (var i = 3; i <= prayerArrayData.length - 2; i++) {
	    html += "<tr class='" + classNames[i % 2] + "'>";
	    html += "<td>" + prayerNames[i - 3] + "</td><td style='text-align:right'>" + prayerArrayData[i] + "</td></td>"
	    html += "</tr>";
	}
	
	html+='</tbody></table>';
	
	return html;
}

function getPrayerDate() {
	return mPrayerData[0];
}

function getPrayerMethod() {
    return document.getElementById('prayerMethod').value;
}

function getAsarMethod() {
    return document.getElementById('asarMethod').value;
}

function getPlaceLatitude() {
	return mPlaceCoords[0];
}

function getPlaceLongitude() {
	return mPlaceCoords[1];
}

function getZoomLevel() {
	return mZoom[0];
}

function setZoomLevel(value) {
	return mZoom[0]=value;
}

function reset_Map() {
	mSalahMap.setCenter(new GLatLng(54.70111704294316, -2.08740234375), getZoomLevel());
}

function prayerMethodChanged() {
    showPrayerTimesInfoWindow();
}

function asarMethodChanged() {
    showPrayerTimesInfoWindow();
}

function showPrayerTimesInfoWindow() {
    if (!mSalahMap.getInfoWindow().isHidden()) {
        showPrayerTimes(mLastPointClicked.y, mLastPointClicked.x);
    }
}

function getElmById(elmId) {
    return document.getElementById(mIdPrefix + elmId);
}

function setMapTitle(title) {
    document.title = "Prayer Times For " + title;
    document.getElementById('ctl00_lblPageSubTitle').innerHTML = document.title;   
}
