var ajaxobjects = 0;
var map;
var center;

var markers = [];

function JSONscriptRequest(fullUrl) {
  this.fullUrl = fullUrl;
  this.noCacheIE = "&noCacheIE=" + (new Date()).getTime();
  this.headLoc = document.getElementsByTagName("head").item(0);
  this.scriptId = 'YJscriptId' + JSONscriptRequest.scriptCounter++;
}

JSONscriptRequest.scriptCounter = 1;

JSONscriptRequest.prototype.buildScriptTag = function () {
  this.scriptObj = document.createElement("script");

  this.scriptObj.setAttribute("type", "text/javascript");
  this.scriptObj.setAttribute("src", this.fullUrl + this.noCacheIE);
  this.scriptObj.setAttribute("id", this.scriptId);
}

JSONscriptRequest.prototype.removeScriptTag = function () {
  this.headLoc.removeChild(this.scriptObj);
}

JSONscriptRequest.prototype.addScriptTag = function () {
  this.headLoc.appendChild(this.scriptObj);
}

jQuery(document).ready(function(){
        jQuery('#tabarea div.tab').corner('top 5px');
	mapInit();
});

function updateSiteLocation (id) {
	var infobox = document.getElementById('travelInfo');

	infobox.innerHTML = '';


	$.get('/ajax/getJsonLocation/locationId/' + id, null, function(res){
		var obj = res.evalJSON();
		infobox.innerHTML = '<div style="font-size: 18px; margin-left: 1em; margin-top: 0.5em;">' + obj.locationName + '</div>';
		infobox.innerHTML = infobox.innerHTML + '<div style="margin-left: 1.5em; margin-top: 0.5em;">' + obj.locationText + '</div>';
		document.getElementById('to').value = obj.locationName;
		map.setCenter(new GLatLng(obj.lat, obj.longitude), 11);
	});
}

function formToRt () {
	var roundtrip = document.getElementById('roundtrip');
	roundtrip.checked = true;
	roundtripChange();
}

function roundtripChange () {
	var roundtrip = document.getElementById('roundtrip');
	if (roundtrip.checked) {
		document.getElementById('todate').disabled = false;
	} else {
		document.getElementById('todate').disabled = true;
	}
}

function airsearch () {
	var data = new Object();
	ajaxobjects = 0;

	var submitButton = document.getElementById('search');

	data.engine = document.getElementById('searchengine').value;
	data.adults = document.getElementById('searchadults').value;
	var air = document.getElementById('air');
	var combo = document.getElementById('combo');
	var roundtrip = document.getElementById('roundtrip');
	data.from = document.getElementById('from').value;
	data.to = document.getElementById('to').value;
	data.fromdate = document.getElementById('fromdate').value;
	data.todate = document.getElementById('todate').value;
	data.frommonth = data.fromdate.substring(0,2);
	data.fromday = data.fromdate.substring(3,5);
	data.fromyear = data.fromdate.substring(6,10);
	data.tomonth = data.todate.substring(0,2);
	data.today = data.todate.substring(3,5);
	data.toyear = data.todate.substring(6,10);

	var resultArea = document.getElementById('searchinfo');
	var errorArea = document.getElementById('error');

	errorArea.innerHTML = '';

	if (data.fromdate == 'Avreisedato') {
		error.innerHTML = '<strong>Du m&aring; velge avreisedato.</strong><br>';
		return false;
	}

	if (data.todate == 'Hjemreisedato' && roundtrip.checked) {
//		error.innerHTML = resultArea.innerHTML + '<strong>Du m&aring; velge hjemreisedato.</strong><br>';
		error.innerHTML = '<strong>Du m&aring; velge hjemreisedato.</strong><br>';
		return false;
	}

	resultArea.innerHTML = 'Fra: <strong>' + data.from + '</strong> Til: <strong>' + data.to + '</strong><br>';
	resultArea.innerHTML = resultArea.innerHTML + 'Avreise: <strong>' + data.fromday + '.' + data.frommonth + '.' + data.fromyear + '</strong> ';

	if (!roundtrip.checked) {
	resultArea.innerHTML = resultArea.innerHTML + 'Hjemreise: <strong>Enveis</strong> <br><br>';
	} else {
	resultArea.innerHTML = resultArea.innerHTML + 'Hjemreise: <strong>' + data.today + '.' + data.tomonth + '.' + data.toyear + '</strong> <br><br>';
	}

	document.getElementById('search').style.visibility = 'hidden';
	document.getElementById('waiting').style.visibility = 'visible';

	if (roundtrip.checked) {
		data.roundtrip = 2;
	} else {
		data.roundtrip = 1;
	}

	if (air.checked) {
		data.type = 1;
		doSearch(data, 'supersaver');
		doSearch(data, 'ebookers');
		doSearch(data, 'norwegian');
		doSearch(data, 'expedia');
		doSearch(data, 'seat24');
	}

	if (combo.checked) {
		data.type = 2;
		doSearch(data, 'expedia');
		doSearch(data, 'ebookers');
	}

}

function resetSearch () {
	ajaxobjects = 0;
	var submitButton = document.getElementById('search');
	submitButton.style.visibility = 'visible';
	document.getElementById('waiting').style.visibility = 'hidden';
	submitButton.value = 'Finn billigste reise!';
}

function doSearch (dataobj, engine) {
	ajaxobjects = ajaxobjects + 1;
	document.getElementById('search').value = 'Finner reise... (' + ajaxobjects + ')';

	dataobj.engine = engine;
	$.post('/ajax/search', dataobj, function(res){ 
		var obj = res.evalJSON();
		addResult(document.getElementById('searchinfo'), obj);
	  });
}

function parseGeonames (res) {
	var jData = res.evalJSON();
	if (jData == null) {
		alert("Could not get jData");
		return;
	}


	var geonames = jData.geonames;
	for (i = 0; i<geonames.length;i++) {
		var tinyIcon = new GIcon();
		tinyIcon.image = "http://labs.google.com/ridefinder/images/mm_20_red.png";
		tinyIcon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
		tinyIcon.iconSize = new GSize(6,10);
		tinyIcon.shadowSize = new GSize(12, 10);
		tinyIcon.iconAnchor = new GPoint(6,20);
		tinyIcon.infoWindowAnchor = new GPoint(5,1);
		markerOptions = { icon:tinyIcon };

		var point = new GLatLng(geonames[i].latitude, geonames[i].longitude);
		var marker = new GMarker(point, markerOptions);
		marker.name = geonames[i].name;
		markers.push(marker);
	}

	addMarkers(markers);
}

function addMarkers (markers) {
	for (i = 0; i < markers.length; i++) {
		var marker = markers[i];
		GEvent.addListener(marker, "click", function() {
			this.openInfoWindowHtml("<b>" + this.name + "</b>");
		});
		map.addOverlay(markers[i]);
	}
}

function removeHotels () {
	for (i = 0; i < markers.length; i++) {
		var marker = markers[i];
		marker.hide();
	}
}

function mapInit() {
	var map_canvas = document.getElementById("map_canvas");

	if (map_canvas == null) {
		return false;
	}

	if (GBrowserIsCompatible()) {
		map = new GMap2(map_canvas);

		if (typeof(customCenter) == 'undefined') {
			map.setCenter(new GLatLng(57.1, 10), 2);
		} else {
			if (typeof(countryCode) != 'undefined') {
					$.get('/ajax/getMarkers/cc/' + encodeURIComponent(countryCode) + '/fcode/HTL', null, parseGeonames);
			}
			map.setCenter(customCenter, 11);
			center = customCenter;
		}

		map.setUIToDefault();

		GEvent.addListener(map, "moveend", function() {
			center = map.getCenter();
		});


	}
}


function addResult (area, obj) {
	ajaxobjects = ajaxobjects - 1;

	if (ajaxobjects == 0) {
		document.getElementById('search').value = 'Finn billigste reise!';
		resetSearch();
	} else {
		document.getElementById('search').value = 'Finner reise... (' + ajaxobjects + ')';
	}

	var newDiv = document.createElement('div');
	newDiv.className = 'airres';
	var airliner = document.createElement('div');
	airliner.id = 'airliner';
	var price = document.createElement('div');
	price.id = 'price';
	var url = document.createElement('div');
	url.id = 'url';
	var spacer = document.createElement('div');
	spacer.className = 'spacer';

	if (obj.price == false) {
		price.innerHTML = 'Fant ikke pris.';
		url.innerHTML = '<a href="' + obj.url + '" target="_blank">S&oslash;k selv</a>';
	} else {
		var span = document.createElement('span');
		span.className = 'price';
		span.innerHTML = obj.price;
		price.appendChild(span);
		price.innerHTML = price.innerHTML + ',-';
		url.innerHTML = '<a href="' + obj.url + '" target="_blank">Finn billettene</a>';
	}
		

	airliner.innerHTML = '<a href="' + obj.url + '" target="_blank">' + obj.airliner + '</a>';

	area.appendChild(newDiv);
	newDiv.appendChild(spacer);
	newDiv.appendChild(airliner);
	newDiv.appendChild(price);
	newDiv.appendChild(url);

	$("#searchinfo>div").tsort("span.price");
	jQuery('#searchinfo div.airres').corner('5px');
}

