var bset=false;
var actrow;

function getElement(id)
{
if (document.layers)
    return document.layers[id];
else if (document.all)
    return document.all[id];
else if (document.getElementById)
    return document.getElementById(id);
return null;
}

function ShowPicker(row)
{
//alert(CPcreated);
    if (!CPcreated)
	createCP();
    actrow=row;
    var cp=getElement('colorpicker');
    cp.style.position='absolute';
    var i=getElement(actrow+'img');
    var coords=GetCoords(i);
    cp.style.left=coords[0]+'px';
    cp.style.top=coords[1]+'px';
    cp.style.visibility='visible';
    cp.style.display='block';
    var cpc=getElement('colorpicker_close');
    cpc.style.visibility='visible';
//    cpc.style.display='block';
}

function ShowPickerObj(obj, row)
{
    if (!CPcreated)
	createCP();
    actrow=row;
    var cp=getElement('colorpicker');
    cp.style.position='absolute';
    var i=getElement(obj);
    var coords=GetCoords(i);
    cp.style.left=coords[0]+'px';
    cp.style.top=coords[1]+'px';
    cp.style.visibility='visible';
    cp.style.display='block';    
    var cpc=getElement('colorpicker_close');
    cpc.style.visibility='hidden';
//    cpc.style.display='none';
}

function HidePicker()
{
    var cp=getElement('colorpicker');
    cp.style.visibility='hidden';
    cp.style.display='none';
}

function ColorClick(color)
{
    getElement(actrow+'img').style.backgroundColor='#'+color;
    getElement(actrow+'rgb').value=color;
    HidePicker();
    return false;
}

function GetCoords(object)
{
    var l=0;
    var t=0;
    if (object.offsetParent)
    {
	l=object.offsetLeft;
	t=object.offsetTop;
	while(object=object.offsetParent)
	{
	    l+=object.offsetLeft;
	    t+=object.offsetTop;
	}
    }
    return[l,t];
}

function GetCoordsById(id)
{
    return GetCoords(getElement(id));
}

/******** ALLY SEARCH **********/

/*    ainputv.onkeyup = function () { SearchAlly(ac); return false; };
*/

function SearchAlly(aac)
{
    var ainput = getElement('av'+aac);
    if (ainput.value.length >=1)
    {
        try {
                oHTTP = new ActiveXObject("Microsoft.XMLHTTP");
        }catch (E) {
                oHTTP = false;
        }
        if (!oHTTP && typeof XMLHttpRequest!='undefined')
                oHTTP = new XMLHttpRequest();
        if (oHTTP != null) {
                var sURL = "searchally.php?tag="+ainput.value+"&ainp="+aac;
		temp_ainput = ainput;
                oHTTP.open('GET', sURL, true);
                oHTTP.onreadystatechange = ShowAllySearchResult;
                oHTTP.send(null);
	}	
    }
    else
    {
	//ainput.style.backgroundColor="";
	getElement("a"+aac).value=0;
	HideResultDiv();
    }
}

var temp_ainput;

function ShowAllySearchResult()
{
        if (oHTTP.readyState == 4) 
	{
                if (oHTTP.responseText != "") 
		{
		    var result = oHTTP.responseText.split("^#^");
		    if (result.length>=2)
		    {		    
			var ainput=getElement("av"+result[0]);
//alert(result);
			if (result.length==2)
			{
			    
			}
			if (result.length==3)
			{
			    var result2=result[1].split("^$^");
			    //resultdiv.innerHTML = result[1];
			//    ainput.style.backgroundColor="#00cc00";			    
			    //getElement('a'+result[0]).value=result2[1];
			    SetAlly(result[0],result2[0],result2[1]);
			    HideResultDiv();
			}
			else
			{

			//   ainput.style.backgroundColor="#cc0000";
			    var resultdiv = getElement('allysearchresult');
			    resultdiv.style.display = 'block';
			    var coords=GetCoords(ainput);
			    resultdiv.style.position = "absolute";
		    	    resultdiv.style.left=coords[0]+'px';
		    	    resultdiv.style.top=coords[1]+20+'px';
			    
			    var temp="<table>";
//			    alert(result.length);
			    for (var i=1;i<result.length;i++)
			    {
//				getElement('av'+result[0]).value=result[i];
				var result2=result[i].split("^$^");
				temp+="<tr><td onclick='SetAlly("+result[0]+",\""+result2[0]+"\",\""+result2[1]+"\");' onmouseout='this.style.backgroundColor=\"\";' onmouseover='this.style.backgroundColor=\"#009900;\";'>"+result2[0]+"</td></tr>";
			    }
			    
			    temp+="</table>";
			    resultdiv.innerHTML=temp;
			}
		    }
		}
	}
}

function SetAlly(aac,tag,aid)
{
    var ainp = getElement("a"+aac);
    var avinp = getElement("av"+aac);
    ainp.value=aid.toString();
    avinp.value=tag.toString();
    HideResultDiv();    
    
}

function HideResultDiv()
{
    var res= getElement("allysearchresult");
    res.style.display="none";
}


/*******************************/

var cb_options_save=null;

function FillSelect(row)
{
    var cb=getElement(row);
    for (var i=0;i<allys.length;i++)
    {
	var new_ally= new Option(allys[i][1],allys[i][0] );
	cb.options[cb.length]=new_ally;
    }    
}

var hex="0123456789ABCDEF";

function Dec2Hex(dec)
{
    var inp=parseInt(dec);
    var out="";
    while (inp!=0)
    {
    	temp=hex.charAt(inp%16);
	if (inp%16==0)
	{
	    temp="0";
	}
	out=temp+out;
	inp = inp >> 4;
    }

    if (out=="")
	out="00";
    return out.toString();
}

var searchcount;
var searchtype;

function Search(stype,scount)
{
    searchcount=scount;
    searchtype=stype;
    var coords=GetCoordsById(stype+scount+'searchimg');
    var si = getElement(stype+scount);
//    st.style.enabled='false';

    getElement('searchinput').value="";
    getElement('searchresult').innerHTML="";

    var sf = getElement("search");
    sf.style.position='absolute';
    sf.style.left=coords[0]-2+'px';
    sf.style.top=coords[1]-3+'px';    //alert(stype+" - "+scount);
    sf.style.display='block';
    getElement('searchinput').focus();
}

function DoSearch(stype,scount)
{
    var si = getElement('searchinput');
    if (si.value.length >1)
    {
	try
	{
	    oHTTP = new ActiveXObject("Microsoft.XMLHTTP");
	}
	catch (E)
	{
	    oHTTP = false;	    
	}
	if (!oHTTP && typeof XMLHttpRequest!='undefined')
                oHTTP = new XMLHttpRequest();
	if (oHTTP != null)	
	{
	    var sURL = "search.php?type="+stype+"&count="+scount+"&search="+si.value;
//    alert(sURL);
	    oHTTP.open('GET', sURL, true);
	    oHTTP.onreadystatechange = DoSearchFinish;
	    oHTTP.send(null);
	}	
    }
}

function DoSearchFinish()
{
//    alert(oHTTP.responseText);
    if (oHTTP.readyState == 4 && oHTTP.responseText != "")
    {
	var result = oHTTP.responseText.split("^#^");
	//alert(result);
	if (result.length==3)
	{
	    var resultdiv = getElement("searchresult");	
	    resultdiv.innerHTML=result[2];
	}
    }
}

function AcceptSearch(stype,scount,svalue)
{
    var inp=getElement(stype+scount);
    inp.value=svalue;

    if (stype=="p")
    {
    }
    else if (stype=="a")
    {
    
    }
    HideSearch();
}

function CancelSearch()
{
    HideSearch();
}

function HideSearch()
{
    var sf = getElement("search");
    sf.style.display='none';
}

function CreateSearchButton(stype,scount)
{
    var pimgsearch = document.createElement('img');
    attr = document.createAttribute('src');
    attr.nodeValue='http://static.twmaps.org/search.png';
    pimgsearch.setAttributeNode(attr);

    attr = document.createAttribute('id');
    attr.nodeValue=stype+scount+'searchimg';
    pimgsearch.setAttributeNode(attr);

    pimgsearch.style.position='relative';
    pimgsearch.style.top='3px';
    pimgsearch.style.left='2px';

    attr = document.createAttribute('border');
    attr.nodeValue='0';
    pimgsearch.setAttributeNode(attr);

    var pasearch = document.createElement('a');
    attr = document.createAttribute('href');
    attr.nodeValue='#';
    pasearch.setAttributeNode(attr);

    pasearch.onclick = function () { Search(stype,scount); return false; };
    pasearch.appendChild(pimgsearch);
    //Suche ENDE

    return pasearch;
}

function CreateRGBHidden(stype,scount)
{
    var prgbhidden = document.createElement('input');
    attr = document.createAttribute('type');
    attr.nodeValue="hidden";
    prgbhidden.setAttributeNode(attr);
    attr = document.createAttribute('name');
    attr.nodeValue=stype+scount+"rgb";
    prgbhidden.setAttributeNode(attr);
    attr = document.createAttribute('id');
    attr.nodeValue=stype+scount+"rgb";
    prgbhidden.setAttributeNode(attr);
    attr = document.createAttribute('value');
    attr.nodeValue="ffffff";
    prgbhidden.setAttributeNode(attr);
    return prgbhidden;
}

function CreateColorSelect(stype,scount)
{
    var pa = document.createElement('a');
    attr = document.createAttribute('href');
    attr.nodeValue='#';
    pa.setAttributeNode(attr);
    attr = document.createAttribute('id');
    attr.nodeValue=stype+scount+'l';
    pa.setAttributeNode(attr);

    var pc = scount.toString();
    pa.onclick = function () { ShowPicker(stype+pc); return false; };

    var pimg = document.createElement('img');
    attr = document.createAttribute('src');
    attr.nodeValue='http://static.twmaps.org/blank2.png';
    pimg.setAttributeNode(attr);

    attr = document.createAttribute('id');
    attr.nodeValue=stype+scount+'img';
    pimg.setAttributeNode(attr);

    attr = document.createAttribute('border');
    attr.nodeValue='0';
    pimg.setAttributeNode(attr);

    attr = document.createAttribute('width');
    attr.nodeValue="20";
    pimg.setAttributeNode(attr);

    attr = document.createAttribute('height');
    attr.nodeValue="20";
    pimg.setAttributeNode(attr);

    pimg.style.borderColor='#000000';
    pimg.style.borderStyle='solid';
    pimg.style.borderSize='1px';
    pimg.style.backgroundColor='#ffffff';
    pimg.style.position='relative';
    pimg.style.left='5px';
    pimg.style.top='5px';
    pa.appendChild(pimg);
    return pa;
}

var allycount=0;
var aselect_save=null;
function AddAllyMarker()
{
    var attr;
    allycount++;
    var allyspan=getElement('allymarkers');
    var aselect;
    if (aselect_save!=null)
    {
	aselect= aselect_save.cloneNode(true);
	aselect.setAttribute('name','a'+allycount);
	aselect.setAttribute('id','a'+allycount);    
    }
    else
    {
    aselect= document.createElement('select');
    attr = document.createAttribute('name');
    attr.nodeValue='a'+allycount;
    aselect.setAttributeNode(attr);
    attr = document.createAttribute('id');
    attr.nodeValue='a'+allycount;
    aselect.setAttributeNode(attr);

    for (var i=0;i<allys.length;i++)
    {
	var new_ally= new Option(allys[i][1],allys[i][0] );
	aselect.options[aselect.length]=new_ally;
    }    
    aselect_save=aselect;
    }
    //Color Selector
    var aa = CreateColorSelect('a',allycount);
    //Suche Button
    var aasearch = CreateSearchButton('a',allycount);
    //Hidden RGB Input
    var argbhidden =CreateRGBHidden('a',allycount);

    
    allyspan.appendChild(aselect);    
    allyspan.appendChild(aasearch); 
    allyspan.appendChild(aa); 
    allyspan.appendChild(argbhidden);
    allyspan.appendChild(document.createElement('br'));

//    FillSelect('a'+allycount);
}

var playercount=0;

function AddPlayerMarker()
{
    var attr;
    playercount++;
    var playerspan=getElement('playermarkers');

    var pinput= document.createElement('input');
    attr = document.createAttribute('name');
    attr.nodeValue='p'+playercount;
    pinput.setAttributeNode(attr);
    attr = document.createAttribute('id');
    attr.nodeValue='p'+playercount;
    pinput.setAttributeNode(attr);
    attr = document.createAttribute('type');
    attr.nodeValue='text';
    pinput.setAttributeNode(attr);

    //Color Selector
    var pa = CreateColorSelect('p',playercount);
    //Suche Button
    var pasearch = CreateSearchButton('p',playercount);
    //Hidden RGB Input
    var prgbhidden =CreateRGBHidden('p',playercount);
        
    playerspan.appendChild(pinput);    
    playerspan.appendChild(pasearch); 
    playerspan.appendChild(pa); 
    playerspan.appendChild(prgbhidden);
    playerspan.appendChild(document.createElement('br'));
}

var villagecount=0;

function AddVillageMarker()
{
    var attr;
    villagecount++;
    var villagespan=getElement('villagemarkers');

    var vinputx= document.createElement('input');
    attr = document.createAttribute('name');
    attr.nodeValue='v'+villagecount+'x';
    vinputx.setAttributeNode(attr);
    attr = document.createAttribute('id');
    attr.nodeValue='v'+villagecount+'x';
    vinputx.setAttributeNode(attr);
    attr = document.createAttribute('type');
    attr.nodeValue='text';
    vinputx.setAttributeNode(attr);
    vinputx.style.width="30px";

    var vinputy= document.createElement('input');
    attr = document.createAttribute('name');
    attr.nodeValue='v'+villagecount+'y';
    vinputy.setAttributeNode(attr);
    attr = document.createAttribute('id');
    attr.nodeValue='v'+villagecount+'y';
    vinputy.setAttributeNode(attr);
    attr = document.createAttribute('type');
    attr.nodeValue='text';
    vinputy.setAttributeNode(attr);
    vinputy.style.width="30px";

    var pa = CreateColorSelect('v',villagecount);
    var prgbhidden =CreateRGBHidden('v',villagecount);
    villagespan.appendChild(vinputx);    
    villagespan.appendChild(vinputy);    
    villagespan.appendChild(pa); 
    villagespan.appendChild(prgbhidden);
    villagespan.appendChild(document.createElement('br'));
}

function AddVillageMarkerMap1()
{
    var attr;
    villagecount++;
    var villagespan=getElement('villagemarkers');

    var vinputx= document.createElement('input');
    attr = document.createAttribute('name');
    attr.nodeValue='v'+villagecount+'x';
    vinputx.setAttributeNode(attr);
    attr = document.createAttribute('id');
    attr.nodeValue='v'+villagecount+'x';
    vinputx.setAttributeNode(attr);
    attr = document.createAttribute('type');
    attr.nodeValue='text';
    vinputx.setAttributeNode(attr);
    vinputx.style.width="25px";

    var vinputy= document.createElement('input');
    attr = document.createAttribute('name');
    attr.nodeValue='v'+villagecount+'y';
    vinputy.setAttributeNode(attr);
    attr = document.createAttribute('id');
    attr.nodeValue='v'+villagecount+'y';
    vinputy.setAttributeNode(attr);
    attr = document.createAttribute('type');
    attr.nodeValue='text';
    vinputy.setAttributeNode(attr);
    vinputy.style.width="25px";

    var vinputz= document.createElement('input');
    attr = document.createAttribute('name');
    attr.nodeValue='v'+villagecount+'z';
    vinputz.setAttributeNode(attr);
    attr = document.createAttribute('id');
    attr.nodeValue='v'+villagecount+'z';
    vinputz.setAttributeNode(attr);
    attr = document.createAttribute('type');
    attr.nodeValue='text';
    vinputz.setAttributeNode(attr);
    vinputz.style.width="25px";

    var pa = CreateColorSelect('v',villagecount);
    var prgbhidden =CreateRGBHidden('v',villagecount);
    villagespan.appendChild(vinputx);    
    villagespan.appendChild(vinputy);    
    villagespan.appendChild(vinputz);    
    villagespan.appendChild(pa); 
    villagespan.appendChild(prgbhidden);
    villagespan.appendChild(document.createElement('br'));
}


function FillAllyMarker(index,id,r,g,b)
{
    getElement('a'+index).value=id;
    getElement('a'+index+'rgb').value=Dec2Hex(r)+Dec2Hex(g)+Dec2Hex(b);
    getElement('a'+index+'img').style.backgroundColor='#'+Dec2Hex(r)+Dec2Hex(g)+Dec2Hex(b);

}

function FillPlayerMarker(index,name,r,g,b)
{
    getElement('p'+index).value=name;
    getElement('p'+index+'rgb').value=Dec2Hex(r)+Dec2Hex(g)+Dec2Hex(b);
    getElement('p'+index+'img').style.backgroundColor='#'+Dec2Hex(r)+Dec2Hex(g)+Dec2Hex(b);
//    getElement('p'+index+'img').src='http://static.omnipraesent.de:81/blank2.png';
//    alert(index);
}

function FillVillageMarker(index,x,y,r,g,b)
{
    getElement('v'+index+'x').value=x;
    getElement('v'+index+'y').value=y;
    getElement('v'+index+'rgb').value=Dec2Hex(r)+Dec2Hex(g)+Dec2Hex(b);
    getElement('v'+index+'img').style.backgroundColor='#'+Dec2Hex(r)+Dec2Hex(g)+Dec2Hex(b);
}

function FillVillageMarkerMap1(index,x,y,z,r,g,b)
{
    getElement('v'+index+'x').value=x;
    getElement('v'+index+'y').value=y;
    getElement('v'+index+'z').value=z;
    getElement('v'+index+'rgb').value=Dec2Hex(r)+Dec2Hex(g)+Dec2Hex(b);
    getElement('v'+index+'img').style.backgroundColor='#'+Dec2Hex(r)+Dec2Hex(g)+Dec2Hex(b);
}
var oHTTP = false;
var m_x = 0;
var m_y = 0;


function MapClick(e)
{
/*	m_x = e.pageX;//+GetCoordsById('map')[0];
	m_y = e.pageY;//+GetCoordsById('map')[1];
//	var zoom=Math.floor(getElement('zoom').value);
//	var c_x=Math.floor(500-(500/(zoom+1)));
//	var c_y=Math.floor(500-(500/(zoom+1)));
	var c_x=Math.floor(center_x-(500/(zoom+1)));
	var c_y=Math.floor(center_y-(500/(zoom+1)));
	var mapxy=GetCoords(getElement('map'));	
	try
	{
	    var v_x=event.offsetX;
	    var v_y=event.offsetY;
	}
	catch(error)
	{
	    var v_x=e.pageX-mapxy[0];
	    var v_y=e.pageY-mapxy[1];
	}
	//alert(v_x+"|"+v_y +" -- "+(zoom+1));

	if (zoom!=0)	
	{
	//    v_x=Math.floor(c_x+((v_x-500))/(zoom));
	//    v_y=Math.floor(c_y+((v_y-500))/(zoom));	
	//alert(c_x+"|"+v_x+"|"+zoom);

	    v_x=Math.floor(c_x+(v_x/(zoom+1)));
	    v_y=Math.floor(c_y+(v_y/(zoom+1)));	
	}

	//alert(v_x+"|"+v_y );stop();
*/
	var coords=GetVillageCoords(e);	
	var v_x=coords[0];
	var v_y=coords[1];
	m_x = coords[2];
	m_y = coords[3];
        try {
                oHTTP = new ActiveXObject("Microsoft.XMLHTTP");
        }catch (E) {
                oHTTP = false;
        }
        if (!oHTTP && typeof XMLHttpRequest!='undefined')
                oHTTP = new XMLHttpRequest();
        if (oHTTP != null) {
		//var v_x=421;
		//var v_y=368;
                var sURL = "village_data.php?vx="+v_x+"&vy="+v_y;
//		alert(v_x+"|"+v_y+" - "+sURL);
                oHTTP.open('GET', sURL, true);
                oHTTP.onreadystatechange = ShowVillageInfo;
                oHTTP.send(null);
	}
}


function ShowVillageInfo(){
        if (oHTTP.readyState == 4) {
                if (oHTTP.responseText != "") 
		{
                	var mapol_img=getElement("mapol_img");
			mapol_img.style.display="block";
			mapol_img.style.visibility="visible";		 
			mapol_img.style.position="absolute";
			mapol_img.style.left=m_x-2+"px";
			mapol_img.style.top=m_y-2+"px";
			mapol_img.src="http://static.twmaps.org/bl"+zoom+"_2.gif";

                        //alert("Response erhalten, Status 200");
                	var mapol=getElement("mapol");
			mapol.style.visibility="visible";		 
			mapol.style.display="block";
			mapol.style.position="absolute";
			mapol.style.left=m_x+zoom+5+"px";   
			mapol.style.top=m_y+zoom+5+"px";

			var mapol = getElement("mapoldata");
			mapol.innerHTML = oHTTP.responseText;
			try
			{
			    var scripts = oHTTP.responseText.match(/<script.*>(.*)<\/script>/gi);
			    eval(scripts[0].toString().replace(/<script.*?>/,"").replace(/<\/script>/,""));
			}
			catch(E)
			{
			    //alert(E);
			}
                }
        }
}

function HideVillageInfo(){
        var mapol_img=getElement("mapol_img");
	mapol_img.style.visibility="hidden";		 
	mapol_img.style.display="none";
	mapol_img.style.position="absolute";
	mapol_img.style.left="-500px";
	mapol_img.style.top="-500px";
    	var mapol=getElement("mapol");
	mapol.style.visibility="hidden";		 
	mapol.style.display="none";
    	mapol.style.position="absolute";
	mapol.style.left="-500px";   
	mapol.style.top="-500px";
	HidePicker();
}

var settingsheight;

function ToggleSettings(link)
{
    var set=getElement('tab_settings');
    var arr=getElement('tab_arrow_settings');
    
    if (set.style.display=='none')
    {
	set.style.display='block';
	arr.src='http://static.twmaps.org/pu.png';
    }
    else
    {
	set.style.display='none';
	arr.src='http://static.twmaps.org/pd.png';
    }
    link.blur();
}

function ToggleTab(atab)
{
    for (i=0;i<tabs.length;i++)
    {
	if (tabs[i]!=atab)
	{
	    HideTab(tabs[i]);
	}
    }    
    if (atab == activetab)
        HideTab(atab);
    else
	ShowTab(atab);
/*    if (tab.style.display=='none')
    {
	tab.style.display='block';
	arr.src='http://static.omnipraesent.de:81/pu.png';
    }
    else
    {
	tab.style.display='none';
	arr.src='http://static.omnipraesent.de:81/pd.png';
    }
*/    
    HideMouseMarker();
    HideVillageInfo();
}

function HideTab(atab)
{
        var tab=getElement(atab);
	var arr=getElement(atab+"_arrow");
	
	tab.style.display='none';
	arr.src='http://static.twmaps.org/pd.png';
	
	if (atab == activetab)
	activetab ="";
}

function ShowTab(atab)
{
        var tab=getElement(atab);
	var arr=getElement(atab+"_arrow");

	tab.style.display='block';
	arr.src='http://static.twmaps.org/pu.png';
	activetab=atab;
}

function GetVillageCoords(e)
{
	var c_x=Math.floor(center_x-(500/(zoom+1)));
	var c_y=Math.floor(center_y-(500/(zoom+1)));
	var mapxy=GetCoords(getElement('map'));	
	try
	{
	    var v_x=event.offsetX;
	    var v_y=event.offsetY;
	}
	catch(error)
	{
	    var v_x=e.pageX-mapxy[0];
	    var v_y=e.pageY-mapxy[1];
	}

	v_x+=500%(zoom+1);
	v_y+=500%(zoom+1);
	var v2_x=0;
	var v2_y=0;
	var img_x=0;
	var img_y=0;

	if (zoom!=0)	
	{
	    v2_x=Math.floor(c_x+(v_x/(zoom+1)));
	    v2_y=Math.floor(c_y+(v_y/(zoom+1)));	
	}
	else
	{
	    v2_x=v_x;
	    v2_y=v_y;
	}


	var img_x = (v2_x-center_x+(500/(zoom+1)))*(zoom+1)+mapxy[0];
	var img_y = (v2_y-center_y+(500/(zoom+1)))*(zoom+1)+mapxy[1];

    return [v2_x,v2_y,img_x,img_y];    
}

function MapMouseMove(e)
{
    if (zoom>=2)
    {
	var c_x=Math.floor(center_x-(500/(zoom+1)));
	var c_y=Math.floor(center_y-(500/(zoom+1)));
	var mapxy=GetCoords(getElement('map'));	
	try
	{
	    var v_x=event.offsetX;
	    var v_y=event.offsetY;
	}
	catch(error)
	{
	    var v_x=e.pageX-mapxy[0];
	    var v_y=e.pageY-mapxy[1];
	}

	v_x+=500%(zoom+1);
	v_y+=500%(zoom+1);

	var v2_x=0;
	var v2_y=0;

	if (zoom!=0)	
	{
	    v2_x=Math.floor(c_x+(v_x/(zoom+1)));
	    v2_y=Math.floor(c_y+(v_y/(zoom+1)));	
	}
	else
	{
	    v2_x=v_x;
	    v2_y=v_y;
	}

	var img_x = (v2_x-center_x+(500/(zoom+1)))*(zoom+1)+mapxy[0];
	var img_y = (v2_y-center_y+(500/(zoom+1)))*(zoom+1)+mapxy[1];

	var mapol_img=getElement("rd_top");
	mapol_img.style.left=img_x-1+"px";
	mapol_img.style.top=img_y-1+"px";
	mapol_img.style.width=zoom+2+"px";
	mapol_img.style.display="block";

	var mapol_img=getElement("rd_left");
	mapol_img.style.left=img_x-1+"px";
	mapol_img.style.top=img_y-1+"px";
	mapol_img.style.height=zoom+2+"px";
	mapol_img.style.display="block";

	var mapol_img=getElement("rd_right");
	mapol_img.style.left=img_x+zoom+"px";
	mapol_img.style.top=img_y-1+"px";
	mapol_img.style.height=zoom+2+"px";
	mapol_img.style.display="block";

	var mapol_img=getElement("rd_bottom");
	mapol_img.style.left=img_x-1+"px";
	mapol_img.style.top=img_y+zoom+"px";
	mapol_img.style.width=zoom+2+"px";
	mapol_img.style.display="block";
    }
}

function HideMouseMarker()
{
	var mapol_img=getElement("rd_bottom");
	mapol_img.style.display="none";
	var mapol_img=getElement("rd_top");
	mapol_img.style.display="none";
	var mapol_img=getElement("rd_left");
	mapol_img.style.display="none";
	var mapol_img=getElement("rd_right");
	mapol_img.style.display="none";

}

function MapMouseOut(e)
{
    getElement("rd_top").style.left="-1000px";
    getElement("rd_right").style.left="-1000px";
    getElement("rd_bottom").style.left="-1000px";
    getElement("rd_left").style.left="-1000px";
}

function registerEvents()
{
    var map = getElement('map');
    var preview = getElement('pm');
    if (window.addEventListener)
    {
	map.addEventListener('mouseup',MapClick,false);
	map.addEventListener('mousemove',MapMouseMove,false);
	map.addEventListener('onload',MapOnLoad,false);
//	preview.addEventListener('ondblclick',PmDblClick,false);
    }
    else
    {
	map.attachEvent('onmouseup',MapClick);	
	map.attachEvent('onmousemove',MapMouseMove);	
	map.attachEvent('onload',MapOnLoad);
//	preview.attachEvent('ondblclick',PmDblClick);
    }
//    DragHandler.attach(getElement('pm'));
    if (preview!=null)
        DragHandler.attach(preview);
}

function PmDblClick(e)
{
    open_settings();
    var x=getElement('settingsCenterX').value;
    var y=getElement('settingsCenterY').value;
    var z=parseInt(getElement('zoom').value);
    CenterMap(x,y,(z+1));
}

var DragHandler = {
	// private property.
	_oElem : null,
	_doRefresh : false,
    
	// public method. Attach drag handler to an element.
	attach : function(oElem) {
		oElem.onmousedown = DragHandler._dragBegin;
		oElem.ondblclick = PmDblClick;
		// callbacks
		oElem.dragBegin = new Function();
		oElem.drag = new Function();
		oElem.dragEnd = new Function();

		return oElem;
	},
 
 
	// private method. Begin drag process.
	_dragBegin : function(e) {
		var oElem = DragHandler._oElem = this;
		if (isNaN(parseInt(oElem.style.right))) { oElem.style.right ='0px'; alert("bla"); }
		if (isNaN(parseInt(oElem.style.bottom))) { oElem.style.top ='0px'; }
		var x = parseInt(oElem.style.right);
		var y = parseInt(oElem.style.bottom);
		e = e ? e : window.event;
		oElem.mouseX = e.clientX;
		oElem.mouseY = e.clientY;
		oElem.dragBegin(oElem, x, y);
		document.onmousemove = DragHandler._drag;
		document.onmouseup = DragHandler._dragEnd;
		_doRefresh=false;
		return false;
	},
 
 
	// private method. Drag (move) element.
	_drag : function(e) {
		var oElem = DragHandler._oElem;
		var x = parseInt(oElem.style.right);
		var y = parseInt(oElem.style.bottom);
 
		e = e ? e : window.event;
		var dx= x - (e.clientX - oElem.mouseX);
		var dy= y - (e.clientY - oElem.mouseY);
		
		if (dx<=0)
		    dx = 0;
		if (dx>=200-(200/(zoom+1)))    
		    dx=200-(200/(zoom+1));
		
		if (dy<=0)
		    dy = 0;
		if (dy>=200-(200/(zoom+1)))    
		    dy=200-(200/(zoom+1));		
		    
		oElem.style.right = dx + 'px';
		oElem.style.bottom = dy + 'px';
//    getElement('debug2').value = x+"|"+y;
 		oElem.mouseX = e.clientX;
		oElem.mouseY = e.clientY;
 
		oElem.drag(oElem, x, y);
		_doRefresh=true; 
		return false;
	},
 
 
	// private method. Stop drag process.
	_dragEnd : function() {
		var oElem = DragHandler._oElem;
 
		var x = parseInt(oElem.style.right);
		var y = parseInt(oElem.style.bottom);
 
		var rx=200-(x+(100/(zoom+1)));
		var ry=200-(y+(100/(zoom+1)));
//    getElement('debug3').value = rx+"|"+ry;
//    getElement('debug4').value = 5*rx+"|"+5*ry;
		oElem.dragEnd(oElem, x, y);
		document.onmousemove = null;
		document.onmouseup = null;
		DragHandler._oElem = null;
		if (_doRefresh)
		{
			open_settings();
			var x = Math.floor(5*rx);
			var y = Math.floor(5*ry,zoom);
			var z;
	
			if (maptype==0)
			{			
			    var c = Map0CoordToOriginal(x,y);
			    CenterMap(c[0],c[1]);
			}
			else if (maptype==1)
			{
			    var c = convert_coords_to_s3(x,y);
			    CenterMap1(c[0],c[1],c[2],zoom);
			}
			else if (maptype==2)
			{	
			    CenterMap(x,y);
			}
		}
	}
}



function MapOnLoad(e)
{
    MapVisibility(true);
}

function PreviewVisibility(vis)
{
    if (vis)
    {
	var pm_x=200-(center_x/5)-(100/(zoom+1));
	var pm_y=200-(center_y/5)-(100/(zoom+1));

	//alert(center_x+" "+ center_y+" "+zoom+" "+pm_x+" "+pm_y);
	getElement('pm').style.right=pm_x+'px';
	getElement('pm').style.bottom=pm_y+'px';
    
	getElement('preview').style.visibility='visible';
	getElement('sp').style.visibility='hidden';
	getElement('cp').style.visibility='visible';
	getElement('pm').style.visibility='visible';
	HideMouseMarker();
    }
    else
    {
	getElement('preview').style.visibility='hidden';
	getElement('sp').style.visibility='visible';
	getElement('cp').style.visibility='hidden';
	getElement('pm').style.visibility='hidden';
    }
}

function ShowMenu(menu, d)
{
    var c=GetCoordsById(d);
    var m=getElement(menu);
    m.style.display='block';
    m.style.visibility='visible';
    m.style.position='absolute';
    m.style.left = c[0]+'px';
    m.style.top = c[1]+15+'px';
}

function HideMenu(menu)
{
    var m=getElement(menu)
    m.style.display='none';
    m.style.visibility='hidden';
    m.style.left='-1000px';
}

function RefreshMap()
{
    MapVisibility(false);
    HideVillageInfo();
    getElement('settingsForm').submit();
}

function CenterMap(x,y,zoom)
{
    getElement('settingsCenterX').value=x;
    getElement('settingsCenterY').value=y;
    getElement('zoom').value=zoom;
    getElement('settingsForm').submit();
    return false;
}

function CenterMap1(x,y,z,zoom)
{
    getElement('settingsCenterX').value=x;
    getElement('settingsCenterY').value=y;
    getElement('settingsCenterZ').value=z;
    getElement('zoom').value=zoom;
    getElement('settingsForm').submit();
    return false;
}


/*** IsMarked ***/
function IsAllyMarked(id)
{
    for (i=1;i<=allycount;i++)
    {
	if (getElement("a"+i)!=null && getElement("a"+i).value==id)
	    return i;
    }
    return -1;
}

function IsPlayerMarked(id)
{
    for (i=1;i<=playercount;i++)
    {
	if (getElement("p"+i)!= null && getElement("p"+i).value==id)
	    return i;
    }
    return -1;
}

function IsVillageMarked(x,y,z)
{
    for (i=1;i<=villagecount;i++)
    {
	if (z==-1)
	{
	    if (getElement("v"+i+"x")!= null && getElement("v"+i+"x").value==x && getElement("v"+i+"y").value==y)
		return i;
	}
	else
	{
	    if (getElement("v"+i+"x")!= null && getElement("v"+i+"x").value==x && getElement("v"+i+"y").value==y && getElement("v"+i+"z").value==z)
		return i;
	}
    }
    return -1;
}

function SetVillageInfoPopupPlayerMarker(name)
{
    open_settings();
    if (IsPlayerMarked(name) != -1)
    {
	getElement('vip_ap').style.visibility='hidden';
	getElement('vip_ap').style.display='none';
	getElement('vip_rp').style.visibility='visible';    
	getElement('vip_rp').style.display='block';    
    }
    else
    {
	getElement('vip_ap').style.visibility='visible';
	getElement('vip_ap').style.display='block';
	getElement('vip_rp').style.visibility='hidden';    
	getElement('vip_rp').style.display='none';
    }
}
function SetVillageInfoPopupAllyMarker(id)
{
    open_settings();    
    if (IsAllyMarked(id) !=-1)
    {
	getElement('vip_aa').style.visibility='hidden';
	getElement('vip_aa').style.display='none';
	getElement('vip_ra').style.visibility='visible';    
	getElement('vip_ra').style.display='block';    
    
    }
    else
    {
	getElement('vip_aa').style.visibility='visible';
	getElement('vip_aa').style.display='block';    
	getElement('vip_ra').style.visibility='hidden';    
	getElement('vip_ra').style.display='none';    
	
    }
}
function SetVillageInfoPopupVillageMarker(x,y,z)
{
    open_settings();    
    if (IsVillageMarked(x,y,z) !=-1)
    {
	getElement('vip_av').style.visibility='hidden';
	getElement('vip_av').style.display='none';    
	getElement('vip_rv').style.visibility='visible';    
	getElement('vip_rv').style.display='block';    
    
    }
    else
    {
	getElement('vip_av').style.visibility='visible';
	getElement('vip_av').style.display='block';    
	getElement('vip_rv').style.visibility='hidden';    
	getElement('vip_rv').style.display='none';    
	
    }
}

function ClearAllyMarker(id)
{
    var index=IsAllyMarked(id);
    if (index!=-1)
    {
        getElement("a"+index).value=0;
	SetVillageInfoPopupAllyMarker(id);
    }
}
function ClearPlayerMarker(name)
{
    var index=IsPlayerMarked(name);
    if (index!=-1)    
    {
    	getElement("p"+index).value="";
	SetVillageInfoPopupPlayerMarker(name);
    }
}
function ClearVillageMarker(x,y,z)
{
    var index = IsVillageMarked(x,y,z)
    if (index!=-1)
    {
	getElement("v"+index+"x").value="";
        getElement("v"+index+"y").value="";
	if (getElement("v"+index+"z") != null)
	    getElement("v"+index+"z").value="";
	SetVillageInfoPopupVillageMarker(x,y,z);
    }
}
function AddPopupPlayerMarker(name)
{
    AddPlayerMarker();
    FillPlayerMarker(playercount,name,255,255,255);
    ShowPickerObj('vip_ap','p'+playercount);
    SetVillageInfoPopupPlayerMarker(name);
    return false;
}
function AddPopupAllyMarker(id)
{
    AddAllyMarker();
    FillAllyMarker(allycount,id,255,255,255);
    ShowPickerObj('vip_aa','a'+allycount);
    SetVillageInfoPopupAllyMarker(id);
    return false;
}
function AddPopupVillageMarker(x,y,z)
{
    if(z!=-1)
    {
	AddVillageMarkerMap1();
	FillVillageMarkerMap1(villagecount,x,y,z,255,255,255);
    }
    else
    {
	AddVillageMarker();
	FillVillageMarker(villagecount,x,y,255,255,255);
    }
    ShowPickerObj('vip_av','v'+villagecount);
    SetVillageInfoPopupVillageMarker(x,y,z);
    return false;
}

function MapVisibility(vis)
{
    if (vis)
    {
	getElement('map').style.visibility='visible';
    }
    else
    {
    	getElement('map').style.visibility='hidden';
	PreviewVisibility(false);
    	getElement('sp').style.visibility='hidden';
    }
}

function Map0CoordToOriginal(x,y)
{
    x-=500;
    y=(y-499)*(-1);
    return [x,y];
}

function Map0CoordToTWMaps(x,y)
{
    x=x+500;
    y=y*(-1);
    y+=499;
    return [x,y];
}


function convert_coords_to_s3(x, y)
{
	if(Math.abs(x) > 499 || Math.abs(y) > 499) 
	{
		x=y=499;
	}
	x *= 2;
	y *= 2;
	con = Math.floor(y / 100) * 10 + Math.floor(x / 100);
	sec = (Math.floor(y / 10) % 10) * 10 + (Math.floor(x / 10) % 10);
	sub = (y % 10) * 2.5 + (x % 10) / 2;
//#	return array('con' => $con, 'sec' => $sec, 'sub' => $sub);
	return [con, sec, sub];
}
