var loadedRegions = new Array();

Array.prototype.min = function()
{
	if (this.length > 0)
	{
		var value = this[0];
		for (var i = 1; i < this.length; i++)
		{
			if (value > this[i]) value = this[i];
		}
		return value - 0;
	}
	else
	{
		return 0;
	}
}

Array.prototype.max = function()
{
	if (this.length > 0)
	{
		var value = this[0];
		for (var i = 1; i < this.length; i++)
		{
			if (value < this[i]) value = this[i];
		}
		return value - 0;
	}
	else
	{
		return 0;
	}
}

Array.prototype.getEach = function(position, start)
{
	var ary_values = new Array();
	for (var i = start; i < this.length; i = i + position)
	{
		ary_values.push(this[i]);
	}
	return ary_values;
}

joinArrays = function(ary1, ary2)
{
	var ary_values = new Array();
	for (var i = 0; i < ary1.length; i++)
	{
		ary_values.push(ary1[i]);
		ary_values.push(ary2[i]);
	}
	return ary_values;
}

Array.prototype.normalize = function()
{
	minvalue = this.min();
	var ary_values = new Array();
	for (var i = 0; i < this.length; i++)
	{
		ary_values.push(this[i] - minvalue);
	}
	return ary_values;
}

function getPosition(element)
{
  var elem=element,tagname="",x=0,y=0;
  while ((typeof(elem)=="object")&&(typeof(elem.tagName)!="undefined"))
  {
	y+=elem.offsetTop;
	x+=elem.offsetLeft;
	tagname=elem.tagName.toUpperCase();

	if (tagname=="BODY")
	  elem=0;

	if (typeof(elem)=="object")
	  if (typeof(elem.offsetParent)=="object")
		elem=elem.offsetParent;
  }

  position=new Object();
  position.x=x;
  position.y=y;
  return position;
}

function loadRegion(DOM_element, region)
{
	var bgpos = getPosition(document.getElementById("bg"));
	var x = DOM_element.getAttribute("coords").split(",").getEach(2,0).min() + bgpos.x;
	var y = DOM_element.getAttribute("coords").split(",").getEach(2,1).min() + bgpos.y;
	DOM_div = document.createElement("div");
	DOM_div.style.position = "absolute";
	DOM_div.style.left = x + "px";
	DOM_div.style.top = y + "px";
	if (document.all)
	{
		DOM_img = document.createElement("<img usemap='#region:"+region+"'>");
	}
	else
	{
		DOM_img = document.createElement("img");
		DOM_img.setAttribute("usemap", "#region:"+region);
	}
	DOM_img.border = "0";
	DOM_img.src = "../module/images/Image/"+region+".gif";
	DOM_div.appendChild(DOM_img);
	
	if (document.all)
	{
		DOM_map = document.createElement("<map name='region:"+region+"'>");
	}
	else
	{
		DOM_map = document.createElement("map");
		DOM_map.name =  "region:"+region;
	}
	DOM_area = DOM_element.cloneNode(false);
	DOM_area.setAttribute("shape", DOM_element.getAttribute("shape"));
	var xvalues = DOM_element.getAttribute("coords").split(",").getEach(2,0).normalize();
	var yvalues = DOM_element.getAttribute("coords").split(",").getEach(2,1).normalize();
	var coords = joinArrays(xvalues, yvalues);
	DOM_area.setAttribute("coords", coords.join(","));
	DOM_area.setAttribute("region", region);
	DOM_area.onmouseover = function() {};
	DOM_area.onmouseout = function() { hideRegion(this.getAttribute("region")) }
	DOM_map.appendChild(DOM_area);
	DOM_div.appendChild(DOM_map);
	loadedRegions[region] = DOM_div;
}

function hideRegion(region)
{
	if (loadedRegions[region])
	{
		document.body.removeChild(loadedRegions[region]);
	}
}

function showRegion(DOM_element, region)
{
	if (!loadedRegions[region])
	{
		loadRegion(DOM_element, region);
	}
	document.body.appendChild(loadedRegions[region]);
}

function UnCryptMail(s) {
	shift = (s.charCodeAt(0) - 96);
	s = s.substr(1, s.length - 1);
	var n=0;
	var r="";
	for(var i=0;i<s.length;i++) { 
		n=s.charCodeAt(i); 
		if (n>=8364) {n = 128;}
		r += String.fromCharCode(n-(shift)); 
	}
	return r;
}
function link_UnCryptMail(s)	{
	location.href=UnCryptMail(s);
}

