function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      oldonload();
      func();
    }
  }
}

var scrElem = function() {
	var elemToScroll;
	var scrollInt = {};
	var direction;
	var range;
	var whereToScr;
	var limitDown;
	var limitUp;
	var speed ;
	
	function scrollElementFunc() {
		var thisTop = (isNaN(parseInt(elemToScroll.style.top))) ? 0 : parseInt(elemToScroll.style.top);
		whereToScr = thisTop;
		range++;
		speed += Math.floor(range/50);
		var thisWhereToScroll = speed*direction;
		
		if(thisTop + thisWhereToScroll <= limitUp && thisTop + thisWhereToScroll  >= limitDown) {
			whereToScr += thisWhereToScroll;
			elemToScroll.style.top = whereToScr + "px";
		} else if(direction < 0 && thisTop >= limitDown) {
			elemToScroll.style.top = limitDown + "px";;
		} else {
			elemToScroll.style.top = limitUp + "px";;
		}
	}
	
	function scrollElement(elementID,moveUp,thisRange,thisLimitUp,thisLimitDown) {
		//Check compatibilty
		if (!document.getElementById) return false;
		if (!document.getElementById(elementID)) return false;
		
		//function
		elemToScroll = document.getElementById(elementID);
		
		range = thisRange;
		limitUp = thisLimitUp;
		limitDown = thisLimitDown;
		speed = thisRange;
		
		
		if(moveUp) {
			direction = 1;
			
		} else {
			direction = -1;
		}
		
		setScrElemInt();
	}
	
	function stopScrollElement() {
		clearInterval(scrElem.scrollInt);
	}
	
	return {
		scrollInt:scrollInt,
		elemToScroll:elemToScroll,
		scrollElement:scrollElement,
		scrollElementFunc:scrollElementFunc,
		stopScrollElement:stopScrollElement
	}
}();

function setScrElemInt() {
	scrElem.scrollInt = setInterval("scrElem.scrollElementFunc()",15);
}

function moveElement(elementID,final_x,final_y,interval) {
	//Check compatibilty
	if (!document.getElementById) return false;
	if (!document.getElementById(elementID)) return false;
	
	//function
	var elem = document.getElementById(elementID);
	if (elem.movement) {
		clearTimeout(elem.movement);
	}
	
	if (!elem.style.left) {
		elem.style.left = "0px";
	}
	if (!elem.style.top) {
		elem.style.top = "0px";
	}
	
	var xpos = parseInt(elem.style.left);
	var ypos = parseInt(elem.style.top);
	
	if (xpos == final_x && ypos == final_y) {
		return true;
	}
	if (xpos < final_x) {
		var dist = Math.ceil((final_x - xpos)/10);
		xpos = xpos + dist;
	}
	if (xpos > final_x) {
		var dist = Math.ceil((xpos - final_x)/10);
		xpos = xpos - dist;
	}
	if (ypos < final_y) {
		var dist = Math.ceil((final_y - ypos)/10);
		ypos = ypos + dist;
	}
	if (ypos > final_y) {
		var dist = Math.ceil((ypos - final_y)/10);
		ypos = ypos - dist;
	}
	elem.style.left = xpos + "px";
	elem.style.top = ypos + "px";
	var repeat = "moveElement('"+elementID+"',"+final_x+","+final_y+","+interval+")";
	elem.movement = setTimeout(repeat,interval);
}

function moveElementBott(elementID,final_x,final_y,interval) {
	//Check compatibilty
	if (!document.getElementById) return false;
	if (!document.getElementById(elementID)) return false;
	
	//function
	var elem = document.getElementById(elementID);
	if (elem.movement) {
		clearTimeout(elem.movement);
	}
	
	if (!elem.style.left) {
		elem.style.left = "0px";
	}
	if (!elem.style.bottom) {
		elem.style.bottom = "0px";
	}
	
	var xpos = parseInt(elem.style.left);
	var ypos = parseInt(elem.style.bottom);
	
	if (xpos == final_x && ypos == final_y) {
		return true;
	}
	if (xpos < final_x) {
		var dist = Math.ceil((final_x - xpos)/10);
		xpos = xpos + dist;
	}
	if (xpos > final_x) {
		var dist = Math.ceil((xpos - final_x)/10);
		xpos = xpos - dist;
	}
	if (ypos < final_y) {
		var dist = Math.ceil((final_y - ypos)/10);
		ypos = ypos + dist;
	}
	if (ypos > final_y) {
		var dist = Math.ceil((ypos - final_y)/10);
		ypos = ypos - dist;
	}
	elem.style.left = xpos + "px";
	elem.style.bottom = ypos + "px";
	
	var repeat = "moveElementBott('"+elementID+"',"+final_x+","+final_y+","+interval+")";
	elem.movement = setTimeout(repeat,interval);
}

function resizeElement(elementID,final_x,final_y,interval) {
	//Check compatibilty
	if (!document.getElementById) return false;
	if (!document.getElementById(elementID)) return false;
	
	//function
	var elem = document.getElementById(elementID);
	if (elem.movement) {
		clearTimeout(elem.movement);
	}
	
	var xpos = parseInt(elem.clientWidth);
	var ypos = parseInt(elem.clientHeight);
	
	if (xpos == final_x && ypos == final_y) {
		return true;
	}
	if (xpos < final_x) {
		var dist = Math.ceil((final_x - xpos)/10);
		xpos = xpos + dist;
	}
	if (xpos > final_x) {
		var dist = Math.ceil((xpos - final_x)/10);
		xpos = xpos - dist;
	}
	if (ypos < final_y) {
		var dist = Math.ceil((final_y - ypos)/10);
		ypos = ypos + dist;
	}
	if (ypos > final_y) {
		var dist = Math.ceil((ypos - final_y)/10);
		ypos = ypos - dist;
	}
	elem.style.width = xpos + "px";
	elem.style.height = ypos + "px";
	
	var repeat = "resizeElement('"+elementID+"',"+final_x+","+final_y+","+interval+")";
	elem.movement = setTimeout(repeat,interval);
}

function getXOffset() {
	if(typeof window.pageXOffset != "number") {
		if(typeof document.documentElement.scrollLeft != "number") {
			if(typeof document.body.scrollLeft != "number") {
				return false;
			} else {
				return document.body.scrollLeft;
			}
		} else {
			return document.documentElement.scrollLeft;
		}
	} else {
		return window.pageXOffset;
	}
}

function getYOffset() {
	if(typeof window.pageYOffset != "number") {
		if(typeof document.documentElement.scrollTop != "number") {
			if(typeof document.body.scrollTop != "number") {
				return false;
			} else {
				return document.body.scrollTop;
			}
		} else {
			return document.documentElement.scrollTop;
		}
	} else {
		return window.pageYOffset;
	}
}
