 
function getElementWidth(element)
{
	if(!element)return 0;
	
	if(element.style && element.style.display == "none") return 0;
	if(element.tagName && (element.tagName).toLowerCase() == "script") return 0;
	if(element.type&&(element.type).toLowerCase() == "hidden") return 0;
	if(element.clientWidth && element.clientWidth>0)return element.clientWidth;
	if(element.offsetWidth && element.offsetWidth>0)return element.offsetWidth;
	var style = (element.style.width).replace("px","");
	if(style && style>0)return style;
	return 0;
}
function getElementHeight(element)
{
	if(!element)return 0;
	if(element.style && element.style.display == "none") return 0;
	if(element.tagName && (element.tagName).toLowerCase() == "script") return 0;
	if(element.type&&(element.type).toLowerCase == "hidden") return 0;
	if(element.clientHeight && element.clientHeight>0)return element.clientHeight;
	if(element.offsetHeight && element.offsetHeight>0)return element.offsetHeight;
	var style = (element.style.height).replace("px","");
	style = parseInt(style);
	if(style && style>0)return style;
	return 0;
}


//get positions from stylesheet
function getStyleTopPos(element)
{
	if(element.style.top)
		return (element.style.top).replace("px","");
	else
		return 0;
}
function getStyleLeftPos(element)
{
	if(element.style.left)
	{
		return (element.style.left).replace("px","");
	}
	else
		return 0;
}

//get real Left position
function getRealLeftPos(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			if(obj.tagName && (obj.tagName).toLowerCase() == "script") continue;
			if(obj.type&&(obj.type).toLowerCase() == "hidden") continue;
			curleft += obj.offsetLeft || 0;
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;

	return curleft;
}

//get real top position
function getRealTopPos(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			if(obj.tagName && (obj.tagName).toLowerCase() == "script") continue;
			if(obj.type&&(obj.type).toLowerCase() == "hidden") continue;
			curtop += obj.offsetTop || 0;
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	
	return curtop;
}

//get mouse coordinates
function getMouseXY(e)
{
  if (document.all) { // grab the x-y pos.s if browser is IE
    tempX = event.clientX + document.body.scrollLeft
    tempY = event.clientY + document.body.scrollTop
  } else {  // grab the x-y pos.s if browser is NS or Moz
    tempX = e.pageX
    tempY = e.pageY
  }  
  if (tempX < 0){tempX = 0}
  if (tempY < 0){tempY = 0}  
  var vertice = {x:tempX,y:tempY};
  return vertice;
}

//deselect the text selection
function deselect ()
{
try{
  if (document.selection)
    document.selection.empty();
  else if (window.getSelection)
    window.getSelection().removeAllRanges();
}catch(e){}
}

//create ajax object
function createXMLHttpRequest() {
//source: http://www.codepost.org/browse/snippets/59 thnx erik
  try {
    return new XMLHttpRequest();
  } catch(e) { } 


 var types = [
    'Microsoft.XMLHTTP',
    'MSXML2.XMLHTTP.5.0',
    'MSXML2.XMLHTTP.4.0',
    'MSXML2.XMLHTTP.3.0',
    'MSXML2.XMLHTTP'
   ];

  for (var i = 0; i < types.length; i++) {
    try {
      return new ActiveXObject(types[i]);
    } catch(e) {} 
  }

  return null; // XMLHttpRequest not supported
}

//do ajax post
function ActiveGridAJAXPost(url, parameters, callBackFunction) {
     var http = createXMLHttpRequest();
	 if (http.overrideMimeType) {
            http.overrideMimeType('text/xml');
        }
    http.onreadystatechange = function(){callBackFunction(http)};
    http.open('POST', url, true);
    http.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=utf-8");
    http.setRequestHeader("Content-length", parameters.length);
    http.send(parameters);
}

//calculate the height of all the children
function calculateChildrenHeights(node)
{
	var newheight = 0;
	for(var i=0;i<node.childNodes.length;i++)
	{
		var element = node.childNodes[i];
		try{
			if(element.style&&(element.style.position).toLowerCase() == "absolute") continue;
			newheight+=getElementHeight(element);
			//alert("element:" + element + "height" + getElementHeight(element));
		}catch(e){}
	}
	return newheight;
}
//calculate the height of all the elements in this nodes before te current
function calculatePreviousChildrenHeight(node)
{
	var parent = node.parentNode;
	var newheight = 0;
	for(var i=0;i<parent.childNodes.length;i++)
	{
		if(node==parent.childNodes[i])
			break;
		try{
			newheight+=getElementHeight(parent.childNodes[i]);
		}catch(e){}
	}
	return newheight;
	
}
//search array for element
function findElement(array,element)
{
	for(var i=0;i<array.length;i++)
	{
		if(array[i] == element)
		{
			return i;
		}
	}
	return -1;
}
//stop Event from bubbling
function stopEvent(event)
{
	if(!event)event=window.event;
	if (event.preventDefault)
	{
    	event.preventDefault();
    	event.stopPropagation();
  	} else {
   		event.returnValue = false;
    	event.cancelBubble = true;
	}
}
//fire event on element
function fireEvent(node,event)
{
	if(document.createEvent)
	{
		var evt = document.createEvent("HTMLEvents");
		evt.initEvent(event,true,true);
		node.dispatchEvent(evt);
	}else{
		node.fireEvent('on'+event);
	}
}
//attach event to element
function addEvent(obj,event,func)
{
   try{  obj.addEventListener(event,func,false);  }catch(e){}  
   try{  obj.attachEvent('on'+event,func);        }catch(e){}  
}

//remove an event
function removeEvent(obj,event,func)
{  
   try{  obj.removeEventListener(event,func,false);  }catch(e){}  
   try{  obj.detachEvent('on'+event,func);        }catch(e){}  
}

//focus without crashing IE6
function safeFocus(node)
{
	if(node && node.focus && !node.hasFocus)
	{
		addEvent(node,"focus",function(){node.hasFocus = true;});
		setTimeout(
					function()
					{
						try{
							node.focus();
							safeFocus(node);
							node.select();
						}catch(e){}
					}
					,10);
	}
}


//unescape special html chars
function getChars()
{
	var chars = [
					{charIn:"&amp;"   	,charOut:"%26"}, 
					{charIn:"&lt;"    	,charOut:"%3C"}, 
					{charIn:"&gt;"    	,charOut:"%3E"}, 
					{charIn:"&quot;"  	,charOut:"%22"}, 
					{charIn:"&nbsp;"  	,charOut:"%A0"},
					{charIn:"&tilde;" 	,charOut:"%98"},
					{charIn:"&euro;"  	,charOut:"%80"},
					{charIn:"&circ;"  	,charOut:"%88"},
					{charIn:"&not;"   	,charOut:"%AC"},
					{charIn:"&times;"	,charOut:"%D7"},
					{charIn:"&Oslash;"	,charOut:"%D8"}/*,
					{charIn:"&Ugrave;"	,charOut:"%D9"},
					{charIn:"&Uacute;"	,charOut:"%DA"},
					{charIn:"&Ucirc;"	,charOut:"%DB"},
					{charIn:"&Uml;"		,charOut:"%DC"},
					{charIn:"&Yacute;"	,charOut:"%DD"},
					{charIn:"&THORN;"	,charOut:"%DE"},
					{charIn:"&szlig;"	,charOut:"%DF"},
					{charIn:"&agrave;"	,charOut:"%E0"},
					{charIn:"&aacute;"	,charOut:"%E1"},
					{charIn:"&acirc;"	,charOut:"%E2"},
					{charIn:"&atilde;"	,charOut:"%E3"},
					{charIn:"&auml;"	,charOut:"%E4"},
					{charIn:"&aring;"	,charOut:"%E5"},
					{charIn:"&aelig;"	,charOut:"%E6"},
					{charIn:"&ccedil;"	,charOut:"%E7"},
					{charIn:"&egrave;"	,charOut:"%E8"},
					{charIn:"&eacute;"	,charOut:"%E9"},
					{charIn:"&ecirc;"	,charOut:"%EA"},
					{charIn:"&euml;"	,charOut:"%EB"},
					{charIn:"&igrave;"	,charOut:"%EC"},
					{charIn:"&iacute;"	,charOut:"%ED"},
					{charIn:"&icirc;"	,charOut:"%EE"},
					{charIn:"&iuml;"	,charOut:"%EF"},
					{charIn:"&eth;"		,charOut:"%F0"},
					{charIn:"&ntilde;"	,charOut:"%F1"},
					{charIn:"&ograve;"	,charOut:"%F2"},
					{charIn:"&oacute;"	,charOut:"%F3"},
					{charIn:"&ocirc;"	,charOut:"%F4"},
					{charIn:"&otilde;"	,charOut:"%F5"},
					{charIn:"&ouml;"	,charOut:"%F6"},
					{charIn:"&divide;"	,charOut:"%F7"},
					{charIn:"&oslash;"	,charOut:"%F8"},
					{charIn:"&ugrave;"	,charOut:"%F9"},
					{charIn:"&uacute;"	,charOut:"%FA"},
					{charIn:"&ucirc;"	,charOut:"%FB"},
					{charIn:"&uuml;"	,charOut:"%FC"},
					{charIn:"&yacute;"	,charOut:"%FD"},
					{charIn:"&thorn;"	,charOut:"%FE"},
					{charIn:"&yuml;"	,charOut:"%FF"}	*/	
				];
				return chars;
}


function unescapeHTMLSpecialChars(input)
{
	var chars = getChars();
	for(var i=0;i<chars.length;i++)
	{
		var item  = chars[i];		
		input = input.replace(item.charIn,unescape(item.charOut));
	}
	return input;
}
function escapeHTMLSpecialChars(input)
{
	var chars = getChars();
	for(var i=0;i<chars.length;i++)
	{
		var item  = chars[i];		
		input = input.replace(unescape(item.charOut),item.charIn);
	}
	return input;
}
function cleanDocument(node)
{
	if(node.nodeName.toLowerCase() == "script")
	{
		node.parentNode.removeChild(node);
		return;
	}
	try{
		node.removeAttribute("onclick");
		node.removeAttribute("onchange");
		node.removeAttribute("onblur");
		node.removeAttribute("onmouseover");
		node.removeAttribute("onmousemove");
		node.removeAttribute("onmousedown");
		node.removeAttribute("onmouseup");
		node.removeAttribute("onmouseout");
		node.removeAttribute("onkeypress");
		node.removeAttribute("href");
	}catch(e){}
	if(node.hasChildNodes())
	{
		for(var i = 0;i<node.childNodes.length;i++)
		{
			cleanDocument(node.childNodes[i]);
		}
	}
}

function closeAgPopup()
{
		document.getElementById('agPopupContainer').style.visibility='hidden';
		document.getElementById('agPopup').innerHTML='';
		closePopupFlag = false;
}


//cookies
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);
}




