function debug(debug_text){
	document.getElementById('debug').innerHTML = debug_text;
}

var repeat;

function transition_divs(div_object, transition, transition_steps){

	this.div = div_object;
	this.maxH = div_object.offsetHeight;
	this.maxW = div_object.offsetWidth;
	this.origLeft = div_object.offsetLeft;
	this.origTop = div_object.offsetTop;
	this.origRight = div_object.offsetRight;
	this.origBottom = div_object.offsetBottom;
	this.actH = this.maxH;
	this.actW = this.maxW;
	this.actTop = this.origTop;
	this.actLeft = this.origLeft;
	this.collapsed = false;
	this.ajax_page = "";
	this.transition = transition;
	this.transition_steps = transition_steps;
	
	this.stepsLeft = parseInt(this.maxW / transition_steps);
	this.stepsTop = parseInt(this.maxH / transition_steps);
	
	/*if(this.maxW > this.maxH){
		this.stepsLeft = parseInt(this.maxW / transition_steps);
		this.stepsTop = parseInt(this.maxH / transition_steps);
	}else{
		this.stepsLeft = transition_steps;
		this.stepsTop = parseInt(this.maxH/this.maxW *transition_steps);
	}*/
}

transition_divs.prototype.set_height = function(height){
	
	this.div.style.height = height + "px";
	this.actH = height;
};

transition_divs.prototype.set_dimensions = function(width, height){
	
	this.div.style.width = parseInt(this.actW) + "px";
	this.div.style.height = parseInt(this.actH) + "px";
};

transition_divs.prototype.set_pos = function(){
	
	this.div.style.top = top + "px";
	this.actTop = top;
	this.div.style.left = left + "px";
	this.actLeft = left;
};

transition_divs.prototype.setInnerHTML = function(txt){
	this.div.innerHTML = txt;
};

transition_divs.prototype.set_clip = function(topVal, rightVal, bottomVal, leftVal){

	//debug("Top: " + topVal + " Right: " + rightVal + " Bottom: " +  bottomVal +" Left: " +  leftVal);

	this.div.style.clip="rect("+topVal+"px "+rightVal+"px "+bottomVal+"px "+leftVal+"px)";
}

transition_divs.prototype.collapse = function (page){

	if(page != "" && page != undefined){
		this.ajax_page = page;
	}
	
	var self = this;
	
	var proc_collapse = function(){
	
		self.set_clip(self.actTop, self.actW, self.actH, self.actLeft);
	
		if(self.transition == "top_down"){
			self.actH -= self.stepsTop;
			self.actW = self.maxW;
			self.actLeft = 0;
			self.actTop = 0;
			
			if(self.actH - self.stepsTop > 0){
				repeat = true;
			}else{
				repeat = false;
				self.actH = 0;
				self.actW = self.maxW;
				self.actTop = 0;
				self.actLeft = 0;
			}
		}
		
		if(self.transition == "down_top"){
			self.actTop += self.stepsTop;
			self.actW = self.maxW;
			self.actLeft = 0;
			self.actH = self.maxH;
			
			if(self.actTop + self.stepsTop < self.maxH){
				repeat = true;
			}else{
				repeat = false;
				self.actH = 0;
				self.actW = self.maxW;
				self.actTop = self.maxH;
				self.actLeft = 0;
			}
		}
		
		if(self.transition == "left_right"){
			self.actTop = 0;
			self.actW -= self.stepsLeft;
			self.actLeft = 0;
			self.actH = self.maxH;
			
			if(self.actW - self.stepsLeft > 0){
				repeat = true;
			}else{
				repeat = false;
				self.actH = self.maxH;
				self.actW = 0;
				self.actTop = 0;
				self.actLeft = 0;
			}
		}
		
		if(self.transition == "right_left"){
			self.actTop = 0;
			self.actW = self.maxW;
			self.actLeft += self.stepsLeft;
			self.actH = self.maxH;
			
			if(self.actLeft + self.stepsLeft < self.maxW){
				repeat = true;
			}else{
				repeat = false;
				self.actH = self.maxH;
				self.actW = self.maxW;
				self.actTop = 0;
				self.actLeft = self.maxW;
			}
		}
	
		if(self.transition == "iris"){
			self.actTop += self.stepsTop/2;
			self.actW -= self.stepsLeft/2;
			self.actLeft += self.stepsLeft/2;
			self.actH -= self.stepsTop/2;
			
			if(self.actW - (self.stepsLeft/2) > (self.maxW/2)){
				repeat = true;
			}else{
				repeat = false;
				self.actH = self.maxH/2;
				self.actW = self.maxW/2;
				self.actTop = self.maxH/2;
				self.actLeft = self.maxW/2;
			}
		}
	
		if(repeat == true){
				setTimeout(proc_collapse, 10);
			}else{
				
				self.set_clip(self.actTop, self.actW, self.actH, self.actLeft);
				self.collapsed = true;
				
				if(this.ajax_page != ""){
					self.call_ajax(self);
				}
			}
	}
	
	setTimeout(proc_collapse, 10);
};

transition_divs.prototype.expand = function (){
	
	var self = this;
	var direction;
	
	var proc_expand = function(){
		
		// Top Right bottom left
		
		self.set_clip(self.actTop, self.actW, self.actH, self.actLeft);
		
		if(self.transition == "top_down"){
			self.actH += self.stepsTop;
			self.actW = self.maxW;
			self.actLeft = 0;
			self.actTop = 0;
			
			if(self.actH + self.stepsTop < self.maxH){
				repeat = true;
			}else{
				repeat = false;
			}
		}
		
		if(self.transition == "down_top"){
			self.actTop -= self.stepsTop;
			self.actW = self.maxW;
			self.actLeft = 0;
			self.actH = self.maxH;
			
			if(self.actTop - self.stepsTop > 0){
				repeat = true;
			}else{
				repeat = false;
			}
		}
		
		if(self.transition == "left_right"){
			self.actTop = 0;
			self.actW += self.stepsLeft;
			self.actLeft = 0;
			self.actH = self.maxH;
			
			if(self.actW + self.stepsLeft < self.maxW){
				repeat = true;
			}else{
				repeat = false;
			}
		}
		
		if(self.transition == "right_left"){
			self.actTop = 0;
			self.actW = self.maxW;
			self.actLeft -= self.stepsLeft;
			self.actH = self.maxH;
			
			if(self.actLeft - self.stepsLeft > 0){
				repeat = true;
			}else{
				repeat = false;
			}
		}
	
		if(self.transition == "iris"){
			self.actTop -= self.stepsTop/2;
			self.actW += self.stepsLeft/2;
			self.actLeft -= self.stepsLeft/2;
			self.actH += self.stepsTop/2;
			
			if(self.actLeft - (self.stepsLeft/2) > 0){
				repeat = true;
			}else{
				repeat = false;
			}
		}
		
		if(repeat == true){
			setTimeout(proc_expand, 10);
		}else{
			self.actH = self.maxH;
			self.actW = self.maxW;
			self.actTop = 0;
			self.actLeft = 0;
			self.set_clip(self.actTop, self.actW, self.actH, self.actLeft);
			self.collapsed = false;
			anim_finished = true;
			
			addReflections();
		}
	}
	
	setTimeout(proc_expand, 10);
};

transition_divs.prototype.call_ajax = function(div_id){

	if (window.XMLHttpRequest) { // Mozilla, Safari, ...
	    http_request = new XMLHttpRequest();
	} else if (window.ActiveXObject) { // IE
	    http_request = new ActiveXObject("Microsoft.XMLHTTP");
	}
	
	http_request.onreadystatechange = function(){
    	if (http_request.readyState == 4) {
    	
    		if(http_request.responseText.indexOf("<body>") > 1){
    			var start = http_request.responseText.indexOf("<body>") + 6;
    			var end = http_request.responseText.indexOf("</body>");
    			
    			var text = http_request.responseText.substring(start, end);
    		}else{
    			text = http_request.responseText;
    		}
    		
    		div_id.div.innerHTML = text + "<p></p>";
    		div_id.expand();
		}
	};
	
	http_request.open('GET', div_id.ajax_page + '.html', true);
	http_request.send(null);
}

