var ie = false;
var sichtbar = false;
var objekt = "";
var timeStart = null;
var serverTime= null;
var dragging=false;

var mx=0;
var my=0;
var dragObjTop=0;
var dragObjLeft=0;

function popup(url, width, height) {
        window.open(url, "popup", "width="+width + ",height="+height + ",left=150,top=150,resizable=yes");
}

function OpenChat(url, width, height) {
		window.open(url,"BC",'width=' + width + ',height=' + height + ',resizable=yes,scrollbars=yes,menubar=no,status=no' );
}

function popup_scroll(url, width, height) {
        window.open(url, "popup", "width="+width + ",height="+height + ",left=150,top=150,resizable=yes,scrollbars=yes");
}

function mouseMove(e) {
  mx = (ie) ? event.clientX + document.documentElement.scrollLeft : e.pageX;	
  my = (ie) ? event.clientY + document.documentElement.scrollTop : e.pageY;
  mx+=10;
  my+=10;
  move(objekt,mx,my);
}

function startTimer() {
  ie=((document.all) && (window.offscreenBuffering)) ? true : false;
  objekt = document.getElementById("layer2");
  if (!ie) document.addEventListener("mousemove", mouseMove, true);
  if (ie) document.onmousemove = mouseMove;
  
        serverTime = document.getElementById("serverTime");
        timeStart = getLocalTime();
        window.setInterval("updateServerTime("+getTime(serverTime)+")", 1000);

        // Nach Elementen mit der id timer suchen
        for(i=0;; i++) {
                element = document.getElementById("timer" + i);
                if(element != null) {
                        startTime = getTime(element);
                        if(startTime >= 0) {
                        		if (element.title=="asc") {
	                                window.setInterval("updateTimer('timer"+i+"', "+startTime+", -1)", 1000);
	                             } else {
	                                window.setInterval("updateTimer('timer"+i+"', "+startTime+", 1)", 1000);
	                             }
                        }
                } else {
                        break;
                }
        }

        // Alle resourcen starten
        for(i=0;i<10; i++) {
                element = document.getElementById("res" + i);
                if(element != null) {
                        part = element.innerHTML.split("/");
                        var start = parseInt(part[0]);
                        var max = parseInt(part[1]);
                        var respersec = element.title;
                        window.setInterval("updateRes('res"+i+"', "+start+", "+max+", "+respersec+")", 500);
                } else {
                        break;
                }
        }
}

function updateRes(elementName, start, max, respersec) {
        var now = new Date();
        current = Math.min(Math.floor(start+respersec*(getLocalTime()-timeStart)), max);
        var element = document.getElementById(elementName);
        element.innerHTML = current + "/" + max;
        
        for(i=0;; i++) {
                element = document.getElementById("need" + elementName + i);
                if (element != null) {
                  if ((current>=parseInt(element.innerHTML)) && (element.className != "")) { 
                   element.className = "";
                   if ((document.getElementById("needres0"+i).className=="") && (document.getElementById("needres1"+i).className=="") && (document.getElementById("needres2"+i).className=="")) {
                                //document.location.reload();
                                linkelement = document.getElementById("link" + i);
								part = linkelement.title.split(":");
		                        villageid = parseInt(part[0]);
        		                buildingid = parseInt(part[1]);
        		                antibot = part[2];
								// neues level suchen
								level=0;
								for(i2=0; i2<100; i2++) {
									if (document.getElementById("nextlevel" + buildingid + "-" + i2) != null) level=i2;
								}                                
								linkelement.innerHTML = "<a href='game.php?village="+villageid+"&action=headquater&antibot="+antibot+"&command=build&id="+buildingid+"'>Ausbau auf Stufe " + level + "</a>";
                   }
                  }
                } else {
                        break;
                }
        }
 }

function parseGetVars() {
	var getVars = new Array();
	var qString = unescape(top.location.search.substring(1));
	var pairs = qString.split(/\&/);
	for (var i in pairs) {
		var nameVal = pairs[i].split(/\=/);
		getVars[nameVal[0]] = nameVal[1];
	}
	return getVars;
}

function updateTimer(timerName, endTime, step) {
        timer = document.getElementById(timerName);
        time = getLocalTime()-timeStart;
        time = endTime-time*step;

        if(time < 0) {
        	var getVar = parseGetVars();
        	var newURL ='game.php?village='+getVar["village"]+'&action='+getVar["action"]+'&reloaded=1';
        	window.location.href=newURL;
        }
                
        formatTime(timer, time);
}

function updateServerTime(start) {
        if (serverTime!=null) {
                formatTime(serverTime, (start+(getLocalTime()-timeStart)));
        }
}

function getLocalTime() {
        var now = new Date();
        return Math.floor(now.getTime()/1000)
}

function getTime(element) {
        if (element != null) {
        part = element.innerHTML.split(":");

        hours = parseInt(part[0],10);
        minutes = parseInt(part[1],10);
        seconds = parseInt(part[2],10);
        time = hours*3600+minutes*60+seconds;

        return time;
        } else return null;
}

function formatTime(element, time) {
        timeString="";
        if (time<0) time=0;
        hours = Math.floor(time/3600);
        minutes = Math.floor(time/60) % 60;
        seconds = time % 60;

        timeString += hours + ":";
        if(minutes < 10) timeString += "0";
        timeString += minutes + ":";
        if(seconds < 10) timeString += "0";
        timeString += seconds;

        element.innerHTML = timeString;
}

function selectAll(form, checked) {
        for(var i=0; i<form.length; i++) {
                form.elements[i].checked = checked;
        }
}

function setValue (name, index, value) {
        element = document.getElementsByName(name);
        if (element[index].value != value) {
	        element[index].value = value;
	    } else {
			element[index].value = "0";
	    }
}

function setValue2 (name, value) {
        element = document.getElementById(name);
        if (element.value != value) {
	        element.value = value;
	    } else {
			element.value = "0";
	    }
}

function setValues (name, valueString) {
		var values = valueString.split(",");
        element = document.getElementsByName(name);
        for (var i=0; i<values.length; i++) {
	        if (element[i].value != values[i]) {
		        element[i].value = values[i];
		    } else {
				element[i].value = "0";
		    }
	    }
}

function setKoords (x, y) {
        element = document.getElementsByName("x");
        element[0].value = x;
        element = document.getElementsByName("y");
        element[0].value = y;
}

function setKoords2 (name) {
        element = document.getElementsByName(name);
        koords=element[0].value.split(",");
        
        element = document.getElementsByName("x");
        element[0].value = koords[0];
        element = document.getElementsByName("y");
        element[0].value = koords[1];
}

function addValue (name, name2) {
        element = document.getElementsByName(name2);
        value=element[0].value;
        
        element = document.getElementsByName(name);
        element[0].value=element[0].value+value;
}

function ask(question, href) {
        if(confirm(question) == true) {
                window.location.href = href;
        }
}

function clearText() {
  sichtbar = false;
  move(objekt,1,1)
  objekt.style.display = "none";
  window.status = "";
}

function showText(txt) {
  objekt.innerHTML = txt
  move(objekt,mx,my);

  if (sichtbar == false) {
   	 objekt.style.display = "block";
     sichtbar = true;
  }
}

function showText2(villname, j, i, allyPoints, points, infoOwner, username, infoOverallPoints, points2, infoAlly, tag) {
	txt="<table class='vis'><tr><th colspan='2'>";
	txt+=villname+" ("+j+"|"+i+")</th></tr><tr><td>";
	txt+=allyPoints+":</td><td>";
	txt+=points+"</td></tr><tr><td>";
	txt+=infoOwner+"</td><td>"+username;
	txt+="</td></tr><tr><td>";
	txt+=infoOverallPoints+"</td><td>"+points2+"</td></tr>";
	txt+="<tr><td>";
	txt+=infoAlly+"</td><td>"+tag+"</td></tr></table>";
  objekt.innerHTML = txt
  move(objekt,mx,my);

  if (sichtbar == false) {
   	 objekt.style.display = "block";
     sichtbar = true;
  }
}

function showText3(villname, j, i, allyPoints, points, infoOwner, username, infoOverallPoints, points2, infoAlly, tag, land) {
	txt="<table class='vis'><tr><th colspan='2'>";
	txt+=villname+" ("+j+"|"+i+")</th></tr><tr><td>";
	txt+=allyPoints+":</td><td>";
	txt+=points+"</td></tr><tr><td>";
	txt+=infoOwner+"</td><td>"+username;
	txt+="</td></tr><tr><td>";
	txt+=infoOverallPoints+"</td><td>"+points2+"</td></tr>";
	txt+="<tr><td>";
	txt+=infoAlly+"</td><td>"+tag+"</td></tr>";
	txt+="<tr><td>";
	txt+="Land</td><td>"+land+"</td></tr></table>";
  objekt.innerHTML = txt
  move(objekt,mx,my);

  if (sichtbar == false) {
   	 objekt.style.display = "block";
     sichtbar = true;
  }
}

function move(obj,x2,y2) {
  if (x2 < 1) { x2 = 1 };
   obj.style.left = x2 + 'px';
   obj.style.top = y2 + 'px';
}

function setCookie(name,value) {
	expires = new Date();
	expires.setTime(expires.getTime() + (1000 * 86400 * 365));
	document.cookie = name + "="+value+"; expires=" + expires.toGMTString() +  "; path=/";
}

function toggle_category (name){
	obj = document.getElementById(name);	
	
	if (obj.style.display == "none") {
		obj.style.display = "";
		expires = new Date();
		expires.setTime(expires.getTime() + (1000 * 86400 * 365));
		document.cookie = name + "=1; expires=" + expires.toGMTString() +  "; path=/";
	} else {
		obj.style.display = "none";
		expires = new Date();
		expires.setTime(expires.getTime() + (1000 * 86400 * 365));
		document.cookie = name + "=0; expires=" + expires.toGMTString() +  "; path=/";
	}
	return false;
}

function changeColorTo (name, color) {
  obj = document.getElementById(name);	
  obj.style.backgroundColor = color; 
}


document.onmouseup = globalMouseUp;

function globalMouseUp(evt) {
    document.onmousemove = null;
	if (dragging) {
		var x=parseInt(document.getElementById(dragObjName).style.left);
		var y=parseInt(document.getElementById(dragObjName).style.top);
		setCookie("tutpos", x+":"+y);
	}
    dragging=false;
    return true;
};

function dragObject(evt) {
	if(!evt) var evt = window.event;
    var newTop =(dragObjTop  + evt.screenY - downY);
    document.getElementById(dragObjName).style.top  = newTop  + 'px';
    var newLeft =(dragObjLeft  + evt.screenX - downX);
    document.getElementById(dragObjName).style.left  = newLeft  + 'px';
}

function functionMouseDown (evt) {
    if(!evt) var evt = window.event;
    if((evt.which && evt.which == 3) || (evt.button && evt.button == 2)) return true;
    dragObjTop  = parseInt(document.getElementById(dragObjName).style.top);
    dragObjLeft = parseInt(document.getElementById(dragObjName).style.left);
	document.getElementById(dragObjName).ondragstart = function(evt) { return false; };
    downY = evt.screenY;
    downX = evt.screenX;
    dragging=true;
    document.onmousemove = dragObject;
    if (evt.preventDefault)
	    evt.preventDefault();
	else
		evt.returnValue = false;
};

function getAbsY(id){
	obj=document.getElementById(id);
	var topOffset = 0;
	while (obj.offsetParent) {
		topOffset += obj.offsetTop;
		obj = obj.offsetParent;
	}
	return topOffset;
}
function getAbsX(id){
	obj=document.getElementById(id);
	var leftOffset = 0;
	while (obj.offsetParent) {
		leftOffset += obj.offsetLeft;
		obj = obj.offsetParent;
	}
	return leftOffset;
}

function menuBarPopup(id, id2) {
//	document.getElementById(id).className="menuSubEntry";
	document.getElementById(id).style.display="block";
//	document.getElementById(id).style.top=getAbsY(id2)+"px";
//	document.getElementById(id).style.left=(getAbsX(id2)+110)+"px";
}

