var qiblaLat=21.42252;var qiblaLng=39.82621;var addrEmptyMsg='ادخل اسم المدينة والدولة Type your city';var map,geocoder,centerMarker;function init(startAddr,startLat,startLng,startZoom)
{if(!GBrowserIsCompatible())
return;new Accordian('accordian',3,'selected');if(!startAddr)startAddr='';if(!startLat)startLat=24.6757;if(!startLng)startLng=46.6764;if(!startZoom)startZoom=5;map=new GMap2(document.getElementById('map'));geocoder=new GClientGeocoder();var home=new GLatLng(startLat,startLng);map.addControl(new GLargeMapControl());map.addControl(new GMapTypeControl());map.setMapType(G_HYBRID_MAP);map.addControl(new GScaleControl());map.setCenter(home,startZoom);var icon=new GIcon(null,'http://qiblalocator.com/images/crosshair.gif');icon.iconSize=new GSize(17,17);icon.iconAnchor=new GPoint(8,8);centerMarker=new GMarker(home,{icon:icon,clickable:false});GEvent.addListener(map,'move',mapDraw);document.getElementById('roundRect').value=startAddr;leaveAddressBar();mapDraw();}
function mapDraw()
{var center=map.getCenter();var lng=center.lng();var lat=center.lat();var qiblaDir=-getDirection(lat,lng,qiblaLat,qiblaLng);map.clearOverlays();centerMarker.setPoint(center);map.addOverlay(centerMarker);var line=getLine(lat,lng,qiblaDir);map.addOverlay(line);writeData(center,qiblaDir);}
function writeData(center,qiblaDir)
{var kaba=new GLatLng(qiblaLat,qiblaLng);if(qiblaDir<0)qiblaDir+=360;writeItem('curLng',center.lng().toFixed(4));writeItem('curLat',center.lat().toFixed(4));writeItem('direction',qiblaDir.toFixed(2)+'&deg;&nbsp;N');if(document.getElementById('units').checked)
{var converter=1609.344;var distance=center.distanceFrom(kaba)/converter;writeItem('distance',distance.toFixed(0)+'&nbsp;mi');}
else{var converter=1000;var distance=center.distanceFrom(kaba)/converter;writeItem('distance',distance.toFixed(0)+'&nbsp;km');}}
function writeItem(itemID,value)
{document.getElementById(itemID).innerHTML=value;}
function getLine(lat,lng,angle)
{var factor=8;var zoom=map.getZoom();var dLng=factor/Math.pow(2,zoom-7);if(zoom<7)dLng=factor;dLng=dLng*Math.sin(dtr(angle));var from=new GPoint(lng,lat);var lat2=getLat(lat,angle,dLng)
var to=new GPoint(lng+dLng,lat2);if(Math.abs(dLng)>Math.abs(lng-qiblaLng))
to=new GPoint(qiblaLng,qiblaLat);var line=new GPolyline([from,to],'#FF0000',4);return line;}
function getDirection(lat1,lng1,lat2,lng2)
{var dLng=lng1-lng2;return rtd(getDirectionRad(dtr(lat1),dtr(lat2),dtr(dLng)));}
function getDirectionRad(lat1,lat2,dLng)
{return Math.atan2(Math.sin(dLng),Math.cos(lat1)*Math.tan(lat2)-Math.sin(lat1)*Math.cos(dLng));}
function getLat(lat1,angle,dLng)
{return rtd(getLatRad(dtr(lat1),dtr(angle),dtr(dLng)));}
function getLatRad(lat1,angle,dLng)
{return Math.atan((Math.sin(dLng)+Math.tan(angle)*Math.sin(lat1)* Math.cos(dLng))/(Math.tan(angle)*Math.cos(lat1)));}
function dtr(d)
{return(d*Math.PI)/180.0;}
function rtd(r)
{return(r*180.0)/Math.PI;}
function locateAddress()
{var address=document.getElementById('roundRect').value;if(address==''||address==addrEmptyMsg)
{alert(addrEmptyMsg);return;}
geocoder.getLocations(address,showAddressOnMap);}
function showAddressOnMap(response)
{if(!response||response.Status.code!=200)
alert('Address not found');else
{place=response.Placemark[0];point=new GLatLng(place.Point.coordinates[1],place.Point.coordinates[0]);map.setCenter(point,8+place.AddressDetails.Accuracy);marker=new GMarker(point);map.addOverlay(marker);marker.openInfoWindowHtml(place.address);}}
function focusAddressBar()
{var address=document.getElementById('roundRect');address.style.color='#000000';if(address.value==addrEmptyMsg)
address.value='';}
function leaveAddressBar()
{var address=document.getElementById('roundRect');if(address.value==''||address.value==addrEmptyMsg)
{address.style.color='#999999';address.value=addrEmptyMsg;}}
function checkunit(){if(document.dUnit.unit[0].checked==true)converter=1609.344;if(document.dUnit.unit[1].checked==true)converter=1000;}
function toggle(targetId){if(document.getElementById){target=document.getElementById(targetId);if(target.style.display=="none"){target.style.display="";}else{target.style.display="none";}}}

