var html;

jQuery.extend({
	getURLParam: function(strParamName){
		var strReturn = "";
		var strHref = window.location.href;
		var bFound=false;
		
		var cmpstring = strParamName + "=";
		var cmplen = cmpstring.length;
		
		if ( strHref.indexOf("?") > -1 ) {
			var strQueryString = strHref.substr(strHref.indexOf("?")+1);
			var aQueryString = strQueryString.split("&");
			
			for ( var iParam = 0; iParam < aQueryString.length; iParam++ ) {
				if (aQueryString[iParam].substr(0,cmplen)==cmpstring){
					var aParam = aQueryString[iParam].split("=");
					strReturn = aParam[1];
					bFound=true;
					break;
				}
			}
		}
		
		if (bFound==false) return null;
		return strReturn;
	},
	
	TrackMyUnit: function() {
		var serial = $.getURLParam("trackingid");
		$('#unitid').html(serial);
		
		$('#AjaxLoader').ajaxStart(function(){
			$(this).show();
			$('#tracksuccess').hide();
		});
		
		$('#AjaxLoader').ajaxStop(function(){
			$(this).hide();
		});
		
		$.ajaxSetup({cache: false});
				
		if(!isNaN(serial) && serial != null) {
			$.getJSON('/ajax/PingUnit.php', {unitSerial: serial, type: 'json', timeout: '120'}, function(response) {
				var time = response.time, latitude = response.latitude, longitude = response.longitude, status = response.status, satelites = response.satelites, speed = response.speed;
				try
				{
					if(status == 'success') {
						var latLong = new GLatLng(latitude, longitude);
				
						var geocoder = new GClientGeocoder();
						geocoder.getLocations(latLong, function(response) {
							if(!response || response.Status.code != 200) {
								html = '<h2>Position</h2><p>Unable to find address<br /></p><h2>Opdateret</h2><p>' + time + '</p>';
							} else {
                                if (map == null) {
								    var map = new GMap2($("#map").get(0));
                                }
                                
								var marker = new GMarker(latLong);
								
								try
								{
									var details = response.Placemark[0].AddressDetails;
/*									if(details.Country.AdministrativeArea.SubAdministrativeArea)
									{
*/									
										var city = details.Country.AdministrativeArea.SubAdministrativeArea.Locality.LocalityName;
										var postalcode = details.Country.AdministrativeArea.SubAdministrativeArea.Locality.PostalCode.PostalCodeNumber;
										var street = details.Country.AdministrativeArea.SubAdministrativeArea.Locality.Thoroughfare.ThoroughfareName;
										var country = details.Country.CountryName;
/*									
									} else {
										
										var city = details.Country.AdministrativeArea.Locality.LocalityName;
										var postalcode = details.Country.AdministrativeArea.Locality.PostalCode.PostalCodeNumber;
										var street = details.Country.AdministrativeArea.Locality.Thoroughfare.ThoroughfareName;
										var country = details.Country.CountryName;
										
									}
*/
								}
								catch(e) {}
								
								html  = '<h2>Position</h2>';
								html += '<p>';
								html += street + '<br />';
								html += postalcode + ' ' + city + '<br />';
								html += country + '<br />';
								html += '</p>';
								html += '<p>Longitude: ' + convert(longitude, "longitude") + '<br/>';
								html += 'Latitude: ' + convert(latitude, "latitude") + '</p>';
                                html += 'Satelites: ' + satelites + '<br />'; 
								html += '<h2>Opdateret</h2><p>' + time + '</p>';
								
								//map.addControl(new GSmallMapControl());
								map.addOverlay(marker);
								map.setCenter(latLong, 13);
								marker.openInfoWindowHtml(html);
								$('#gpsinfo').html(html);
								GEvent.addListener(marker, "click", function() {
									marker.openInfoWindowHtml(html);											 
								});
								map.setUIToDefault();
								$('#gpsinfo').html(html);
							}
						});
						$('#tracksuccess').show();
					} else if(status == 'unitnotfound'){
						$("#unitnotexisting").toggle();
					} else if(status == 'error') {
						$("#error").toggle();
					} else {
						$("#tracktimeout").toggle();
					}
				}
				catch(er)
				{
					$('#error').toggle();
				}
			});
		}
	}
});

// JavaScript Document
function convert(latlong, which) {
	var result = '';
	
	// Hours
	var tmp = latlong.split(".");
	if (tmp[0].substr(0,1) == "-") {
		result += tmp[0].substr(1, tmp.length);
	} else {
		result += tmp[0];
	}
	result += '&deg; ';
	
	// Minutes
	var longRemainder = ("0." + tmp[1]) * 60;
	var longMinVals = longRemainder.toString().split(".");
	result += longMinVals[0] + '\' ';
	
	// Seconds
	var longMinRemainder = ("0." + longMinVals[1]) * 60;
	result += Math.round(longMinRemainder) + '"';
	
	switch (which) {
		case 'latitude':
			if (latlong.substr(0,1) == "-") {
				result += ' S';
			} else {
				result += ' N';
			}		
		break;
		
		case 'longitude':
		default:
			if (latlong.substr(0,1) == "-") {
				result += ' W';
			} else {
				result += ' E';
			}
		break;
	}
	
	return result;
}

$(document).ready(function() {
	$.TrackMyUnit();
	
	$("#reTrack").click(function() { $.TrackMyUnit(); });

	$("#AddUnit").click(function() {
		var row = $("#UnitsList tbody>tr:last").clone(true).insertAfter("#UnitsList tbody>tr:last"); //.append(new_html);
		var index = $("#UnitsList tbody>tr").length - 1;
		$("td:eq(0) input", row).attr("name", "group[0][units][" + index + "][imei]").attr({value: ''});
		$("td:eq(0) input", row).attr("id", "group[0][units][" + index + "][imei]").attr({value: ''});
		
//		$("td:eq(1) input", row).attr("name", "group[0][units][" + index + "][simid]").attr({value: ''});
//   	$("td:eq(1) input", row).attr("id", "group[0][units][" + index + "][simid]").attr({value: ''});
    	
//		$("td:eq(2) input", row).attr("name", "group[0][units][" + index + "][phone]").attr({value: ''});
//		$("td:eq(2) input", row).attr("id", "group[0][units][" + index + "][phone]").attr({value: ''});
		
		$("td:eq(1)", row).html("<img src=\"/fileadmin/tracking/images/delete.gif\" class=\"deleterow\" alt=\"Delete\" />");
		
		$("td:eq(1) img", row).click(function() {
			row.remove();									  
		});
	});
	
	var isValid = $("#creationForm").validate({
					rules: {
						"name" : { required: true },
						"address" : { required: true },
						"zipcode" : { required: true },
						"city" : { required: true },
						"phonenumber" : { required: true },
						"email" : { required: true, email: true }
					},
					messages: {
						"name" : { required: "Navn mangler" },
						"address" : { required: "Adresse mangler" },
						"zipcode" : { required: "Postnummer mangler" },
						"city" : { required: "By mangler" },
						"phonenumber" : { required: "Telefon nummer mangler" },
						"email" : { required: "E-mail adresse mangler", email: "Der er noget galt med din email" }
					}
				});


	
	$("#creationForm").bind("submit", function(e) {
		e.preventDefault();
				
		if(isValid.valid()) {
			$('#error').hide();
			$('#loadingcustomer').show();
			$('#btnSubmitForm', this).attr('disabled', 'disabled');
			$.ajax({
				   type: 'POST',
				   url: '/ajax/postback.php',
				   data: $("#creationForm").serialize(),
				   dataType: "json",
				   success: function(response) {
					   $('#loadingcustomer').hide('500');
					   if(response.status == "success") {
						   location.href = response.return_url;
					   } else {
						   $('#error').html(response.text);
						   $('#error').show('400');
							$('#btnSubmitForm').removeAttr("disabled");
					   }
				   }
			});
		}
	});
});
