var curCountry = '';
var imagePath = 'App_Themes/Default/Images/geo_map_img/';

function zoomCountry(countryName) {
	if (countryName != null && countryName.length > 0) {
		var container = document.getElementById('map_view_container');
		var countryNamesDiv = document.getElementById('text_container');
		if (container != null && container != countryNamesDiv) {
			countryNamesDiv.style.visibility = 'hidden';
			countryNamesDiv.style.display = 'none';
			
			if (countryName == 'bremen') {
				container.style.backgroundImage = 'url(\'' + imagePath + 'niedersachsen_340x425.png\')';
			}
			else if (countryName == 'hamburg') {
				container.style.backgroundImage = 'url(\'' + imagePath + 'schleswig_holstein_340x425.png\')';
			}
			else if (countryName == 'berlin') {
				container.style.backgroundImage = 'url(\'' + imagePath + 'brandenburg_340x425.png\')';
			}
			else if (countryName == 'saarland') {
				container.style.backgroundImage = 'url(\'' + imagePath + 'rheinland_pfalz_340x425.png\')';
			}
			else {
				container.style.backgroundImage = 'url(\'' + imagePath + countryName + '_340x425.png\')';
			}
			container.style.cursor = 'pointer';
			
			curCountry = countryName;
			
			var l = document.getElementById('mapOverviewLink');
			if (l != null) {
			    l.style.visibility = 'visible';
			    l.style.display = 'block';
			}
		}
	}
}

function loadMapView() {
    var vc = document.getElementById('map_view_container');
    vc.style.backgroundImage = 'url(\'' + imagePath + 'germany_340x425.png\')';
    
    var tc = document.getElementById('text_container');
    tc.style.visibility = 'visible';
    tc.style.display = 'block';
    
    curCountry = '';

    var l = document.getElementById('mapOverviewLink');
	if (l != null) {
	    l.style.visibility = 'hidden';
	    l.style.display = 'block';
	}
}

function getLongitude(y) {

	var diff = 0; // difference to prime meridian in pixel
	var fac;
	if (y != null) {
		if ( curCountry == 'baden_wuerttenberg' ) {
			diff = 740;
			fac = 0.009858859942754;
		}
		else if ( curCountry == 'bayern' ) {
			diff = 551;
			fac = 0.015850848824538;
		}
		else if ( curCountry == 'berlin' || curCountry == 'brandenburg' ) {
			diff = 990;
			fac = 0.011266371514059;
		}
		else if ( curCountry == 'hessen' ) {
			diff = 818;
			fac = 0.009114893026349;
		}
		else if ( curCountry == 'mecklenburg_vorpommern' ) {
			diff = 840;
			fac = 0.012435561914643;
		}
		else if ( curCountry == 'niedersachsen' || curCountry == 'bremen' ) {
			diff = 614;
			fac = 0.011493705087485;
		}
		else if ( curCountry == 'nordrhein_westfalen' ) {
			diff = 530;
			fac = 0.011023529585155;
		}
		else if ( curCountry == 'rheinland_pfalz' || curCountry == 'saarland' ) {
			diff = 691;
			fac = 0.008422536916554;
		}
		else if ( curCountry == 'sachsen' ) {
			diff = 1158;
			fac = 0.009975737222567;
		}
		else if ( curCountry == 'sachsen_anhalt' ) {
			diff = 1217;
			fac = 0.008544510087456;
		}
		else if ( curCountry == 'schleswig_holstein' || curCountry == 'hamburg' ) {
			diff = 740;
			fac = 0.010709301141348;
		}
		else if ( curCountry == 'thueringen' ) {
			diff = 1060;
			fac = 0.009218360387976;
		}
	}
	var n = y + diff; // difference to prime meridian in pixel
	n = n * fac;
	n = n.toFixed(13);
	return n;
}

function getLatitude(x) {

	var diff = 0; // differnce to equator in pixel
	var fac;	
	if (x != null) {
		if ( curCountry == 'baden_wuerttenberg' ) {
            diff = 8680;
			fac = 0.005470857270115;
		}
		else if ( curCountry == 'bayern' ) {
			diff = 4050;
			fac = 0.011472701149425;
		}
		else if ( curCountry == 'berlin' || curCountry == 'brandenburg' ) {
			diff = 7639;
			fac = 0.006685113060659;
		}
		else if ( curCountry == 'hessen' ) {
			diff = 7186;
			fac = 0.006824327636602;
		}
		else if ( curCountry == 'mecklenburg_vorpommern' ) {
			diff = 6615;
			fac = 0.007887430723237;
		}
		else if ( curCountry == 'niedersachsen' || curCountry == 'bremen' ) {
			diff = 5449;
			fac = 0.009292565599679;
		}
		else if ( curCountry == 'nordrhein_westfalen' ) {
			diff = 6480;
			fac = 0.007688994915161;
		}
		else if ( curCountry == 'rheinland_pfalz' || curCountry == 'saarland' ) {
			diff = 9603;
			fac = 0.005088441793215;
		}
		else if ( curCountry == 'sachsen' ) {
			diff = 7553;
			fac = 0.006561291159692;
		}
		else if ( curCountry == 'sachsen_anhalt' ) {
			diff = 11388;
			fac = 0.004479443278361;
		}
		else if ( curCountry == 'schleswig_holstein' || curCountry == 'hamburg' ) {
			diff = 9185;
			fac = 0.005770020046479;
		}
		else if ( curCountry == 'thueringen' ) {
			diff = 6320;
			fac = 0.007796887007927;
		}
	}
	var n = (425 - x) + diff; // differnce to equator in pixel
	n = n * fac;
	n = n.toFixed(13);
	return n;
}

function alertGPSPosition(e) {
	var x = (document.all) ? window.event.x + document.body.scrollLeft : e.pageX;
	var y = y = (document.all) ? window.event.y + document.body.scrollTop : e.pageY;
	
	getLatitude(x);
	alert('longitude: ' + getLongitude(x));
	getLongitude(y);
	alert('latitude: ' + getLatitude(y));
}



function getMouseX(evt) {
    if (evt && evt.offsetY) {
        return evt.offsetX;
    } 
    else {
        var obj = getEventObject( evt );
        if ( !obj.pageLeft )
            setPageTopLeft( obj );
        return (evt.clientX - obj.pageLeft - document.body.scrollLeft);
    }
}

function getMouseY(evt) {
    if (evt && evt.offsetY) {
        return evt.offsetY;
    } 
    else {
        var obj = getEventObject( evt );
        if ( !obj.pageTop )
            setPageTopLeft( obj );
        return (evt.clientY - obj.pageTop - document.body.scrollTop);
    }
}

function setPageTopLeft( o ) {
    var top = 0,
    left = 0,
    obj = (typeof o == "string") ? document.getElementById(o) : o,
    body = document.getElementsByTagName('body')[0];

    while ( o.offsetParent && o != body) {
        left += o.offsetLeft ;
        top += o.offsetTop ;
        o = o.offsetParent ;
    };

    obj.pageTop = top;
    obj.pageLeft = left;
}

function getEventObject( e ) {
    return e.target || e.srcElement;
}
