
// DF1.1 :: domFunction
// *****************************************************
// DOM scripting by brothercake -- http://www.brothercake.com/
// GNU Lesser General Public License -- http://www.gnu.org/licenses/lgpl.html
//******************************************************

//DOM-ready watcher
function domFunction(f, a)
{
	//initialise the counter
	var n = 0;

	//start the timer
	var t = setInterval(function()
	{
		//continue flag indicates whether to continue to the next iteration
		//assume that we are going unless specified otherwise
		var c = true;

		//increase the counter
		n++;

		//if DOM methods are supported, and the body element exists
		//(using a double-check including document.body, for the benefit of older moz builds [eg ns7.1]
		//in which getElementsByTagName('body')[0] is undefined, unless this script is in the body section)
		if(typeof document.getElementsByTagName != 'undefined' && (document.getElementsByTagName('body')[0] != null || document.body != null))
		{
			//set the continue flag to false
			//because other things being equal, we're not going to continue
			c = false;

			//but ... if the arguments object is there
			if(typeof a == 'object')
			{
				//iterate through the object
				for(var i in a)
				{
					//if its value is "id" and the element with the given ID doesn't exist
					//or its value is "tag" and the specified collection has no members
					if
					(
						(a[i] == 'id' && document.getElementById(i) == null)
						||
						(a[i] == 'tag' && document.getElementsByTagName(i).length < 1)
					)
					{
						//set the continue flag back to true
						//because a specific element or collection doesn't exist
						c = true;

						//no need to finish this loop
						break;
					}
				}
			}

			//if we're not continuing
			//we can call the argument function and clear the timer
			if(!c) { f(); clearInterval(t); }
		}

		//if the timer has reached 60 (so timeout after 15 seconds)
		//in practise, I've never seen this take longer than 7 iterations [in kde 3
		//in second place was IE6, which takes 2 or 3 iterations roughly 5% of the time]
		if(n >= 60)
		{
			//clear the timer
			clearInterval(t);
		}

	}, 250);
};

function getElementsByClassName(oElm, strTagName, strClassName){
    var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
    var arrReturnElements = new Array();
    strClassName = strClassName.replace(/\-/g, "\\-");
    var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
    var oElement;
    for(var i=0; i<arrElements.length; i++){
        oElement = arrElements[i];      
        if(oRegExp.test(oElement.className)){
            arrReturnElements.push(oElement);
        }   
    }
    return (arrReturnElements)
}

function getDimensions(element)
{
	dimensions = Element.getDimensions(element);
	width = dimensions.width;
	height = dimensions.height;
	return [width,height];
}

function findPos(obj) {
	var curleft = 0;
	var curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) 
		{
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
	}
	return new Array(curleft,curtop);
}

function getpos(id)
{
	l = document.getElementById(id).offsetLeft;
	t = document.getElementById(id).offsetTop;
	return new Array(l,t);
}

function setLoaderSize(loaderelm,refelm)
{
	xy = getDimensions(refelm);
	w = xy[0];
	h = xy[1];
	$(loaderelm).style.height = h+'px';
	$(loaderelm).style.width = w+'px';
	lt = findPos($(refelm));
	$(loaderelm).style.left = lt[0]+'px';
	$(loaderelm).style.top = lt[1]+'px';
}

function checkUnCheck(id)
{
	if($(id).checked == true)
	{
		$(id).checked = false;
	}else{
		$(id).checked = true;
	}
}

function hidedivs(cls,selected)
{
	divs = getElementsByClassName(document, "div", cls);
	for(i=0;i<divs.length;i++)
	{
		if(selected != divs[i].id)
		{
			divs[i].style.display = 'none';
		}
	}
}

function showdiv(div)
{
	el = document.getElementById(div);
	el.style.display = 'block';
}
function hidediv(div)
{
	el = document.getElementById(div);
	el.style.display = 'none';
}
function showhidediv(id)
{
	document.getElementById(id).style.display=(document.getElementById(id).style.display!="block")? "block" : "none"
}

function switchsymbol(id,close,open,status)
{
	span = document.getElementById(id);

	if(close && open)
	{
		if(status)
		{
			if(status =='-')
			{
				span.innerHTML = close;
			}else{
				span.innerHTML = open;
			}

		}else{
			if(span.innerHTML == open)
			{
				span.innerHTML = close;
			}else{
				span.innerHTML = open;
			}
		}
	}else{
		if(status)
		{
			if(status =='-')
			{
				span.innerHTML = '[-]';
			}else{
				span.innerHTML = '[+]';
			}

		}else{
			if(span.innerHTML == '[+]')
			{
				span.innerHTML = '[-]';
			}else{
				span.innerHTML = '[+]';
			}
		}
	}

}

function switchimage(obj,img,add,ext)
{	
	if($(obj).src == img+add+ext)
	{
		$(obj).src = img+ext;
	}else{
		$(obj).src = img+add+ext;
	}
}

function switchimages(id,cls,imgoff,imgon)
{
	imgs = getElementsByClassName(document, "img", cls);
	for(i=0;i<imgs.length;i++)
	{
		if(imgs[i].id == id)
		{
			if(imgs[i].src == imgon)
			{
				imgs[i].src = imgoff;
			}else{
				imgs[i].src = imgon;
			}
			
		}else{
			imgs[i].src = imgoff;
		}
		
	}
}

function parseLinks(itemID)
{
	items = document.getElementsByClassName('navLinkSelected');
	
	for(i=0;i<items.length;i++)
	{
		items[i].className = 'navLinkNormal';
	}
	items = document.getElementsByClassName('navLinkNormal');
	for(i=0;i<items.length;i++)
	{
		if(items[i].id == itemID)
		{
			items[i].className = 'navLinkSelected';
		}
	}
}

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 showcrud()
{
	items = getElementsByClassName(document,'span','crudcontainer');
	for(i=0;i<items.length;i++)
	{
		items[i].style.display = 'inline';
	}
}

function hidecrud()
{
	items = getElementsByClassName(document,'span','crudcontainer');
	for(i=0;i<items.length;i++)
	{
		items[i].style.display = 'none';
	}
}

function showhidecrud()
{
	shc = document.getElementById('showhidecrud');
	
	if(shc.innerHTML=='uit')
	{	
		createCookie('showhidecrud','hide',7);
		shc.innerHTML = 'aan';
		hidecrud();
	}else{
		createCookie('showhidecrud','show',7);
		shc.innerHTML = 'uit';
		showcrud();
	}
}

function printbody()
{ 
	var disp_setting="toolbar=yes,location=no,directories=yes,menubar=yes,";
    disp_setting+="scrollbars=yes,width=600, height=600, left=100, top=25";
	var content_vlue = document.getElementById("contentheader").innerHTML; 
	content_vlue += document.getElementById("contentbody").innerHTML; 
  
	var docprint=window.open("","",disp_setting); 
	docprint.document.open(); 
	docprint.document.write('<html><head><title>Inel Power System</title>'); 
	docprint.document.write('<link rel="stylesheet" type="text/css" media="all" href="webroot/css/fckstyles.css" />');
	docprint.document.write('<link rel="stylesheet" type="text/css" media="all" href="webroot/css/main.css" />');
	docprint.document.write('</head><body onLoad="self.print()" style="background:white;padding:20px">');          
	docprint.document.write(content_vlue);          
	docprint.document.write('</body></html>'); 
	docprint.document.close(); 
	docprint.focus(); 
}

