/* Site - Concept & Design by Jitu */

/* E-mail : s.jitu@yahoo.com */

/* Voice : 8801716017690 */



// PopUP Window Open

// =================================================================================

function MM_openBrWindow(theURL,winName,features) { //v2.0

  window.open(theURL,winName,features);

}

// =================================================================================



// JUMP MENU

// =================================================================================

function MM_jumpMenu(targ,selObj,restore){ //v3.0

  eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");

  if (restore) selObj.selectedIndex=0;

}

// =================================================================================





// Form Validitaion

// =================================================================================

function MM_findObj(n, d) { //v4.01

  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {

    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}

  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];

  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);

  if(!x && d.getElementById) x=d.getElementById(n); return x;

}



function MM_validateForm() { //v4.0

  var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;

  for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);

    if (val) { nm=val.name; if ((val=val.value)!="") {

      if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');

        if (p<1 || p==(val.length-1)) errors+='- '+nm+' must contain an e-mail address.\n';

      } else if (test!='R') { num = parseFloat(val);

        if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';

        if (test.indexOf('inRange') != -1) { p=test.indexOf(':');

          min=test.substring(8,p); max=test.substring(p+1);

          if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';

    } } } else if (test.charAt(0) == 'R') errors += '- '+nm+' is required.\n'; }

  } if (errors) alert('The following error(s) occurred:\n'+errors);

  document.MM_returnValue = (errors == '');

}

// =================================================================================





// ToolTip function

// =================================================================================

function toggleDiv(id,flagit) {

if (flagit=="1"){

if (document.layers) document.layers[''+id+''].visibility = "show"

else if (document.all) document.all[''+id+''].style.visibility = "visible"

else if (document.getElementById) document.getElementById(''+id+'').style.visibility = "visible"

}

else

if (flagit=="0"){

if (document.layers) document.layers[''+id+''].visibility = "hide"

else if (document.all) document.all[''+id+''].style.visibility = "hidden"

else if (document.getElementById) document.getElementById(''+id+'').style.visibility = "hidden"

}

}



// FAQ drop down function

// =================================================================================

function showfaq(x)

{

if(document.getElementById(x).style.display=="none")

{

document.getElementById(x).style.display="block"

}

else

{

document.getElementById(x).style.display="none"

}

}



// Flash Player detection and embed

// =================================================================================

if(typeof deconcept == "undefined") var deconcept = new Object();

if(typeof deconcept.util == "undefined") deconcept.util = new Object();

if(typeof deconcept.SWFObjectUtil == "undefined") deconcept.SWFObjectUtil = new Object();

deconcept.SWFObject = function(swf, id, w, h, ver, c, quality, xiRedirectUrl, redirectUrl, detectKey) {

	if (!document.getElementById) { return; }

	this.DETECT_KEY = detectKey ? detectKey : 'detectflash';

	this.skipDetect = deconcept.util.getRequestParameter(this.DETECT_KEY);

	this.params = new Object();

	this.variables = new Object();

	this.attributes = new Array();

	if(swf) { this.setAttribute('swf', swf); }

	if(id) { this.setAttribute('id', id); }

	if(w) { this.setAttribute('width', w); }

	if(h) { this.setAttribute('height', h); }

	if(ver) { this.setAttribute('version', new deconcept.PlayerVersion(ver.toString().split("."))); }

	this.installedVer = deconcept.SWFObjectUtil.getPlayerVersion();

	if (!window.opera && document.all && this.installedVer.major > 7) {

		// only add the onunload cleanup if the Flash Player version supports External Interface and we are in IE

		deconcept.SWFObject.doPrepUnload = true;

	}

	if(c) { this.addParam('bgcolor', c); }

	var q = quality ? quality : 'high';

	this.addParam('quality', q);

	this.setAttribute('useExpressInstall', false);

	this.setAttribute('doExpressInstall', false);

	var xir = (xiRedirectUrl) ? xiRedirectUrl : window.location;

	this.setAttribute('xiRedirectUrl', xir);

	this.setAttribute('redirectUrl', '');

	if(redirectUrl) { this.setAttribute('redirectUrl', redirectUrl); }

}

deconcept.SWFObject.prototype = {

	useExpressInstall: function(path) {

		this.xiSWFPath = !path ? "expressinstall.swf" : path;

		this.setAttribute('useExpressInstall', true);

	},

	setAttribute: function(name, value){

		this.attributes[name] = value;

	},

	getAttribute: function(name){

		return this.attributes[name];

	},

	addParam: function(name, value){

		this.params[name] = value;

	},

	getParams: function(){

		return this.params;

	},

	addVariable: function(name, value){

		this.variables[name] = value;

	},

	getVariable: function(name){

		return this.variables[name];

	},

	getVariables: function(){

		return this.variables;

	},

	getVariablePairs: function(){

		var variablePairs = new Array();

		var key;

		var variables = this.getVariables();

		for(key in variables){

			variablePairs[variablePairs.length] = key +"="+ variables[key];

		}

		return variablePairs;

	},

	getSWFHTML: function() {

		var swfNode = "";

		if (navigator.plugins && navigator.mimeTypes && navigator.mimeTypes.length) { // netscape plugin architecture

			if (this.getAttribute("doExpressInstall")) {

				this.addVariable("MMplayerType", "PlugIn");

				this.setAttribute('swf', this.xiSWFPath);

			}

			swfNode = '<embed type="application/x-shockwave-flash" src="'+ this.getAttribute('swf') +'" width="'+ this.getAttribute('width') +'" height="'+ this.getAttribute('height') +'" style="'+ this.getAttribute('style') +'"';

			swfNode += ' id="'+ this.getAttribute('id') +'" name="'+ this.getAttribute('id') +'" ';

			var params = this.getParams();

			 for(var key in params){ swfNode += [key] +'="'+ params[key] +'" '; }

			var pairs = this.getVariablePairs().join("&");

			 if (pairs.length > 0){ swfNode += 'flashvars="'+ pairs +'"'; }

			swfNode += '/>';

		} else { // PC IE

			if (this.getAttribute("doExpressInstall")) {

				this.addVariable("MMplayerType", "ActiveX");

				this.setAttribute('swf', this.xiSWFPath);

			}

			swfNode = '<object id="'+ this.getAttribute('id') +'" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="'+ this.getAttribute('width') +'" height="'+ this.getAttribute('height') +'" style="'+ this.getAttribute('style') +'">';

			swfNode += '<param name="movie" value="'+ this.getAttribute('swf') +'" />';

			var params = this.getParams();

			for(var key in params) {

			 swfNode += '<param name="'+ key +'" value="'+ params[key] +'" />';



			}

			var pairs = this.getVariablePairs().join("&");

			if(pairs.length > 0) {swfNode += '<param name="flashvars" value="'+ pairs +'" />';}

			swfNode += "</object>";

		}

		return swfNode;

	},

	write: function(elementId){

		if(this.getAttribute('useExpressInstall')) {

			// check to see if we need to do an express install

			var expressInstallReqVer = new deconcept.PlayerVersion([6,0,65]);

			if (this.installedVer.versionIsValid(expressInstallReqVer) && !this.installedVer.versionIsValid(this.getAttribute('version'))) {

				this.setAttribute('doExpressInstall', true);

				this.addVariable("MMredirectURL", escape(this.getAttribute('xiRedirectUrl')));

				document.title = document.title.slice(0, 47) + " - Flash Player Installation";

				this.addVariable("MMdoctitle", document.title);

			}

		}

		if(this.skipDetect || this.getAttribute('doExpressInstall') || this.installedVer.versionIsValid(this.getAttribute('version'))){

			var n = (typeof elementId == 'string') ? document.getElementById(elementId) : elementId;

			n.innerHTML = this.getSWFHTML();

			return true;

		}else{

			if(this.getAttribute('redirectUrl') != "") {

				document.location.replace(this.getAttribute('redirectUrl'));

			}

		}

		return false;

	}

}



/* ---- detection functions ---- */

deconcept.SWFObjectUtil.getPlayerVersion = function(){

	var PlayerVersion = new deconcept.PlayerVersion([0,0,0]);

	if(navigator.plugins && navigator.mimeTypes.length){

		var x = navigator.plugins["Shockwave Flash"];

		if(x && x.description) {

			PlayerVersion = new deconcept.PlayerVersion(x.description.replace(/([a-zA-Z]|\s)+/, "").replace(/(\s+r|\s+b[0-9]+)/, ".").split("."));

		}

	}else if (navigator.userAgent && navigator.userAgent.indexOf("Windows CE") >= 0){ // if Windows CE

		var axo = 1;

		var counter = 3;

		while(axo) {

			try {

				counter++;

				axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+ counter);

//				document.write("player v: "+ counter);

				PlayerVersion = new deconcept.PlayerVersion([counter,0,0]);

			} catch (e) {

				axo = null;

			}

		}

	} else { // Win IE (non mobile)

		// do minor version lookup in IE, but avoid fp6 crashing issues

		// see http://blog.deconcept.com/2006/01/11/getvariable-setvariable-crash-internet-explorer-flash-6/

		try{

			var axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");

		}catch(e){

			try {

				var axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");

				PlayerVersion = new deconcept.PlayerVersion([6,0,21]);

				axo.AllowScriptAccess = "always"; // error if player version < 6.0.47 (thanks to Michael Williams @ Adobe for this code)

			} catch(e) {

				if (PlayerVersion.major == 6) {

					return PlayerVersion;

				}

			}

			try {

				axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");

			} catch(e) {}

		}

		if (axo != null) {

			PlayerVersion = new deconcept.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(","));

		}

	}

	return PlayerVersion;

}

deconcept.PlayerVersion = function(arrVersion){

	this.major = arrVersion[0] != null ? parseInt(arrVersion[0]) : 0;

	this.minor = arrVersion[1] != null ? parseInt(arrVersion[1]) : 0;

	this.rev = arrVersion[2] != null ? parseInt(arrVersion[2]) : 0;

}

deconcept.PlayerVersion.prototype.versionIsValid = function(fv){

	if(this.major < fv.major) return false;

	if(this.major > fv.major) return true;

	if(this.minor < fv.minor) return false;

	if(this.minor > fv.minor) return true;

	if(this.rev < fv.rev) return false;

	return true;

}

/* ---- get value of query string param ---- */

deconcept.util = {

	getRequestParameter: function(param) {

		var q = document.location.search || document.location.hash;

		if (param == null) { return q; }

		if(q) {

			var pairs = q.substring(1).split("&");

			for (var i=0; i < pairs.length; i++) {

				if (pairs[i].substring(0, pairs[i].indexOf("=")) == param) {

					return pairs[i].substring((pairs[i].indexOf("=")+1));

				}

			}

		}

		return "";

	}

}

/* fix for video streaming bug */

deconcept.SWFObjectUtil.cleanupSWFs = function() {

	var objects = document.getElementsByTagName("OBJECT");

	for (var i = objects.length - 1; i >= 0; i--) {

		objects[i].style.display = 'none';

		for (var x in objects[i]) {

			if (typeof objects[i][x] == 'function') {

				objects[i][x] = function(){};

			}

		}

	}

}

// fixes bug in some fp9 versions see http://blog.deconcept.com/2006/07/28/swfobject-143-released/

if (deconcept.SWFObject.doPrepUnload) {

	if (!deconcept.unloadSet) {

		deconcept.SWFObjectUtil.prepUnload = function() {

			__flash_unloadHandler = function(){};

			__flash_savedUnloadHandler = function(){};

			window.attachEvent("onunload", deconcept.SWFObjectUtil.cleanupSWFs);

		}

		window.attachEvent("onbeforeunload", deconcept.SWFObjectUtil.prepUnload);

		deconcept.unloadSet = true;

	}

}

/* add document.getElementById if needed (mobile IE < 5) */

if (!document.getElementById && document.all) { document.getElementById = function(id) { return document.all[id]; }}



/* add some aliases for ease of use/backwards compatibility */

var getQueryParamValue = deconcept.util.getRequestParameter;

var FlashObject = deconcept.SWFObject; // for legacy support

var SWFObject = deconcept.SWFObject;





//v1.7

// Flash Player Version Detection

// Detect Client Browser type

// Copyright 2005-2007 Adobe Systems Incorporated.  All rights reserved.

var isIE  = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;

var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;

var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;



function ControlVersion()

{

	var version;

	var axo;

	var e;



	// NOTE : new ActiveXObject(strFoo) throws an exception if strFoo isn't in the registry



	try {

		// version will be set for 7.X or greater players

		axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");

		version = axo.GetVariable("$version");

	} catch (e) {

	}



	if (!version)

	{

		try {

			// version will be set for 6.X players only

			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");

			

			// installed player is some revision of 6.0

			// GetVariable("$version") crashes for versions 6.0.22 through 6.0.29,

			// so we have to be careful. 

			

			// default to the first public version

			version = "WIN 6,0,21,0";



			// throws if AllowScripAccess does not exist (introduced in 6.0r47)		

			axo.AllowScriptAccess = "always";



			// safe to call for 6.0r47 or greater

			version = axo.GetVariable("$version");



		} catch (e) {

		}

	}



	if (!version)

	{

		try {

			// version will be set for 4.X or 5.X player

			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");

			version = axo.GetVariable("$version");

		} catch (e) {

		}

	}



	if (!version)

	{

		try {

			// version will be set for 3.X player

			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");

			version = "WIN 3,0,18,0";

		} catch (e) {

		}

	}



	if (!version)

	{

		try {

			// version will be set for 2.X player

			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");

			version = "WIN 2,0,0,11";

		} catch (e) {

			version = -1;

		}

	}

	

	return version;

}



// JavaScript helper required to detect Flash Player PlugIn version information

function GetSwfVer(){

	// NS/Opera version >= 3 check for Flash plugin in plugin array

	var flashVer = -1;

	

	if (navigator.plugins != null && navigator.plugins.length > 0) {

		if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {

			var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";

			var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;

			var descArray = flashDescription.split(" ");

			var tempArrayMajor = descArray[2].split(".");			

			var versionMajor = tempArrayMajor[0];

			var versionMinor = tempArrayMajor[1];

			var versionRevision = descArray[3];

			if (versionRevision == "") {

				versionRevision = descArray[4];

			}

			if (versionRevision[0] == "d") {

				versionRevision = versionRevision.substring(1);

			} else if (versionRevision[0] == "r") {

				versionRevision = versionRevision.substring(1);

				if (versionRevision.indexOf("d") > 0) {

					versionRevision = versionRevision.substring(0, versionRevision.indexOf("d"));

				}

			}

			var flashVer = versionMajor + "." + versionMinor + "." + versionRevision;

		}

	}

	// MSN/WebTV 2.6 supports Flash 4

	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4;

	// WebTV 2.5 supports Flash 3

	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3;

	// older WebTV supports Flash 2

	else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2;

	else if ( isIE && isWin && !isOpera ) {

		flashVer = ControlVersion();

	}	

	return flashVer;

}



// When called with reqMajorVer, reqMinorVer, reqRevision returns true if that version or greater is available

function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision)

{

	versionStr = GetSwfVer();

	if (versionStr == -1 ) {

		return false;

	} else if (versionStr != 0) {

		if(isIE && isWin && !isOpera) {

			// Given "WIN 2,0,0,11"

			tempArray         = versionStr.split(" "); 	// ["WIN", "2,0,0,11"]

			tempString        = tempArray[1];			// "2,0,0,11"

			versionArray      = tempString.split(",");	// ['2', '0', '0', '11']

		} else {

			versionArray      = versionStr.split(".");

		}

		var versionMajor      = versionArray[0];

		var versionMinor      = versionArray[1];

		var versionRevision   = versionArray[2];



        	// is the major.revision >= requested major.revision AND the minor version >= requested minor

		if (versionMajor > parseFloat(reqMajorVer)) {

			return true;

		} else if (versionMajor == parseFloat(reqMajorVer)) {

			if (versionMinor > parseFloat(reqMinorVer))

				return true;

			else if (versionMinor == parseFloat(reqMinorVer)) {

				if (versionRevision >= parseFloat(reqRevision))

					return true;

			}

		}

		return false;

	}

}



function AC_AddExtension(src, ext)

{

  if (src.indexOf('?') != -1)

    return src.replace(/\?/, ext+'?'); 

  else

    return src + ext;

}



function AC_Generateobj(objAttrs, params, embedAttrs) 

{ 

  var str = '';

  if (isIE && isWin && !isOpera)

  {

    str += '<object ';

    for (var i in objAttrs)

    {

      str += i + '="' + objAttrs[i] + '" ';

    }

    str += '>';

    for (var i in params)

    {

      str += '<param name="' + i + '" value="' + params[i] + '" /> ';

    }

    str += '</object>';

  }

  else

  {

    str += '<embed ';

    for (var i in embedAttrs)

    {

      str += i + '="' + embedAttrs[i] + '" ';

    }

    str += '> </embed>';

  }



  document.write(str);

}



function AC_FL_RunContent(){

  var ret = 

    AC_GetArgs

    (  arguments, ".swf", "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"

     , "application/x-shockwave-flash"

    );

  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);

}



function AC_SW_RunContent(){

  var ret = 

    AC_GetArgs

    (  arguments, ".dcr", "src", "clsid:166B1BCA-3F9C-11CF-8075-444553540000"

     , null

    );

  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);

}



function AC_GetArgs(args, ext, srcParamName, classid, mimeType){

  var ret = new Object();

  ret.embedAttrs = new Object();

  ret.params = new Object();

  ret.objAttrs = new Object();

  for (var i=0; i < args.length; i=i+2){

    var currArg = args[i].toLowerCase();    



    switch (currArg){	

      case "classid":

        break;

      case "pluginspage":

        ret.embedAttrs[args[i]] = args[i+1];

        break;

      case "src":

      case "movie":	

        args[i+1] = AC_AddExtension(args[i+1], ext);

        ret.embedAttrs["src"] = args[i+1];

        ret.params[srcParamName] = args[i+1];

        break;

      case "onafterupdate":

      case "onbeforeupdate":

      case "onblur":

      case "oncellchange":

      case "onclick":

      case "ondblClick":

      case "ondrag":

      case "ondragend":

      case "ondragenter":

      case "ondragleave":

      case "ondragover":

      case "ondrop":

      case "onfinish":

      case "onfocus":

      case "onhelp":

      case "onmousedown":

      case "onmouseup":

      case "onmouseover":

      case "onmousemove":

      case "onmouseout":

      case "onkeypress":

      case "onkeydown":

      case "onkeyup":

      case "onload":

      case "onlosecapture":

      case "onpropertychange":

      case "onreadystatechange":

      case "onrowsdelete":

      case "onrowenter":

      case "onrowexit":

      case "onrowsinserted":

      case "onstart":

      case "onscroll":

      case "onbeforeeditfocus":

      case "onactivate":

      case "onbeforedeactivate":

      case "ondeactivate":

      case "type":

      case "codebase":

      case "id":

        ret.objAttrs[args[i]] = args[i+1];

        break;

      case "width":

      case "height":

      case "align":

      case "vspace": 

      case "hspace":

      case "class":

      case "title":

      case "accesskey":

      case "name":

      case "tabindex":

        ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i+1];

        break;

      default:

        ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i+1];

    }

  }

  ret.objAttrs["classid"] = classid;

  if (mimeType) ret.embedAttrs["type"] = mimeType;

  return ret;

}











// tree menu function

// =================================================================================

var persisteduls=new Object()

var ddtreemenu=new Object()



ddtreemenu.closefolder="imgs/interface/navOpen.gif" //set image path to "closed" folder image

ddtreemenu.openfolder="imgs/interface/navOpen.gif" //set image path to "open" folder image



//////////No need to edit beyond here///////////////////////////



ddtreemenu.createTree=function(treeid, enablepersist, persistdays){

var ultags=document.getElementById(treeid).getElementsByTagName("ul")

if (typeof persisteduls[treeid]=="undefined")

persisteduls[treeid]=(enablepersist==true && ddtreemenu.getCookie(treeid)!="")? ddtreemenu.getCookie(treeid).split(",") : ""

for (var i=0; i<ultags.length; i++)

ddtreemenu.buildSubTree(treeid, ultags[i], i)

if (enablepersist==true){ //if enable persist feature

var durationdays=(typeof persistdays=="undefined")? 1 : parseInt(persistdays)

ddtreemenu.dotask(window, function(){ddtreemenu.rememberstate(treeid, durationdays)}, "unload") //save opened UL indexes on body unload

}

}



ddtreemenu.buildSubTree=function(treeid, ulelement, index){

ulelement.parentNode.className="submenu"

if (typeof persisteduls[treeid]=="object"){ //if cookie exists (persisteduls[treeid] is an array versus "" string)

if (ddtreemenu.searcharray(persisteduls[treeid], index)){

ulelement.setAttribute("rel", "open")

ulelement.style.display="block"

ulelement.parentNode.style.backgroundImage="url("+ddtreemenu.openfolder+")"

}

else

ulelement.setAttribute("rel", "closed")

} //end cookie persist code

else if (ulelement.getAttribute("rel")==null || ulelement.getAttribute("rel")==false) //if no cookie and UL has NO rel attribute explicted added by user

ulelement.setAttribute("rel", "closed")

else if (ulelement.getAttribute("rel")=="open") //else if no cookie and this UL has an explicit rel value of "open"

ddtreemenu.expandSubTree(treeid, ulelement) //expand this UL plus all parent ULs (so the most inner UL is revealed!)

ulelement.parentNode.onclick=function(e){

var submenu=this.getElementsByTagName("ul")[0]

if (submenu.getAttribute("rel")=="closed"){

submenu.style.display="block"

submenu.setAttribute("rel", "open")

ulelement.parentNode.style.backgroundImage="url("+ddtreemenu.openfolder+")"

}

else if (submenu.getAttribute("rel")=="open"){

submenu.style.display="none"

submenu.setAttribute("rel", "closed")

ulelement.parentNode.style.backgroundImage="url("+ddtreemenu.closefolder+")"

}

ddtreemenu.preventpropagate(e)

}

ulelement.onclick=function(e){

ddtreemenu.preventpropagate(e)

}

}



ddtreemenu.expandSubTree=function(treeid, ulelement){ //expand a UL element and any of its parent ULs

var rootnode=document.getElementById(treeid)

var currentnode=ulelement

currentnode.style.display="block"

currentnode.parentNode.style.backgroundImage="url("+ddtreemenu.openfolder+")"

while (currentnode!=rootnode){

if (currentnode.tagName=="UL"){ //if parent node is a UL, expand it too

currentnode.style.display="block"

currentnode.setAttribute("rel", "open") //indicate it's open

currentnode.parentNode.style.backgroundImage="url("+ddtreemenu.openfolder+")"

}

currentnode=currentnode.parentNode

}

}



ddtreemenu.flatten=function(treeid, action){ //expand or contract all UL elements

var ultags=document.getElementById(treeid).getElementsByTagName("ul")

for (var i=0; i<ultags.length; i++){

ultags[i].style.display=(action=="expand")? "block" : "none"

var relvalue=(action=="expand")? "open" : "closed"

ultags[i].setAttribute("rel", relvalue)

ultags[i].parentNode.style.backgroundImage=(action=="expand")? "url("+ddtreemenu.openfolder+")" : "url("+ddtreemenu.closefolder+")"

}

}



ddtreemenu.rememberstate=function(treeid, durationdays){ //store index of opened ULs relative to other ULs in Tree into cookie

var ultags=document.getElementById(treeid).getElementsByTagName("ul")

var openuls=new Array()

for (var i=0; i<ultags.length; i++){

if (ultags[i].getAttribute("rel")=="open")

openuls[openuls.length]=i //save the index of the opened UL (relative to the entire list of ULs) as an array element

}

if (openuls.length==0) //if there are no opened ULs to save/persist

openuls[0]="none open" //set array value to string to simply indicate all ULs should persist with state being closed

ddtreemenu.setCookie(treeid, openuls.join(","), durationdays) //populate cookie with value treeid=1,2,3 etc (where 1,2... are the indexes of the opened ULs)

}



////A few utility functions below//////////////////////



ddtreemenu.getCookie=function(Name){ //get cookie value

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 ""

}



ddtreemenu.setCookie=function(name, value, days){ //set cookei value

var expireDate = new Date()

//set "expstring" to either future or past date, to set or delete cookie, respectively

var expstring=expireDate.setDate(expireDate.getDate()+parseInt(days))

document.cookie = name+"="+value+"; expires="+expireDate.toGMTString()+"; path=/";

}



ddtreemenu.searcharray=function(thearray, value){ //searches an array for the entered value. If found, delete value from array

var isfound=false

for (var i=0; i<thearray.length; i++){

if (thearray[i]==value){

isfound=true

thearray.shift() //delete this element from array for efficiency sake

break

}

}

return isfound

}



ddtreemenu.preventpropagate=function(e){ //prevent action from bubbling upwards

if (typeof e!="undefined")

e.stopPropagation()

else

event.cancelBubble=true

}



ddtreemenu.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)

}




