var uniquepageid = window.location.href.replace("http://"+window.location.hostname, "").replace(/^\//, "") //get current page path and name, used to uniquely identify this page for persistence feature

function animatedcollapse (divId, animatetime, persistexpand, initstate) {
	this.divId = divId
	this.divObj = document.getElementById(divId)
	this.divObj.style.overflow = "hidden"
	this.timelength = animatetime
	this.initstate = (typeof initstate != "undefined" && initstate == "block")? "block" : "contract"
	this.isExpanded = animatedcollapse.getCookie(uniquepageid + "-" + divId) //"yes" or "no", based on cookie value
	this.contentheight = parseInt(this.divObj.style.height)
	var thisobj=this
	if (isNaN(this.contentheight)) { //if no CSS "height" attribute explicitly defined, get DIV's height on window.load
		animatedcollapse.dotask (window, function(){ thisobj._getheight(persistexpand) }, "load")
		if (!persistexpand && this.initstate == "contract" || persistexpand && this.isExpanded != "yes" && this.isExpanded != "") //Hide DIV (unless div should be expanded by default, OR persistence is enabled and this DIV should be expanded)
			this.divObj.style.visibility = "hidden" //hide content (versus collapse) until we can get its height
	}
	else if (!persistexpand && this.initstate == "contract" || persistexpand && this.isExpanded != "yes" && this.isExpanded != "") //Hide DIV (unless div should be expanded by default, OR persistence is enabled and this DIV should be expanded)
		this.divObj.style.height = 0 //just collapse content if CSS "height" attribute available
	if (persistexpand)
		animatedcollapse.dotask( window, function() { animatedcollapse.setCookie(uniquepageid+"-"+thisobj.divId, thisobj.isExpanded) }, "unload")
}

animatedcollapse.prototype._getheight = function(persistexpand) {
	this.contentheight = this.divObj.offsetHeight
	if (!persistexpand && this.initstate == "contract" || persistexpand && this.isExpanded != "yes"){ //Hide DIV (unless div should be expanded by default, OR persistence is enabled and this DIV should be expanded)
		this.divObj.style.height = 0 //collapse content
		this.divObj.style.visibility = "visible"
	}
	else //else if persistence is enabled AND this content should be expanded, define its CSS height value so slideup() has something to work with
		this.divObj.style.height = this.contentheight+"px"
}

animatedcollapse.prototype._slideengine = function(direction) {
	var elapsed = new Date().getTime()-this.startTime //get time animation has run
	var thisobj = this
	if (elapsed < this.timelength) { //if time run is less than specified length
		var distancepercent = (direction == "down")? animatedcollapse.curveincrement(elapsed/this.timelength) : 1 - animatedcollapse.curveincrement(elapsed / this.timelength)
	this.divObj.style.height = distancepercent * this.contentheight + "px"
	this.runtimer = setTimeout(function(){ thisobj._slideengine(direction) }, 10)
	} else { //if animation finished
		this.divObj.style.height = (direction == "down")? this.contentheight + "px" : 0
		this.isExpanded = (direction == "down")? "yes" : "no" //remember whether content is expanded or not
		this.runtimer = null
		if (this.isExpanded == "yes") {
			replaceBanner("ftcorner", "ftcorner_img");
		} else {
			replaceBanner("ftcorner", "ftcorner_flash");
		}
	}
}

animatedcollapse.prototype.slidedown = function() {
	if (typeof this.runtimer == "undefined" || this.runtimer == null) { //if animation isn't already running or has stopped running
		if (isNaN(this.contentheight)) //if content height not available yet (until window.onload)
			alert("Please wait until document has fully loaded then click again")
		else if (parseInt(this.divObj.style.height) == 0) { //if content is collapsed
			this.startTime = new Date().getTime() //Set animation start time
			this._slideengine("down")
		}
	}
}

animatedcollapse.prototype.slideup = function() {
	if (typeof this.runtimer == "undefined" || this.runtimer == null) { //if animation isn't already running or has stopped running
		if (isNaN(this.contentheight)) //if content height not available yet (until window.onload)
			alert("Please wait until document has fully loaded then click again")
		else if (parseInt(this.divObj.style.height) == this.contentheight) { //if content is expanded
			this.startTime = new Date().getTime()
			this._slideengine("up")
		}
	}
}

animatedcollapse.prototype.slideit = function() {
	if (isNaN(this.contentheight)) //if content height not available yet (until window.onload)
		alert("Please wait until document has fully loaded then click again")
	else if (parseInt(this.divObj.style.height) == 0)
		this.slidedown()
	else if (parseInt(this.divObj.style.height) == this.contentheight)
		this.slideup()
}



function replaceBanner(divId, oldEl) {

	var cont_div = document.getElementById(divId);
	var old_el = document.getElementById(oldEl);
	//cont_div.removeChild(old_el);
	if (oldEl == "ftcorner_img") {

		var newObj;
		
		newObj = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0" width="680" height="120" id="ftcorner_flash">';
		newObj += '<param name="movie" value="http://www.4troxoi.gr/templates/default/AccordionAS3.swf">';
		newObj += '<param name="quality" value="high">';
		newObj += '<param name="wmode" value="transparent">';
		newObj += '<param name="allowScriptAccess" value="always">';
		newObj += '<embed src="http://www.4troxoi.gr/templates/default/AccordionAS3.swf" quality="high" pluginspage="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" width="680" height="120" wmode="transparent" allowscriptaccess="always" name="ftcorner_flash"></embed>';
		newObj += '</object>';


		cont_div.innerHTML = newObj;
	} else {
		cont_div.innerHTML = '<img src="http://www.4troxoi.gr/templates/default/images/blank.gif" width="680" height="120" alt="" id="ftcorner_img" />'
	}
}

function removeFlashDiv() {
	var div_el = document.getElementById("ftcorner_flash");
	div_el.parentNode.removeChild(div_el);
}

// -------------------------------------------------------------------
// A few utility functions below:
// -------------------------------------------------------------------

animatedcollapse.curveincrement = function(percent) {
	return (1-Math.cos(percent*Math.PI)) / 2 //return cos curve based value from a percentage input
}

animatedcollapse.dotask = function(target, functionref, tasktype) { //assign a function to execute to an event handler (ie: onunload)
	var tasktype = (window.addEventListener)? tasktype : "on" + tasktype
	if (target.addEventListener)
		target.addEventListener(tasktype, functionref, false)
	else if (target.attachEvent)
		target.attachEvent(tasktype, functionref)
}

animatedcollapse.getCookie = function(Name) { 
	//var re = new RegExp(Name + "=[^;]+", "i"); //construct RE to search for target name/value pair
	//if (document.cookie.match(re)) //if cookie found
	//	return document.cookie.match(re)[0].split("=")[1] //return its value
	return ""
}

animatedcollapse.setCookie = function(name, value) {
		document.cookie = name + "=" + value
}