var globalScope = new Array();

function MenuSlider(element1ID, element2ID, elementHeight){
	this.menuPosition = 0;
	this.moving = 0;
	this.animationTime = 1;
	this.animationStep = 15;
	this.elementHeight = elementHeight;
	this.element1ID = element1ID;
	this.element2ID = element2ID;
	this.defaultMenuTitle = '';
	this.pageMenuTitle = '';
	this.pageMenuTitleID;
	
	/**
	 * Initiates the menu slider and hides the 2nd element for IE
	 * @param int
	 * @param String
	 */
	this.init = function(pageMenuTitleID, pageMenuTitle){
		document.getElementById(this.element2ID).style.display = 'none';
		this.pageMenuTitleID = pageMenuTitleID;
		this.pageMenuTitle = pageMenuTitle;
		this.defaultMenuTitle = document.getElementById(this.pageMenuTitleID).firstChild.nodeValue;
	}
	
	/**
	 * Decides if we should slide up or down
	 * @return Boolean
	 */
	this.slide = function(){
		if(this.moving == 0){
			if(this.menuPosition <= 0){
				this.slideDown();
			}
			else{
				this.slideUp();
			}
		}
		return false;
	}
	
	/**
	 * Opens the page menu
	 */
	this.slideUp = function(){
		if(this.moving != 0 && this.moving != 1){
			return;
		}
		this.moving = 1;
		this.menuPosition -= (this.menuPosition < this.animationStep ? this.menuPosition : this.animationStep);
		document.getElementById(this.element1ID).style.height = (this.elementHeight-this.menuPosition)+'px';
		document.getElementById(this.element2ID).style.height = this.menuPosition+'px';
		if(this.menuPosition != 0){
			if(document.getElementById(this.element1ID).style.display == 'none'){
				document.getElementById(this.element1ID).style.display = 'block';
			}
			if(document.all){
				uniqueId = '234df';
				globalScope[uniqueId] = this;
				setTimeout('ieIntervalHandler("'+uniqueId+'","slideUp")', this.animationTime);
			}
			else{
				setTimeout(function(t){t.slideUp();}, this.animationTime, this);
			}
		}
		else{
			this.moving = 0;
			document.getElementById(this.element2ID).style.display = 'none';
			document.getElementById(this.pageMenuTitleID).firstChild.nodeValue = this.defaultMenuTitle;
		}
	}
	
	/**
	 * Opens the main menu
	 */
	this.slideDown = function(){
		if(this.moving != 0 && this.moving != 2){
			return;
		}
		this.moving = 2;
		this.menuPosition += (this.menuPosition + this.animationStep > this.elementHeight ? this.elementHeight - this.menuPosition : this.animationStep);
		document.getElementById(this.element1ID).style.height = (this.elementHeight-this.menuPosition)+'px';
		document.getElementById(this.element2ID).style.height = this.menuPosition+'px';
		if(this.menuPosition != this.elementHeight){
			if(document.getElementById(this.element2ID).style.display == 'none'){
				document.getElementById(this.element2ID).style.display = 'block';
			}
			if(document.all){
				uniqueId = '234df2';
				globalScope[uniqueId] = this;
				setTimeout('ieIntervalHandler("'+uniqueId+'","slideDown")', this.animationTime);
			}
			else{
				setTimeout(function(t){t.slideDown();}, this.animationTime, this);
			}
		}
		else{
			this.moving = 0;
			document.getElementById(this.element1ID).style.display = 'none';
			document.getElementById(this.pageMenuTitleID).firstChild.nodeValue = this.pageMenuTitle;
		}
	}
}

/* D. - Special IE setInterval handler function with scope corrected */
function ieIntervalHandler(id, strFunc){
	/* D.1 - correct the scope then make the call */
	var scope = globalScope[id];
	eval("scope."+strFunc+"()");
}
