/*Header***********************************************
PEN Site Builder
Aids in building dom objects and other generic web site functions

Updated Jan 04 2011
***********************************************Header*/

/*Function***********************************************
buildElement
Parameters:
eleName: 		String name of element ("div")
parentEle: 		Element that will be used as parent. 
attribString:	A string of attributes and values to be added. 
				Format: "class:value;id:value;useToolTip:function"
Returns:		New element.
***********************************************Function*/
function buildElement(eleName,parentEle,attribString)
{
	//Create the element
	var tag=document.createElement(eleName);
	//Add attributes
	if (attribString!=null && attribString!=undefined)
	{
		var strAr=attribString.split(";");
		for (var i=0;i<strAr.length;i++)
		{
			var attribStr=strAr[i].split(",");
			if (attribStr.length==2)
			{
				tag.setAttribute(attribStr[0],attribStr[1]);
			}
		}
	}
	
	//Add to parent
	if (parentEle!=null && parentEle!=undefined)
	{
		parentEle.appendChild(tag);
	}
	
	return tag;
}

/*Function***********************************************
urlExists
Parameters:
url:		url to check
Returns: 	boolean
***********************************************Function*/
function urlExists(url)
{
  var http = new XMLHttpRequest();
  http.open('HEAD', url, false);
  http.send();
  return http.status!=404;
}


/*Function***********************************************
getTextNode
Returns the text node from an XML tag.
***********************************************Function*/
function getTextNode(tag)
{
	if (tag!=null && tag!=undefined)
	{
		for (var i=0;i<tag.childNodes.length;i++)
		{
			var data=tag.childNodes[i].nodeValue;
			if (data!=null)
			{
				return data;
			}
		}
	}
	return "";
}

function deleteAllElements(parent)
{
	//d.removeChild(olddiv);
	for (var i=(parent.children.length-1);i>=0;i--)
	{
		//alert(parent.children[i]);
		if (parent.children[i]!=undefined)
		{
			parent.removeChild(parent.children[i]);
		}
	}
}

/*****************************
Calculates the position of the element in absolute values. 
!!!This needs to have the added ability to take into account the 
scrolling which look like it will be a pain in the ass. 
*****************************/
function getAbsolutePosition(ele)
{
	var posX=0;
	var posY=0;
	while (ele.offsetParent!=null)
	{
		//alert(ele.scrollTop);
		posX+=ele.offsetTop;
		posY+=ele.offsetLeft;
		ele=ele.offsetParent;
	}
	return [posX,posY];
}
function getOffsetScroll(ele)
{
	//Get the page scroll values. 
	//alert(window.pageYOffset);
	//alert(navigator.appName);
	//alert(document.documentElement.scrollTop);
	
	//Get the scrolling for the browser. 
	var browserX=0;
	var browserY=0;
	
	switch (navigator.appName)
	{
		case "Microsoft Internet Explorer":
		{
			browserX+=document.documentElement.scrollTop;
			browserY+=document.documentElement.scrollLeft;
			break;
		}
		case "Netscape":
		{
			browserY+=window.pageXOffset
			browserX+=window.pageYOffset
			break;
		}
		default:
		{
			browserX+=document.body.scrollTop;
			browserY+=document.body.scrollLeft;
			break;
		}
	}
	
	var scrollX=0;
	var scrollY=0;
	while (ele.parentNode!=null)
	{
		//alert(ele.scrollTop);
		scrollX+=ele.scrollTop;
		scrollY+=ele.scrollLeft;
		ele=ele.parentNode;
	}
	return [scrollX-browserX,scrollY-browserY];
}


/*********************************
Used to locate the toolTip on screen. 
*********************************/
function Locate(e)
{
	var posx=0,posy=0;
	if(e==null) e=window.event;
	if(e.pageX || e.pageY)
	{
		posx=e.pageX; 
		posy=e.pageY;
	}
	else if(e.clientX || e.clientY)
	{
		if(document.documentElement.scrollTop)
		{
			posx=e.clientX+document.documentElement.scrollLeft;
			posy=e.clientY+document.documentElement.scrollTop;
		}else
		{
			posx=e.clientX+document.body.scrollLeft;
			posy=e.clientY+document.body.scrollTop;
		}
	}
	document.getElementById("mapToolTip").style.top=(posy+10)+"px";
	document.getElementById("mapToolTip").style.left=(posx+10)+"px";
}

/********************************
	Sets the opacity of elements.  
	opacity value needs to be passed as a string. "0.90"
********************************/
function setOpacity(el,opacity)
{
	el.style.filter="alpha(opacity:"+(parseFloat(opacity)*100)+")";
	el.style.KHTMLOpacity=opacity;
	el.style.MozOpacity=opacity;
	el.style.opacity=opacity;
}


























