SivustoKartta = {};

var offsetEl;	// Elementti, jonka päällä hiiri on
var lang; 		// Tulostettava kieli
var url;		// Yhteenvedon palauttavan prosessin nimi
var naytaVihje;

var dataTableBody;
var dataDiv;

SivustoKartta.alusta = function(url,lang){
	this.url = url;
	this.lang = lang;
	
	this.dataTableBody = Utilities.getElement("dataTableBody");
	this.dataDiv = Utilities.getElement("popup");
	
	// Alustetaan POST request headerit
	this.requestHeaders = new Array(); 
	this.requestHeaders.push(new RequestHeader("Content-type", "application/x-www-form-urlencoded"));
	this.requestHeaders.push(new RequestHeader("Accept-Charset","UTF-8"));
	
	return false;
}

SivustoKartta.getMessage = function(element,year,id){
	this.offsetEl = element;
	var queryString = this.createCalendarTooltipQueryString(year,id);
	var service = this.url+"?timeStamp="+new Date().getTime();
	
	AjaxUpdater.Update("POST", service, this.processServerResponse,queryString,this.requestHeaders);
	this.naytaVihje = true;
}


SivustoKartta.getDescription = function(element,pageId){
	this.offsetEl = element;
	var queryString = this.createQueryString(pageId);
	var service = this.url+"?timeStamp="+new Date().getTime();
	
	AjaxUpdater.Update("POST", service, this.processServerResponse,queryString,this.requestHeaders);
	this.naytaVihje = true;
}

SivustoKartta.processServerResponse = function(){
    try{
        if(Ajax.checkReadyState('loading') == "OK"){
        	//alert(Ajax.request.responseText);
	        var vastaus = Ajax.getResponse();
	        /*
	         * Laitetaan tieto näkyville
	         * 
	         * Huom! callbackistä kutsuttaessa ei voida käytää this-kontekstia!
	         */
	        SivustoKartta.setData(vastaus.getAttribute('title'));
        }
    }
    catch(err){
        document.write(err);
    }
}


SivustoKartta.setData = function(description){
	SivustoKartta.clearData();
	SivustoKartta.setOffsets();
	
	var row = SivustoKartta.createRow(description);
	
	if(SivustoKartta.naytaVihje)
		SivustoKartta.dataTableBody.appendChild(row);
	else
		SivustoKartta.dataDiv.style.border = "none";
}

SivustoKartta.createRow = function(data) {
	var row, cell, txtNode;
	row = Utilities.createElement("tr",new Array());
	cell = Utilities.createElement("td", new Array());
	
	//cell.setAttribute("bgcolor","#FFFAFA");
	//cell.setAttribute("border","0");
				
	txtNode = document.createTextNode(data);
	cell.appendChild(txtNode);
	row.appendChild(cell);
	return row;
}

SivustoKartta.setOffsets = function(){
	var top = Utilities.calculateOffset(SivustoKartta.offsetEl,"offsetTop");
	var left = Utilities.calculateOffset(SivustoKartta.offsetEl,"offsetLeft");
	var width = Utilities.getElementWidth(SivustoKartta.offsetEl);
	
	var newLeft = left + width +15;
	var newTop = top;	
	
	SivustoKartta.dataDiv.style.border = "black 1px solid";
	SivustoKartta.dataDiv.style.left = newLeft + "px";
	SivustoKartta.dataDiv.style.top = newTop + "px";	
}


SivustoKartta.clearData = function(){	
	Utilities.removeChildren(SivustoKartta.dataTableBody);
	SivustoKartta.dataDiv.style.border = "none";
}


SivustoKartta.createQueryString = function(pageId){	
	var query = "request=tooltip&id="+pageId+"&kieli="+this.lang+"&type=sitemapDesc";
	return query;
}

SivustoKartta.createCalendarTooltipQueryString = function(year,id){	
	var query = "request=tooltip&year="+year+"&id="+id+"&type=calendarNote";
	return query;
}

SivustoKartta.callClearData = function(){
	this.naytaVihje = false;
	this.clearData();
}
