	/** Section: Input chain **/
		function WendigoGUI_inputChain_addToChain(sender,containerId,pos,length)
		{
			sender = document.getElementById(sender);
			if (sender)
			{
				eval ("var func = function(e){ WendigoGUI_inputChain_keyPress('"+containerId+"',"+pos+","+length+",e); }");
				appendEvent(sender,"keypress",func);
				if (document.all)
				{
					eval ("var func = function(e){ WendigoGUI_inputChain_keyUp('"+containerId+"',"+pos+","+length+",e); }");
					appendEvent(sender,"keyup",func);
				}
			}
		}
	
		function WendigoGUI_inputChain_keyPress(containerId,pos,length,e)
		{
			var keynum = -1;
			if (e!=false)
			{
				if (document.all)
				{
					e = event;
					keynum = e.keyCode;
				}
				else{ keynum = e.which; }
				e.stopPropagation? e.stopPropagation() : e.cancelBubble = true;
			}

			var container = document.getElementById(containerId);
			if (container)
			{
				var inputs = container.getElementsByTagName('input');
				if (inputs[pos])
				{
					var val = inputs[pos].value;
					if (val.length>=length-(document.all?0:1) && keynum!=8 && keynum!=0)
					{ 
						if (inputs[pos+1])
						{
							inputs[pos+1].select();
							inputs[pos+1].focus(); 
						}
						inputs[pos].value = val.substr(0,(inputs[pos+1]?length:length-1));
					}
					
					if (val.length<=0 && (keynum==8 || keynum==0) && inputs[pos-1])
					{
						inputs[pos-1].select();
						inputs[pos-1].focus(); 
					}
				}
			}
		}
		
		function WendigoGUI_inputChain_keyUp(containerId,pos,length,e)
		{
			var keynum = -1;
			if (e!=false)
			{
				if (document.all)
				{
					e = event;
					keynum = e.keyCode;
				}
				else{ keynum = e.which; }
				e.stopPropagation? e.stopPropagation() : e.cancelBubble = true;
			}
			
			if (keynum==8 || keynum==0)
			{
				var container = document.getElementById(containerId);
				if (container)
				{
					var inputs = container.getElementsByTagName('input');
					if (inputs[pos])
					{
						var val = inputs[pos].value;
						if (val.length<=0 && inputs[pos-1])
						{
							inputs[pos-1].select();
							inputs[pos-1].focus(); 
						}
					}
				}
			}
		}

		
	/** EndSection **/

	/** Section: Foldable Tree **/
		function WendigoGUI_foldableTree_make(id)
		{
		//	alert (id);
			var obj = document.getElementById(id);
			if (obj)
			{
				var liObjs = obj.getElementsByTagName('li');
					for(i=0;i<liObjs.length;i++)
					{
						var liObj = liObjs[i];
							liObj.id = (liObj.id?liObj.id:'VAR_WendigoGUI_foldableTree_li_'+i);
						var liId = liObj.id;
						eval("var fnc = function(e){ WendigoGUI_foldableTree_toogle('"+liId+"',e); }");
						appendEvent(liObj,"click",fnc);
					}
					
				var ulObjs = obj.getElementsByTagName('ul');
					for (k=0;k<ulObjs.length;k++)
					{
						ulObjs[k].style.display = 'none';
						ulObjs[k].folded = true;
					}
			}
		}
		
		function WendigoGUI_foldableTree_toogle(objId,e)
		{
			if (e!=false)
			{
				if (document.all){ e = event; }
				e.stopPropagation? e.stopPropagation() : e.cancelBubble = true;
			}
			obj = document.getElementById(objId);
			if (obj && obj.childNodes)
			{
					for(i=0;i<obj.childNodes.length;i++)
					{
						var ulObj = obj.childNodes[i];
						if (ulObj.nodeName!='UL'){ continue; };
						if (ulObj.folded && ulObj.folded==true)
						{
							ulObj.style.display = '';
							ulObj.folded = false;
						}
						else
						{
							ulObj.style.display = 'none';
							ulObj.folded = true;
						}
					}
			}
			
		}
	/** EndSection **/

	/** Section: Clock **/
		function WendigoGUI_clock_tick(id,format,interval,dayNames,monthNames)
		{
			var obj = document.getElementById(id);
			if (obj)
			{ 
				var nowTime = new Date();
					obj.innerHTML = nowTime.formatString(format,(dayNames!='null'?dayNames:null),(monthNames!='null'?monthNames:null));
					window.setTimeout('WendigoGUI_clock_tick("'+id+'","'+format+'",'+interval+',"'+(dayNames!='null'?dayNames:'null')+'","'+(monthNames!='null'?monthNames:'null')+'");',interval);
			}
		}
	/** EndSection **/

	/** Section: Tabs-like toogle **/
		function WendigoGUI_toogle_buttons_make(id,groupName)
		{
			var obj = document.getElementById(id);
			if (obj)
			{
				var k = 0;
				for(i=0;i<obj.childNodes.length;i++)
				{
					var child = obj.childNodes[i];
					if (child.nodeType==1)
					{
						eval("var fnc = function() { WendigoGUI_toogle_do('"+groupName+"',"+k+"); }");
						appendEvent(child,"click",fnc);
						k++;
					}
				}
			}
		}
		
		function WendigoGUI_toogle_objects_make(id,groupName,defaultNr)
		{
			var obj = document.getElementById(id);
			if (obj)
			{
				for (i=0;i<obj.childNodes.length;i++)
				{
					if (obj.childNodes[i].nodeType==1){ obj.childNodes[i].style.display = 'none'; }
				}
			}
			WendigoGUI_toogle_do(groupName,defaultNr);
		}
		
		function WendigoGUI_toogle_do(groupName,objNr)
		{
			groupName = 'VAR_WendigoGUI_toogleObjects_'+groupName;
			var obj = document.getElementById(groupName);
			if (obj)
			{
				var k = 0;
				for (i=0;i<obj.childNodes.length;i++)
				{
					if (obj.childNodes[i].nodeType==1)
					{
						obj.childNodes[i].style.display = 'none';
						if (k==objNr){ obj.childNodes[i].style.display = ''; }
						k++;
					}
				}
			}
		}
	/** EndSection **/


/** Section: Table functions **/

	/** Section: Table editable functions **/
		function WendigoGUI_table_editable_make(id)
		{
			var table = document.getElementById(id);
			if (!table){ return; }
			
			var rows = table.getElementsByTagName('tr');
				for(rowNR=0;rowNR<rows.length;rowNR++)
				{
					var cells = rows[rowNR].getElementsByTagName('td');
					for(cellNR=0;cellNR<cells.length;cellNR++)
					{
						var cell = cells[cellNR];
						cell.id = 'wcell_'+rowNR+'_'+cellNR;
						if (cell.name)
						{ 
							var formName = cell.name;
							cell.name = '';
						}
						
						else { var formName = id+'['+cellNR+'][]'; }

						eval('func = function(){ WendigoGUI_table_editable_toogleContent ("'+cell.id+'"); };');
						appendEvent(cell,'mouseover',func);
						appendEvent(cell,'mouseout',func);
						cell.innerHTML = '<input type="text" name="'+formName+'" value="'+cell.innerHTML+'" style="width:100%; display: none;"><span style="color: #FF0000; display:;">'+cell.innerHTML+'</span>';
					}
				}
		}
		
		function WendigoGUI_table_editable_toogleContent(id)
		{
			var cell = document.getElementById(id);
			if (cell)
			{
				var obj_input = cell.getElementsByTagName('input');
				var obj_span = cell.getElementsByTagName('span');
				if (obj_input.length>0 && obj_span.length>0)
				{
					obj_input = obj_input[0];
					obj_span = obj_span[0];
					if (obj_input.style.display=='')
					{ 
						obj_input.style.display = 'none'; 
						obj_span.innerHTML = obj_input.value;
						obj_span.style.display = ''; 
					}
					else 
					{ 
						obj_input.style.display = ''; 
						obj_span.style.display = 'none'; 
					}
				}
			}
			return true;
		}
	/** EndSection **/

	/** Section: Table sorting functions **/
		var WENDIGO_SORTCOLINDEX = null;
		var WENDIGO_SORTCOLMODE = null;
		
		function WendigoGUI_table_sort(sender,mode)
		{
			WENDIGO_SORTCOLMODE = mode.toLowerCase();
			
			/** Section: Get TABLE object **/
				var table = null;
					table = sender.parentNode.parentNode;
					if (table.nodeName=='THEAD'){ table = table.parentNode; }
					if (table.nodeName!='TABLE'){ return false; }
			/** EndSection **/
		
			/** Section: Determine clicked column number **/		
				var colIndex = null;
				var thNodes = sender.parentNode.getElementsByTagName('th');
					for(i=0;i<thNodes.length;i++)
					{
						if (thNodes[i]==sender){ colIndex = i; }
						else { thNodes[i].wendigoGUISortDirection = null; }
					}
					if (colIndex==null){ return false; }
					WENDIGO_SORTCOLINDEX = colIndex;
			/** EndSection **/
			
			/** Section: Determine sort direction **/
				var sortDir = 'ASC';
				
				if (sender.wendigoGUISortDirection)
				{
					if (sender.wendigoGUISortDirection=='ASC'){ sortDir = 'DESC'; }
					else { sortDir = 'ASC'; }
				}
				
				sender.wendigoGUISortDirection = sortDir;
			/** EndSection **/


			/** Section: Create temporaly table and sort it with custom function **/	
				var temp = new Array();
				var rows = table.getElementsByTagName('tr');
				for(i=1;i<rows.length;i++){ temp[i-1] = rows[i]; }
				temp.sort(H_Wendigo_GUIsortTable_doSort);
				if (sortDir=='DESC'){ temp.reverse(); }
			/** EndSection **/
		
			/** Section: Rewrite original table **/	
				for (i=0;i<temp.length;i++){ temp[i].parentNode.appendChild(temp[i]); }
			/** EndSection **/
				
		}
		
		function H_Wendigo_GUIsortTable_doSort(a,b)
		{
			var result = 1;
			
			if (!a.childNodes[WENDIGO_SORTCOLINDEX] || !b.childNodes[WENDIGO_SORTCOLINDEX]){ return result; }

			/** Section: Shitty Firefox bug fix **/
				var aChildren = new Array();
				var bChildren = new Array();
				
				for(i=0;i<a.childNodes.length;i++){ if (a.childNodes[i].nodeType==1){ aChildren.push(a.childNodes[i]); } }
				for(i=0;i<b.childNodes.length;i++){ if (b.childNodes[i].nodeType==1){ bChildren.push(b.childNodes[i]); } }
			/** EndSection **/

			var a_data = aChildren[WENDIGO_SORTCOLINDEX].innerHTML;
			var b_data = bChildren[WENDIGO_SORTCOLINDEX].innerHTML;

			if (aChildren[WENDIGO_SORTCOLINDEX].getElementsByTagName('span').length>0)
			{ 
				var tmp = aChildren[WENDIGO_SORTCOLINDEX].getElementsByTagName('span');
				a_data =  tmp[0].innerHTML;
			}
			if (bChildren[WENDIGO_SORTCOLINDEX].getElementsByTagName('span').length>0)
			{ 
				var tmp = bChildren[WENDIGO_SORTCOLINDEX].getElementsByTagName('span');
				b_data =  tmp[0].innerHTML;
			}
			
			if (WENDIGO_SORTCOLMODE=='num' || WENDIGO_SORTCOLMODE=='numeric')
			{
				a_data = parseFloat(a_data);
				b_data = parseFloat(b_data);
			}
			
			if (WENDIGO_SORTCOLMODE=='casesens' || WENDIGO_SORTCOLMODE=='casesensitive')
			{
				a_data = a_data;
				b_data = b_data;
				if (a_data==parseInt(a_data) && b_data==parseInt(b_data))
				{
					a_data = parseInt(a_data);
					b_data = parseInt(b_data);
				}
			}
			
			if (WENDIGO_SORTCOLMODE=='caseinsens' || WENDIGO_SORTCOLMODE=='caseinsensitive')
			{
				a_data = a_data.toLowerCase();
				b_data = b_data.toLowerCase();

				if (a_data==parseInt(a_data) && b_data==parseInt(b_data))
				{
					a_data = parseFloat(a_data);
					b_data = parseFloat(b_data);
				}
			}
			
			if (WENDIGO_SORTCOLMODE=='date' || WENDIGO_SORTCOLMODE=='time' || WENDIGO_SORTCOLMODE=='datetime')
			{
				var a_data_date = Date.parse(a_data);
				var b_data_date = Date.parse(b_data);
				if (!a_data_date){ a_data_date = Date.parse('01-01-1990 '+a_data); }
				if (!b_data_date){ b_data_date = Date.parse('01-01-1990 '+b_data); }
				
				if (!a_data_date){ a_data_date = a_data; }
				if (!b_data_date){ b_data_date = b_data; }
				
				a_data = a_data_date;
				b_data = b_data_date;

			}
			
			if (a_data==b_data) { result = 0; }
			if (a_data<b_data) { result = -1; }
			
			return result;
		}
	/** EndSection **/
	
/** EndSection **/

/** Section: Adobe Flash **/
	function WendigoGUI_flash_insert(url,w,h,id,align,version,objectParams,embedParams)
	{
		html = '';
		
		html += '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version='+version+'" width="'+w+'" height="'+h+'" id="'+id+'" align="'+align+'">';
		html += '<param name="movie" value="'+url+'" />';
		html += objectParams;
		html += '<embed src="'+url+'" width="'+w+'" height="'+h+'" name="banner" align="'+align+'" '+embedParams+' type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />';
		html += '</object>';

		document.write(html);		
	}
/** EndSection **/

/** Section: Helpers **/
	function appendEvent(obj,eventType,func,param)
	{
		if (obj.attachEvent){ obj.attachEvent('on'+eventType,func); }
		else { obj.addEventListener(eventType,func,false); }
	}
/** EndSection **/
