var kdid;
var pwd;
var fzgid;
var abfrageActive = false;
var countShot = 0;
var counter=1;
//var http = getHTTPObject();
var http = GXmlHttp.create();
var requestMode;
var showInfo = false;
var infoWindow;

function chkParameters(){
	if(ticket != 0 && key != 0){
		requestMode = "ticket";
		InitializeTimer();
	}
	else{
		showFzg();
	}
}

function showFzg(){
	if(abfrageActive == false){
		kdid = document.getElementById('kdid').value;
		fzgid = document.getElementById('fzgid').value;
		pwd = document.getElementById('pwd').value;
		requestMode = "user";
		linePoints = [];
		if(kdid == "" || fzgid == "" || pwd == ""){		
			kdid = "32038";
			fzgid = 200038;
			pwd = "GPSauge";
		}
		abfrageActive = true;
		InitializeTimer();	
	}
	else {
		countShot = 0;
		abfrageActive = false;
		StopTheClock();
	}
}

function getData(){
	var url;
	if(requestMode == 'ticket'){
		current=new Date();
		url = "./getPosition.php?key="+key+"&ticket="+ticket+"&uuid="+counter;
	}
	else{
		url = "/mssqlclient/zlibgpsshowpositionmulti.php?nozlib=1&kdid="+kdid+"&pwd="+pwd+"&geraet="+fzgid;
	}
    try {
        url = decodeURI(url);
		//alert(url);
    	http.open("GET", url, true);
		counter=counter+1;
    	http.onreadystatechange = returnData;
    	http.send(null);
    } catch (e) {;}
}

function returnData(){
	var returnState;
	var googleDataSet;
	if (http.readyState == 4) {
		returnState = http.responseText;
		if(returnState != ""){
			if(returnState.slice(0, 9) != "return:=0"){
				document.getElementById('errContainer').style.display = 'none';
				googleDataSet = getGoogleDataSet(returnState);
				if (googleDataSet != 0){
					//alert(returnState);
					googleDataSet = googleDataSet.split('/');
					var googleNs = googleDataSet[0];
					var googleWe = googleDataSet[1];
					googleNs = parseFloat(googleNs);
					googleWe = parseFloat(googleWe);
					if(typeof map == 'undefined'){
							gMapNew();
							map.setCenter(actPosition, 13);
					}
					
					if(bCenterKarte){
						if(countShot == 0){
							map.setCenter(actPosition, 13);
						}
						else{
							map.panTo(actPosition);
						}
					}
					setCar(googleWe, googleNs);
					if(bShowLinie){
						setLinie(googleWe, googleNs);
					}
					countShot++;
				}
			}
			else{
				errorHandling(returnState);
			}
		}
	}
}

function getGoogleDataSet(nmea){
	nmea = nmea.split('\?');
	nmea = nmea[3];
	var koordinaten = nmea.split(',');
	var ns = parseFloat(koordinaten[2]);
	var we = parseFloat(koordinaten[4]);
	
	ns = ns / 100;
	ns = parseInt(ns) + (ns - parseInt(ns)) * 100 / 60;
	if(koordinaten[3].toUpperCase() == "S"){
		ns = ns * -1;
	}
	ns = ns.toFixed(6);
	
	we = we / 100;
	we = parseInt(we) + (we - parseInt(we)) * 100 / 60;
	if(koordinaten[5].toUpperCase() == "W"){
		we = we * -1;
	}
	we = we.toFixed(6);
	
	
	var speed = koordinaten[6];
	speed = parseFloat(speed) * 1.852;
	actSpeed = speed.toFixed(1);
	document.getElementById('speedOutput').innerHTML = actSpeed + " km/h";
	
	var direction = koordinaten[7];
	direction = parseFloat(direction);
	actDirection = direction.toFixed(0);
	lastPosition = actPosition;
	actPosition = new GLatLng(ns, we);
	if(lastPosition.x == actPosition.x && lastPosition.y == actPosition.y){
		return 0;
	}
	else{
		return ns+"/"+we;
	}
}

function setCar(We, Ns){
    var direction = actDirection / 10;
	direction = parseInt(direction) + 1;
	car.shadow = images[37].src;

	if(direction >= 37){
		direction = 1;
	}
	if(actSpeed > 3){
		//car.image = "./img/arrows/" + direction + ".gif";
        car.image = images[direction].src;
	}
	else{
	   //car.image = "./img/arrows/empty.gif";
        car.image = images[0].src;
	}

	carPoint = new GPoint(We, Ns);
    if (carMarker) {
        map.removeOverlay(carMarker);
    }
	carMarker = new GMarker(carPoint, car);
  	map.addOverlay(carMarker);

    var carPointLL = new GLatLng(Ns, We);
    map.panTo(carPointLL);
    var newSchriftzug = new GMarker(carPointLL, label, true);
    //map.addOverlay(newSchriftzug);
    if(oldLabel != ""){
      map.removeOverlay(oldLabel);
    }
    oldLabel = newSchriftzug;


		
}

function setLinie(we, ns){
	if(linePoints.length == 0){
		var lastPosition = new GPoint(0, 0);
	}
	else{
		var lastPosition = linePoints[linePoints.length - 1];
	}
	
	if(actPosition.x != lastPosition.x || actPosition.y != lastPosition.y){
		linePoints.push(actPosition);
		if(linePoints.length >= 2){
			if(linePoints.length >= 3){
				map.removeOverlay(oLine);
			}
			oLine = new GPolyline(linePoints, '#FF0000', 2, 1);
			map.addOverlay(oLine);
		}
	}
}

function centerKarte(){
	bCenterKarte = !bCenterKarte;
	if(bCenterKarte){
		document.getElementById('centerCard').style.color = '#FF9933';
		if(countShot > 0){
			map.panTo(actPosition);
		}
	}
	else{
		document.getElementById('centerCard').style.color = '#5F5F5F';
	}
}

function showLinie(){
	bShowLinie = !bShowLinie;
	linePoints = [];
		if(bShowLinie){
		document.getElementById('showLine').style.color = '#FF9933';
		linePoints.push(actPosition);
	}
	else{
		document.getElementById('showLine').style.color = '#5F5F5F';
	}
}

function errorHandling(returnString){
	var error = "";
	returnString = returnString.split(';');
	returnString = returnString[1].split('=');
	returnString = returnString[1].toLowerCase();
	if(returnString == "wrong login"){
			error = "Ungültige Zugangsdaten \n Support: +49 9721 79 69 73 45";
	}
	else if(returnString == "ticket expired"){
			error = "Ihr Zugangsticket ist abgelaufen \n Bitte fordern Sie eine neue Freigabe an!"
	}
	else{
			error = "Ungültige Zugangsdaten \n Support: +49 9721 79 69 73 45";
	}
	document.getElementById('errMsg').innerHTML = error;
	document.getElementById('errContainer').style.display = 'block';
}




