var rollovers = new Array();
var jtk = new JoookToolkit();
var shifts = new Array();

var mapservice;
var locale = null;
var fader = null;

function RolloverShift(hitArea, wrapper, height){
	this.hitArea = hitArea;
	this.wrapper = wrapper;
	this.height = height;
	
	this.rollOver = function(){
		//this.wrapper.style.backgroundPosition = "0 -" + this.height + "px";
		var img = jtk.select("img", this.wrapper)[0];
		img.style.display = "inline";
		img.style.marginTop = "-" + this.height + "px";
	}
	
	this.rollOut = function(){
		//this.wrapper.style.backgroundPosition = "0 0";
		var img = jtk.select("img", this.wrapper)[0];
		img.style.display = "none";
	}
	
	this.init = function(){
		var that = this;
		
		jtk.addEvent(hitArea, "mouseover", function(){
			JTKDelegate.create(that, that.rollOver());
		});
		
		jtk.addEvent(hitArea, "mouseout", function(){
			JTKDelegate.create(that, that.rollOut());
		});
	}
	
	this.init();
}



function makeRollovers(){
	for(var i = 0; i < rollovers.length; i++){
		var hitArea = jtk.select("#" + rollovers[i].hitAreaId)[0];
		var imageWrapper = jtk.select("#" + rollovers[i].imageWrapperId)[0];
		var images = imageWrapper.getElementsByTagName('img');
		
		if(images.length > 0){
			var img = images[0];
			var dims = jtk.getDimensions(img);
			
			imageWrapper.style.backgroundImage = "url(" + img.src + ")";
			imageWrapper.style.backgroundRepeat = "repeat-y";
			imageWrapper.style.height = rollovers[i].height + "px";
			imageWrapper.style.overflow = "hidden";
			
			img.style.display = "none";
			img.style.border = "none";
			
			shifts.push(new RolloverShift(hitArea, imageWrapper, rollovers[i].height));
		}
	}
}











function adminGeocode(){
	var address = document.getElementById("street_address").getElementsByTagName("div")[0].innerHTML + ", " + document.getElementById("post_office").getElementsByTagName("div")[0].innerHTML;
	var geocoder = new GClientGeocoder();
	
	alert(address);
	
	geocoder.getLocations(address, fillGeocodeSlot);
}

function fillGeocodeSlot(response){
	if (!response || response.Status.code != 200){
		alert("Can't geocode!");
	}
	else{
		place = response.Placemark[0];
		document.getElementById("geocode").getElementsByTagName("div")[0].innerHTML = "lat : " + place.Point.coordinates[1] + ", lng : " + place.Point.coordinates[0];
	}
}




function initMap(useDI){
	if(document.getElementById('geocode').innerHTML != ''){		
		var hotelCoords = eval("({" + document.getElementById('geocode').innerHTML + "})");
		var hotelPoint = new GLatLng(hotelCoords.lat, hotelCoords.lng);
		
		mapservice = new MapService('mapView');
		if(locale == null){
			locale = "fi_FI";
		}
		mapservice.setLocale(locale);
		mapservice.init();
		mapservice.mapObject.addControl(new GSmallMapControl());
		mapservice.mapObject.addControl(new GMapTypeControl());
		
		if(useDI == true){
			var address = document.getElementById("street_address").innerHTML + ", " + document.getElementById("post_office").innerHTML;
			mapservice.getDirections(document.getElementById("diFrom").value, address, "directions");
		}
		else{
			mapservice.gotoPos(hotelPoint, true);
		}
	}
}


function mapView(geoCode, emtId, showDIQuery){
	var winSize = jtk.getViewportSize();
	
	var scrollTop = document.body.scrollTop;
	if (scrollTop == 0)
	{
		if (window.pageYOffset)
			scrollTop = window.pageYOffset;
		else
			scrollTop = (document.body.parentElement) ? document.body.parentElement.scrollTop : 0;
	}
	
	var scrollLeft = document.body.scrollLeft;
	if (scrollLeft == 0)
	{
		if (window.pageXOffset)
			scrollLeft = window.pageXOffset;
		else
			scrollLeft = (document.body.parentElement) ? document.body.parentElement.scrollLeft : 0;
	}
	
	// Good ol' DOM manipulation
	
	fader = document.createElement("div");
	fader.style.display = "none";
	fader.className = "vj_fader";
	fader.style.width = (winSize.width > document.body.offsetWidth) ? winSize.width + "px" : document.body.offsetWidth + "px";
	fader.style.height = (winSize.height > document.body.offsetHeight) ? winSize.height + "px" : document.body.offsetHeight + "px";
	
	document.body.appendChild(fader);
	
	fader.style.display = "block";
	
	document.getElementById(emtId).style.display = "block";
	
	var overlaySize = jtk.getDimensions(jtk.select("#" + emtId)[0]);
	
	document.getElementById(emtId).style.left = (scrollLeft + winSize.width / 2 - overlaySize.width / 2) + "px";
	document.getElementById(emtId).style.top = (scrollTop + winSize.height / 2 - overlaySize.height / 2) + "px";
	
	
	if(showDIQuery == true){
		document.getElementById(emtId).getElementsByTagName("form")[0].style.display = "block";
	}
	
	initMap(false);
}

function updateDI(){
	if(document.getElementById("diFrom").value != ''){
		document.getElementById("diTo").value = document.getElementById("street_address").innerHTML + ", " + document.getElementById("post_office").innerHTML;
		document.getElementById("diLocation").value = document.getElementsByTagName("title")[0].innerHTML;
		return true;
	}
	else{
		return false;	
	}
}

function closeMap(emtId){
	if(fader != null)
		document.body.removeChild(fader);
	document.getElementById(emtId).style.display = "none";
}

function printMap(emtId){
	var address = document.getElementById("street_address").innerHTML + ", " + document.getElementById("post_office").innerHTML;
	var newWin = window.open("/stc/cumulus/jsp/maps.jsp?from=" + urlEncode(document.getElementById("diFrom").value) + "&to=" + urlEncode(address) + "&location=" + urlEncode(document.getElementById("content_head").innerHTML) + "&locale=" + mapservice.locale);
}

function popMap(){
	var address = document.getElementById("street_address").innerHTML + ", " + document.getElementById("post_office").innerHTML;
	var newWin = window.open("http://maps.google.com/maps?f=q&q=" + urlEncode(address));
}




// URL encode strings
function urlEncode(clearString) {
  var output = '';
  var x = 0;
  clearString = clearString.toString();
  var regex = /(^[a-zA-Z0-9_.]*)/;
  while (x < clearString.length) {
    var match = regex.exec(clearString.substr(x));
    if (match != null && match.length > 1 && match[1] != '') {
    	output += match[1];
      x += match[1].length;
    } else {
      if (clearString[x] == ' ')
        output += '+';
      else {
        var charCode = clearString.charCodeAt(x);
        var hexVal = charCode.toString(16);
        output += '%' + ( hexVal.length < 2 ? '0' : '' ) + hexVal.toUpperCase();
      }
      x++;
    }
  }
  return output;
}

// Find element position
function findPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
	}
	return [curleft,curtop];
}
