// Product title: Gurt JavaScript Tree Menu
// Product version details: 1.1.1, 02-17-2006 (mm-dd-yyyy)
// Product URL: http://gurtom.com/products/trees/js
// Contact info: gurt-feedback@gurtom.com (specify product title in the subject)
// Notes: This script is free. Feel free to copy, use and change this script as 
// long as this head part remains unchanged.  Visit official site for details.
// Copyright: (c) 2005 by Gurtom.Com

var gTrees = [];
var myImgs = [];
var cmsID = "";
function gTree(sId, oCfg,cmsidnr){

	cmsID = cmsidnr;
	checkForOpenItems();
	var i, aItems = oCfg.items;

	this.aTpl = oCfg.tpl;	
	for (i in this.aTpl)
		if (i.charAt(0)=='i' && this.aTpl[i]) {
			this.aTpl['o'+i] = new Image();
			this.aTpl['o'+i].src = this.aTpl[i];
		}
	this.aTpl['myImg'];
	this.level = -1;
	this.id = sId;
	this.tree = gTrees[sId] = this;
	this.all = [];
		
	for(i=0; i< aItems.length;i++) 
		gAssignItem(this, aItems[i]);

	document.write(gDescHtml(this).join(''));
	
	for(i=0; i< this.aDesc.length;i++) gOpenItem(this.aDesc[i]);

	this.toggle = function (nId) {var oItem = this.all[nId]; gOpenItem(oItem, oItem.bOpened) };
	this.rollover = function (nId, bC) {gStatusbarItem(this.all[nId],bC)};
	this.select = function (nId) {return gSelectItem(this.all[nId])};
}

function gAssignItem(_, aCfg, nOrd){
	var oPrev, oItem, i;
	if(!_.aDesc) _.aDesc = [];
	if(nOrd == undefined || nOrd > _.aDesc.length) nOrd = _.aDesc.length;
	oItem = new gInitItem(_, aCfg[0], aCfg[1],aCfg[2],aCfg[3]);
	
	if (aCfg[2] != "")
	{
		myImgs[aCfg[2]] = new Image();
		myImgs[aCfg[2]].src = "system/image/menuicons/"+aCfg[2];
	}
	
	if(aCfg[4]) 
	{	
		for(i=4; i< aCfg.length;i++) 
		{
			if (aCfg[i])
				gAssignItem(oItem, aCfg[i],i-4);
		}
	}
	i = nOrd;
	while(oItem) {
		oPrev = _.aDesc[i];
		_.aDesc[i] = oItem;
		oItem = oPrev;
		i++;
	}
	return _.aDesc[nOrd];
}

function gAddItem(_, aCfg, nOrd){
	var oItem = gAssignItem(_, aCfg, nOrd);
	gRerenderItem(_);
	return oItem;
}

function gRemoveDesc(_, oItem){
	var n = 0 ,i = 0, oNdesc = [];
	if(_.tree.oSel == oItem) _.tree.oSel = 0;
	for(i in _.aDesc) 
		if(_.aDesc[i]!=oItem) oNdesc[n++] = _.aDesc[i];
	_.tree.all[oItem.id] == 0;
	if(!oNdesc.length) _.aDesc = 0;
	else _.aDesc = oNdesc;
	gRerenderItem(_);
}

function gRemoveItem(_){
	if(_.aDesc)
	while(_.aDesc[0]) gRemoveItem(_.aDesc[0]);
	gRemoveDesc(_.oAnc, _);
}

function gOpenItem(_, bClose){
	_.bOpened = !bClose;

	if (_.iUniqId != -1)	
		saveStatusInfo(_.iUniqId,!bClose);
	var oIdiv = gGetDiv('i_div'+ _.tree.id + '_'+ _.id);
	if (oIdiv) {
		if (!oIdiv.innerHTML) {
			oIdiv.innerHTML = gDescHtml(_).join('');
		}

		oIdiv.style.display = (bClose ? 'none' : 'block');
		
		var oJicon = document.images['j_img' + _.tree.id + '_'+ _.id],
			oIicon = document.images['i_img' + _.tree.id + '_'+ _.id];
		if (oJicon) oJicon.src = gIconItem(_,true);
		if (oIicon) oIicon.src = gIconItem(_);
	}
	return false;
}


function gSelectItem(_, bDesel){
	if(!bDesel){
		var oOldsel = _.tree.oSel;
		_.tree.oSel = _;
		if(oOldsel) gSelectItem(oOldsel, 1);
	}
	if(_.bShow) {
		document.images['i_img' + _.tree.id + '_' + _.id].src = gIconItem(_,false);
		gGetDiv('i_txt'+ _.tree.id + '_'+ _.id).style.fontWeight = bDesel ? 'normal' : 'bold';
		gStatusbarItem(_, bDesel);
	}
	return Boolean(_.sLnk);
}

function gHideItem(_, bShow){
	_.bShow = bShow;
	if(_.level) gRerenderItem(_.oAnc);
	else {
		var oIdiv = gGetDiv('s_div'+ _.tree.id + '_'+ _.id);
		if (!oIdiv) return false;
		oIdiv.style.display = (bShow ? 'block' : 'none');
	}
}

function gStatusbarItem (_, bClear) {
	window.setTimeout('window.status=unescape("' + escape(_.sSrc) + '")', 0);
}

function gInitItem(oAnc, sSrc, sLnk,sIcon,iUniqId){
	this.oAnc = oAnc;
	this.tree = oAnc.tree;
	this.id = this.tree.all.length;
	this.tree.all[this.id] = this;
	this.sSrc = sSrc;
	this.sLnk = sLnk?sLnk:this.tree.aTpl.def_link;
	this.level = oAnc.level + 1;
	this.bShow = 1;
	if (OpenItems[iUniqId] == true)
		this.bOpened = 1;
	else
		this.bOpened = 0;
	this.sIcon = sIcon;
	this.iUniqId = iUniqId;

}

function gRerenderItem(_){
	if(!_.bShow) return;
	var oIdiv = gGetDiv('s_div'+ _.tree.id + '_'+ _.id);
	if (!oIdiv) return;
	oIdiv.innerHTML = gHtmlItem(_);
}

function gRenderItem(_){
	return ['<div id="s_div', _.tree.id , '_' , _.id , '" style="display:', (_.bShow ? 'block' : 'none') ,'">', gHtmlItem(_), '</div>'].join('');
}

function gHtmlItem(_){
	var aOffset = [],
		oCurrent_item = _.oAnc;
	for (var i = _.level; i > 1; i--) {
		aOffset[i] = '<img src="' + _.tree.aTpl[gLastItem(oCurrent_item) ? 'ie' : 'il'] + '" border="0" align="absbottom">';
		oCurrent_item = oCurrent_item.oAnc;
	}
	
	var sToggle = ['gTrees[\'' , _.tree.id , '\'].toggle(\'' , _.id , '\')'].join(''),
		sRollover = [' onmouseover="javascript: gTrees[\'' , _.tree.id , '\'].rollover(\'' , _.id , '\')" onmouseout="javascript: gTrees[\'' , _.tree.id , '\'].rollover(\'' , _.id , '\',1)"'].join(''),
		sSelect = ['onclick="return gTrees[\'' , _.tree.id , '\'].select(\'' , _.id , '\')"'].join('');
		sDesc = _.aDesc ? '<div id="i_div'+ _.tree.id + '_'+ _.id + '"  style="display:'+(_.bOpened?'block':'none')+'" >'+(_.bOpened||_.tree.aTpl.build_whole?gDescHtml(_).join(''):'')+'</div>' : '';
	return ['<table cellpadding="0" cellspacing="0" border="0"><tr><td nowrap>' , (_.level ? 
		aOffset.join('') + (_.aDesc
		? ['<a href="javascript:',sToggle,'"', sRollover ,'><img src="' , gIconItem(_, true) , '" border="0" align="absbottom" name="j_img', _.tree.id , '_' , _.id , '"></a>'].join('')
		: ['<img src="' , gIconItem(_, true) , '" border="0" align="absbottom">'].join('')) : '') 
		, '<a href="' , _.sLnk , '" target="' , _.tree.aTpl['target'] , '" ', sSelect,(_.aDesc?' ondblclick="'+sToggle+'"':''), sRollover, ' class="t' , _.tree.id , 'i TreeLink" id="i_txt', _.tree.id , '_' , _.id , '"><img style="margin-right:3px;" src="' , gIconItem(_) , '" border="0" align="absbottom" name="i_img', _.tree.id , '_' , _.id , '" class="t' , _.tree.id , 'im">' , _.sSrc , '</a></td></tr></table>' , sDesc
		].join('');
}

function gDescHtml(_){
	var aHtml = [];
	for(var i=0; i< _.aDesc.length;i++) {
		if(_.aDesc[i].bShow	)
		aHtml[i] = gRenderItem(_.aDesc[i]);
	}
	return aHtml;
}

function gIconItem (_, bJunction) {
	if (bJunction)
		return _.tree.aTpl[['i' , (_.level ? '_' : 'r') , (_.aDesc ? 'n' : '_') , (_.aDesc && _.bOpened ? 'o' : '_'), (_.tree.oSel == _ && !bJunction ? 's' : '_') ,  (bJunction ? 'j' : '_') + (bJunction && gLastItem(_) ? 'l' : '_')].join('')];
	else
		return "system/image/menuicons/"+_.sIcon;
		
}

function gLastItem(_) {
	var oLevel = _.oAnc.aDesc,
		oLast;
	for(var i=0; i < oLevel.length; i++){
		if(oLevel[i].bShow) oLast = oLevel[i];
	}
	return oLast == _?1:0
}

var OpenItems = [];
function saveStatusInfo(iUniqId,bOpen)
{
	OpenItems[iUniqId] = bOpen;
}


function saveOpenStatus()
{
	str = "";
	for (index in OpenItems)
	{
		if (OpenItems[index] == true)
			str = str + index + "-";
	}
	createCookie('OpenMenu'+cmsID,str.substr(0,str.length-1),365);
}

function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}

function checkForOpenItems()
{
	str = readCookie('OpenMenu'+cmsID);
	if (str != null)
	{
		var arr = str.split('-');
		for(var i=0;i < arr.length;i++) {
			OpenItems[arr[i]] = true;
		}
	}
}
gGetDiv = document.all 	? function (sId) {return document.all[sId]}	: (document.getElementById ? function (sId) {return document.getElementById(sId)}: null);


function openItemRecursive(obj)
{
	if (obj.oAnc.level != -1)
	{
		obj.oAnc.bOpened = 1;
		gOpenItem(obj.oAnc);
		openItemRecursive(obj.oAnc);
	}
}

function selectItem(id)
{
	if (gTrees['CMS_MENU']==null || gTrees['CMS_MENU'].all==null ||  gTrees['CMS_MENU'].all.length==null)
	{
		window.top.NextSelectItem = id;	
	}
	else
	{
		for(var i=0;i < gTrees['CMS_MENU'].all.length;i++) 
		{
			if (gTrees['CMS_MENU'].all[i].iUniqId == id)
			{
				openItemRecursive(gTrees['CMS_MENU'].all[i]);
				gSelectItem(gTrees['CMS_MENU'].all[i]);
			}	
		}
	}	
	
}
