
var IE=0;

if(window.ActiveXObject) {
	IE=1;
}

var uuid_cnt=0;
function	uuid() {
	var d = new Date()
	var ID = d.getDate()+""+d.getMonth() + 1+""+d.getFullYear()+""+d.getHours()+""+d.getMinutes()+""+d.getSeconds()+uuid_cnt++;		
	return ID;
}

jsTemplates = function() {
	
	var 	templates;
	
	this.templates = new Array();
	
	this.addTemplate = function(name, code) {
		
		this.templates[name] = code;				
	}
							
	this.getTemplate = function(name, values) {
		
		var ntxt;
		
		if(ntxt = this.templates[name]) {
												
			// non-greedy match
			var ag = ntxt.match(/(.*)(\{.*?\})(.*)/);					
			
			
			var safety = 10;					
			while( (ag) && (safety-- > 0) ) {						
				
				var start = ag[1];
				var expr  = ag[2];
				var end   = ag[3];						
				var r = "";			
				
				var ag2 = expr.match(/\{(.*?)\}/);
										
				// alku ja loppu		
				r = values[ag2[1]];				
				ntxt =  ntxt.replace(expr, r);
				var ag = ntxt.match(/(.*)(\{.*?\})(.*)/);
			}		
			return ntxt;						
		}				
	}								
}





var test = new Array();		
test["otsikko"] = "otsikko";

function noAction() {
	return false;
}

jsMenuItem = function(heading, link) {
	
	var	items;
	var heading;
	var link;
	
	this.items = new Object();
	
	this.heading = heading;
	this.link	 = link;
	this.id      = uuid();			
				
	this.addItem = function(heading, link) {				
		var i = this.items.length;
		this.items[i] = new jsMenuItem(heading, link);
	}
				
	this.getItems = function() {
		return this.items;		
	}								
	
}

function	moveToMyLink(eObj)	{			
	return false;						
}

function	addEvent(obj, evType, fn, useCapture) {
	if(obj.addEventListener) {
		obj.addEventListener(evType,fn,useCapture);
		return true;
	} else if(obj.attachEvent) {
		var r = obj.attachEvent('on'+evType, fn);
		return r;
	} else {
		obj['on'+evType] = fn;
	}
}

function	openWindow(url) {
	window.open(url, null, 'width=411, height=415, toolbar=no, status=yes, menubar=no, location=no');
}

function	menuEvent(e) {
	var target = window.event ? e.targetElement : e ? e.currentTarget : null;				
	// alert(target.subMenu);
}

var luodut = new Array();

function	createNonSelectedTR(heading, type) {
	
	if(luodut[heading]) return;
	
	var oTR = document.createElement("TR");
	var oTD = document.createElement("TD");
	
	oTR.className = "leftnavihead1row";
	
	
	luodut[heading] = 1;

	// onko ensimmäinen
	
							
	var values = Object();
	values["otsikko"] = heading;			
	
	if(type==1) {
		oTD.innerHTML = templates.getTemplate("h1EiValittu", values);
	} 
	
	if(type==0) {
		oTD.innerHTML = templates.getTemplate("h1EiValittuTop", values);
	}
	
	oTR.appendChild(oTD);
	addEvent(oTR, "click", parentMenuEvent, "false");
							
	oTR.heading = heading;
							
	return oTR;
}

function	changeToNonSelectedTR(oTR) {
	
	// var oTR = document.createElement("TR");
	
	// poista alavalinnat
	while(oTR.firstChild) oTR.removeChild(oTR.firstChild);
	
	// Tee uusi			
	var oTD = document.createElement("TD");
	
	// Alusta sisältö-template
	var values = Object();
	values["otsikko"] = oTR.heading;						
	if(oTR.index == 0) {
		oTD.innerHTML = templates.getTemplate("h1EiValittuTop", values);				
	} else {
		oTD.innerHTML = templates.getTemplate("h1EiValittu", values);
	}
				
	oTR.appendChild(oTD);
	oTR.selected = 0;
	// addEvent(oTR, "click", parentMenuEvent, "false");			
	// oTR.heading = heading;
	return oTR;
}		


function	changeToSelectedTR(oTR) {
	
	// poista vanha sisältö
	while(oTR.firstChild) oTR.removeChild(oTR.firstChild);
	
	// Tee uusi			
	var oTD = document.createElement("TD");
	
	// Alusta sisältö-template
	var values = Object();
	values["otsikko"] = oTR.heading;						
	if(oTR.index == 0) {
		oTD.innerHTML = templates.getTemplate("h1ValittuTop", values);				
	} else {
		oTD.innerHTML = templates.getTemplate("h1Valittu", values);
	}						
	oTR.selected = 1;
	oTR.appendChild(oTD);
	return oTR;
}		

function	parentMenuEvent(e) {
	
	var e = window.event ? window.event : e;
	var target = e.target ? e.target : e.srcElement;
	if(target.menu==1) {
		openCloseRow(target);
	} else {

		var node = target.parentNode;								
		var done = 0;
		while(node && (!done)) {				
			if(node.menu==1) {												
				openCloseRow(node);
				done=1;
			}					
			node = node.parentNode;				
		}
	}						
}

function	clickSubMenu(e) {
	
	var e = window.event ? window.event : e;
	var target = e.target ? e.target : e.srcElement;
	if(target.menu > 0) {				
		selectSubMenu(node);			
	} else {
		var node = target.parentNode;								
		var done = 0;
		while(node && (!done)) {				
			if(node.menu > 0) {						
				selectSubMenu(node);
				done=1;
			}					
			node = node.parentNode;				
		}
	}	
}


function	unSelectSubMenu(obj) {

	var newTR = obj;
	while(obj.firstChild) obj.removeChild(obj.firstChild);
				
	var newTD = document.createElement("TD");			
	var values = Object();				
	values["otsikko"] = obj.heading;						
	var html = templates.getTemplate("h"+obj.menu+"EiValittu", values);
	newTD.innerHTML = html;			
	newTR.appendChild(newTD);
						
	obj.selected=0;	
	newTR.className = "leftnavihead"+obj.menu+"row";			
	
	var oTR = obj;
	if(oTR.subMenus)
	if(oTR.subMenus.length) {				
		for(var i=0; i<oTR.subMenus.length; i++) {
			
			var node = oTR.subMenus[i];													
			node.style.display = "none";				
			if(node.parentNode) {			
				node.parentNode.removeChild(node);					
			}
			node.selected = 0;
		}												
	}
				
	return newTR;
							
}


function	selectSubMenu(obj, nolink) {

	
	if(obj.selected) {
		
		unSelectSubMenu(obj);
		if(obj.link) {
			if(!nolink) {
				
				if(obj.subMenus) {
					if(obj.subMenus.length > 0) {
					} else {
						window.location = obj.link;
					}
				} else {
					window.location = obj.link;
				}
			}			
		}
		return;
	}
	
	if(obj.link) {
		// alert("Moving to new location "+obj.link);
		
		if(!nolink) {
			
			if(obj.subMenus) {
				if(obj.subMenus.length > 0) {
				} else {
					window.location = obj.link;
				}
			} else {
				window.location = obj.link;
			}
		}
	}
	
	
	var newTR = obj;
	while(obj.firstChild) obj.removeChild(obj.firstChild);							
	
	var newTD = document.createElement("TD");
				
	var values = Object();				
	values["otsikko"] = obj.heading;
	
	// alert("h"+obj.menu+"Valittu");
							
	var html = templates.getTemplate("h"+obj.menu+"Valittu", values);
	
	if(obj.menu==3 && (obj.nextSibling) ) {		
		if(obj.nextSibling.menu==2) {
			html = templates.getTemplate("h3ValittuAlin", values);
		} 					
	}
	
	
	newTD.innerHTML = html;			
	newTR.appendChild(newTD);
			
	var sCnt=0;
	var pNode = obj.previousSibling;
	
	// obj.selected=0;	
	
	while(pNode && (!(pNode.menu==(obj.menu-1)) ) ) {
		pNode = pNode.previousSibling;
		sCnt++;								
		if(sCnt > 50) break;
	}
				
	if(pNode)
	if(pNode.subMenus) {								
		
		if(pNode.subMenus.length > 0) {
			
			for(var i=0; i<pNode.subMenus.length; i++) {
											
				var sM = pNode.subMenus[i];
				if(sM==obj) {							
					// pNode.subMenus[i] = newTR;
				} 
										
				if(sM.selected && !(sM==obj)) {							
					var newM = unSelectSubMenu(sM);
					newM.selected=0;
					// pNode.subMenus[i] = newM;							
				}
				
			}
		}				
	} 
	

	newTR.className = "leftnavihead"+newTR.menu+"row";			
	newTR.selected = 1;					
	// obj.parentNode.replaceChild(newTR, obj);
	
	
	var oTR = obj;
	
	if(oTR.subMenus) {
		if(oTR.subMenus.length) {
			
			var node;
			for(var i=0; i<oTR.subMenus.length; i++) {
				node = oTR.subMenus[i];
				if(IE) {
					node.style.display = "block";	
				} else {
					node.style.display = "table-row";	
				}
				oTR.parentNode.insertBefore(node, oTR.nextSibling);									
				addEvent(node, "click", clickSubMenu, false);			
			}	
			
			if(oTR.subMenus.length) {
				// alert(node.innerHTML);				
				var node = oTR.subMenus[0];								
				node.removeChild(node.firstChild);
								
				var values = Object();
				values["otsikko"] = node.heading;
								
				// node.childNodes[0].style.border="1px solid black";				
				
				if(node.selected) {
					var html = templates.getTemplate("h3ValittuAlin", values);		
				} else {
					var html = templates.getTemplate("h3Alin", values);
				}				
				var newTD = document.createElement("TD");				
																
				newTD.innerHTML = html;			
				node.appendChild(newTD);				
								
			}
														
		}			
	}
	
	
}

function	createSubMenu(head, level) {
				
	var	newTR = document.createElement("TR");			
	
	var newTD = document.createElement("TD");
						
	if(!level) level = 2;
	
	var values = Object();				
	values["otsikko"] = head;						
	var html = templates.getTemplate("h"+level+"EiValittu", values);
	
	newTD.innerHTML = html;			
	newTR.appendChild(newTD);
						
	newTR.menu=level;
	newTR.heading = head;		
	newTR.className = "leftnavihead"+level+"row";
				
	addEvent(newTR, "click", clickSubMenu, false);
				
	return newTR;
}

function	closeSubMenus(oTR) {
	

	
	if(oTR.subMenus)
	if(oTR.subMenus.length > 0 ) {	
						
		oTR.selected=0;				
		
		for(var i=0; i<oTR.subMenus.length; i++) {
			var node = oTR.subMenus[i];
			
			if(node.selected)
			if(node.subMenus)
			if(node.subMenus.length > 0) {
				for(var a=0; a<node.subMenus.length; a++) {
					var pSub = node.subMenus[a];																		
										
					unSelectSubMenu(pSub);
					pSub.selected=0;
					if(pSub.parentNode) {
						pSub.parentNode.removeChild(pSub);						
					}
				}
			}
						
			// unSelectSubMenu(node);
			
			var values = Object();				
			values["otsikko"] = node.heading;						
			var html = templates.getTemplate("h"+node.menu+"EiValittu", values);						
											
			node.style.display = "none";				
			node.selected=0;						
			oTR.parentNode.removeChild(node);
								
		}												
		if(oTR.menu==1) {								
			changeToNonSelectedTR(oTR);										
		}
		return oTR;
	}
	return oTR;
}


function	openCloseRow(oTR) {
	
	var oTableCont = oTR.parentNode;
				
	if(oTR.selected) {				
		// alert("closing submenus");
		closeSubMenus(oTR);
		return;
	}
	
	if(oTR.link) {	
		if(oTR.subMenus) {
			if(oTR.subMenus.length > 0) {
			} else {
				window.location = oTR.link;		
			}
		} else {
			window.location = oTR.link;		
		}
	}	
				
	var closableNodes = new Array();
	for(var i=0; i<oTableCont.childNodes.length; i++) {
		if(i>0) {
			var node = oTableCont.childNodes[i];
			
			if(node.className=="leftnavihead1row") {									
				
				if(node != oTR) {		
					if(node.selected) {
						node = closeSubMenus(node);															
						changeToNonSelectedTR(node);						
					}							
				}
			}				
			
			// oTableCont.style.height="40px";	
		}
	}			

	// var tt = createSelectedTR("testi");
													
	changeToSelectedTR(oTR);
	
	oTR.selected=1;
	oTR.menu=1;
	oTR.className="leftnavihead1row";
	
	if(oTR.subMenus.length) {
		for(var i=0; i<oTR.subMenus.length; i++) {
			var node = oTR.subMenus[i];
			if(IE) {
				node.style.display = "block";	
			} else {
				node.style.display = "table-row";	
			}
			// alert("Adding node : " +node.id);			
			unSelectSubMenu(node);
			oTableCont.insertBefore(node, oTR.nextSibling);					
		}												
	}
				
}