//
// Copyright (c) 2006. mapanno (http://www.mapanno.com/).
// Under an Attribution, Share Alike License.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions
// are met:
//
// * Redistributions of source code must retain the above copyright
//   notices,this list of conditions and the following disclaimer.
//
// This software is provided by the copyright holders and contributors
// "as is" and any express or implied warranties, including, but not
// limited to, the implied warranties of merchantability and fitness for
// a particular purpose are disclaimed. In no event shall the copyright
// owner or contributors be liable for any direct, indirect, incidental,
// special, exemplary, or consequential damages (including, but not
// limited to, procurement of substitute goods or services; loss of use,
// data, or profits; or business interruption) however caused and on any
// theory of liability, whether in contract, strict liability, or tort
// (including negligence or otherwise) arising in any way out of the use
// of this software, even if advised of the possibility of such damage.
//

var smTag; if (!smTag) {
var smTags = [], smTag = null, smAuthor = null, smVbound = 0;
}

function smInitMap(){
	var smScheme;
	var e = document.getElementById("smScheme");
	if(e != null) smScheme = smGetScheme(e.value);
	else smScheme = smGetScheme('dark-grey');
	var e = document.getElementById("smGLatLngZm");
	if(e != null) smGmapLoad(e.value);
	var e = document.getElementById("smYLatLngZm");
	if(e != null) smYmapLoad(e.value);
	var e = document.getElementById("smSLLatLngZm");
	if(e != null) smSLmapLoad(e.value);
	e = document.getElementById("sm-map-footer-nav");
	if(e != null) e.className = smScheme[0];
	e = document.getElementById("sm-map-body");
	if(e != null) e.className = smScheme[1];
	e = document.getElementById("smAuthor");
	if(e != null) smAuthor = e.value;
	smSetTags();
	smTag = -1;
	if(smTags.length > 1) smAddEvent(document,'keydown',smKeyNav,true);
	var vB;
	for (var t = 0; t < smTags.length; t++) {
	n = document.getElementById("stN"+smTags[t]);
	o = document.getElementById("stCb"+smTags[t]);
	if(o!=null && n!=null){
	vB = parseInt(n.style.top)+(o.scrollHeight+90);
	smVbound = (smVbound>vB)?smVbound:vB;
	}
	}
	self.focus();
}

function smGmapLoad(v) {
    if (GBrowserIsCompatible()) {
	var smLLZ = v.split(':');
	var e = document.getElementById("sm-gmap");
	if(e != null){
		var gmap = new GMap2(document.getElementById("sm-gmap"));
		gmap.setCenter(new GLatLng(smLLZ[1], smLLZ[2]), parseInt(smLLZ[3]));
		gmap.disableDragging();
		return true;
		} else {
		return false;
		}
      }
	else{
	return false;
	}
}

function smYmapLoad(v) {
	var smLLZ = v.split(':');
	var e = document.getElementById("sm-ymap");
	if(e != null){
		var myPoint = new YGeoPoint(smLLZ[1],smLLZ[2]);
		var ymap = new YMap(document.getElementById('sm-ymap'));
		ymap.setMapType(YAHOO_MAP_REG);
		ymap.drawZoomAndCenter(myPoint, parseInt(smLLZ[3]));
		return true;
	} else {
	return false;
	}
}

function smSLmapLoad(v) {
	var smLLZ = v.split(':');
	var e = document.getElementById("map-container");
	if(e != null){
		mapInstance = new SLMap(document.getElementById('map-container'),{hasZoomControls: false, hasPanningControls: false});
		mapInstance.centerAndZoomAtSLCoord(new XYPoint(smLLZ[1],smLLZ[2]),parseInt(smLLZ[3])); 
	}
}

function smGetScheme(col){
	var smScheme = [];
	smScheme [0] = "sm-map-nav-"+col;
	smScheme [1] = "sm-map-"+col;
	smScheme [2] = "sm-map-overlay-"+col;
	return smScheme;
}

function smKeyNav(e) {
	var kc = (e == null)?event.keyCode:(e.keyCode == null)?e.which:e.keyCode;
	if(kc == 27 || kc == 77) smRemove();
	else if(kc == 78 || kc == 191 ) smSetNode('+');
	else if(kc == 66 || kc == 188 ) smSetNode('-');
}

function smSetTags(){
	smTags = document.getElementById("smTagSeq").value.split(':');
}

function smSetNode(a) {
 	if(smTag != -1){
 	var e = document.getElementById("stN"+smTags[smTag]);
 	smTagHover(e,'hidden');
 	}
 	a == '+'?smTag++:smTag--;
 	if(smTag > smTags.length-2) smTag = 0;
	if(smTag < 0) smTag = smTags.length-2;
	e = document.getElementById("stN"+smTags[smTag]);
	smTagHover(e,'visible');
	return;
}

function smTagHover(e,v){

	var i = e.id.substr(3);
	var n = document.getElementById("stN"+i);
	var c = document.getElementById("stC"+i);
	var oz = n.style.zIndex;
	var z = "0";

	if(v=='visible'){
	z = (oz == "10" || oz == "5")?"15":"20";
	smGrowTag(i);
	}
	if(v=='hidden'){
	z = (oz == "20")?"0":"10";
	smShrinkTag(i);
	}
	n.style.zIndex = z;
	if(z == "0" || z =="20"){
	c.style.visibility = v;
	}
}

function smGrowTag(i){
	var s = document.getElementById("icS"+i);
	var w = document.getElementById("icW"+i);
	if(s != null){
	s.style.fontSize = "1.2em";
	s.style.width = "1.9em";
	s.style.height = "1.9em";
	}
	if(w != null){
	w.style.fontSize = "1.2em";
	w.style.width = "1.9em";
	w.style.height = "1.9em";
	}
}

function smShrinkTag(i){
	var s = document.getElementById("icS"+i);
	var w = document.getElementById("icW"+i);
	if(s != null){
	s.style.fontSize = "1em";
	s.style.width = "2em";
	s.style.height = "2em";
	}
	if(w != null){
	w.style.fontSize = "1em";
	w.style.width = "2em";
	w.style.height = "2em";
	}
}

function smFocusTag(e) {
	var i = e.id.substr(3);
	var n = document.getElementById("stN"+i);
	var c = document.getElementById("stC"+i);
	var o=null;
	for (var t = 0; t < smTags.length; t++) {
	o = document.getElementById("stN"+smTags[t]);
	if(o!= null && o.style.zIndex == '10')o.style.zIndex = '5';
	}
	smShrinkTag(i);
	n.style.zIndex = '10';
	c.style.visibility = "visible";
}

function smCloseTag(e) {
	var i = e.id.substr(3);
	var n = document.getElementById("stN"+i);
	var c = document.getElementById("stC"+i);
	n.style.zIndex = '0';
	c.style.visibility = "hidden";
}

function smShowHide(e,v) {
	 e = document.getElementById(e);
	 if(v == "") v=(e.style.visibility=="visible")?"hidden":"visible";
	 e.style.visibility = v;
}


function smShowHideAll(e){
	smSetTags();
	for (var c = 0; c < smTags.length; c++) {
	if(smTags[c] != 'x') smShowHide(e+smTags[c],'');
	}
}

function smDisplay(ele,dp){
	if(dp == "") dp=($("#"+ele).css("display")=="block")?"none":"block";
	$("#"+ele).css("display",dp);
}

function smSetTags(){
	var s = document.getElementById("smTagSeq");
	if(s != null) smTags = s.value.split(':');
}

function smExpandMap(){
	var p = document.getElementById("sm-map-print");
	if(p != null){
	var d = (p.style.display=="block")?"none":"block";
	p.style.display = d;
	if(document.getElementById("sm-window") != null){
		smResizeMask(false);
	}
	}
}

function smAddEvent(element, eventType, handler, capture)
{
	try
	{
		if (element.addEventListener)
			element.addEventListener(eventType, handler, capture);
		else if (element.attachEvent)
			element.attachEvent("on" + eventType, handler);
	}
	catch (e) {}
};

function smRemoveEvent(element, eventType, handler, capture)
{
	try
	{
		if (element.removeEventListener)
			element.removeEventListener(eventType, handler, capture);
		else if (element.detachEvent)
			element.detachEvent("on" + eventType, handler);
	}
	catch (e) {}
};
