


/***
* getOffsetLeft and getOffsetTop use element's parentOffset to calculate the
* absolute position. If the element is absolutely positioned, the "left" style is used
***/
function getOffsetLeft(p) {
	return p.offsetParent != null ? getInt(p.offsetLeft) + getOffsetLeft(p.offsetParent)
		: ((new RegExp("^(absolute)$","i")).test(getStyleByObj(p, "position")) ? getInt(p.offsetLeft) : getInt(getStyleByObj(p, "left")));
}
function getOffsetTop(p) {
	return p.offsetParent != null ?	getInt(p.offsetTop) + getOffsetTop(p.offsetParent)
		: ((new RegExp("^(absolute)$","i")).test(getStyleByObj(p, "position")) ? getInt(p.offsetTop) : getInt(getStyleByObj(p, "top")));
}

// Used in getEventX and getEventY
function getEventTarget(e) {
	var obj = e.srcElement ? e.srcElement : e.target;
	return obj;
}

function showObject(obj, useiframehelper) {
	if (useiframehelper == null) useiframehelper = true;
	if (typeof(obj) == "string") obj = $(obj);
	if (obj) {
		if (getStyleByObj(obj, "display") == "none") {
			obj.displayattribute = "display";
		} else if (getStyleByObj(obj, "visibility") == "hidden") {
			obj.displayattribute = "visibility";
		}
		
		switch (obj.displayattribute) {
			case "visibility":	obj.style.visibility = "visible";
								break;
			
			case "display":		obj.style.display = "block";
								break;
		}
		
		if (useiframehelper) if ((new RegExp("^(absolute)$","i")).test(getStyleByObj(obj, "position"))) showIFrameHelper(obj);
	}
}

function hideObject(obj, displayattribute) {
	if (typeof(obj) == "string") obj = $(obj);
	if (obj) {
		hideIFrameHelper(obj);
		if (displayattribute == null) displayattribute = obj.displayattribute ? obj.displayattribute : (new RegExp("^(absolute)$","i")).test(getStyleByObj(obj, "position")) ? "visibility" : "display";
		switch (displayattribute) {
			case "visibility":	obj.style.visibility = "hidden";
								break;
			case "display":
			default:			obj.style.visibility = "";
								obj.style.display = "none";
								break;
		}
	}
}

// used in showObject (not sure if it's needed)
function showIFrameHelper(obj, stoptrying) {
	var defaultZIndex = 100;
	if (!obj.parentNode && !stoptrying) {
		document.tempobj = obj;
		eval("document.iframehelper_" + obj.uniqueID + " = document.tempobj");
		window.setTimeout("showIFrameHelper(document.iframehelper_" + obj.uniqueID + ", true", 1);
	} else if (obj.parentNode) {
		if (gBrowserType()=='IE' && gOS()=='WIN' && gBrowserVersion() > 5) {
			var IFRAME_ID = 'iframehelper_' + obj.uniqueID;
			if (!$(IFRAME_ID)) {
				var newiframe = document.createElement('iframe');
				newiframe.setAttribute("id", IFRAME_ID);
				newiframe.style.position = "absolute";
				newiframe.style.visibility = "hidden";
				newiframe.style.border = 0;
				obj.parentNode.appendChild(newiframe);
			}
			//if (getStyleByObj(obj, "zIndex") == "") obj.style.zIndex = defaultZIndex;
			var iframe = $(IFRAME_ID);
			iframe.width = obj.offsetWidth;
			iframe.height = obj.offsetHeight;
			iframe.style.left = obj.offsetLeft;
			iframe.style.top = obj.offsetTop;
			iframe.style.zIndex = getStyleByObj(obj, "zIndex") - 1;
			iframe.frameBorder = 0;
			iframe.style.border = "none";
			iframe.style.visibility = "visible";
			obj.iframehelper = iframe;
			document.tempobj = obj;
			eval("document.iframehelper_" + obj.uniqueID + " = document.tempobj");
			eval("obj.iframehelperupdatefn = function(e){updateIFrameHelper(document.iframehelper_" + obj.uniqueID + ");}");
			addEvent(document, "mousemove", obj.iframehelperupdatefn);
		}
	}
}

// used in showIFrameHelper
function updateIFrameHelper(obj) {
	obj.iframehelper.width = obj.offsetWidth;
	obj.iframehelper.height = obj.offsetHeight;
	obj.iframehelper.style.left = obj.offsetLeft;
	obj.iframehelper.style.top = obj.offsetTop;
	obj.iframehelper.style.zIndex = getStyleByObj(obj, "zIndex") - 1;
}
// Used in hideObject
function hideIFrameHelper(obj) {
	if (gBrowserType()=='IE' && gOS()=='WIN' && gBrowserVersion() > 5) {
		var IFRAME_ID = 'iframehelper_' + obj.uniqueID;
		if ($(IFRAME_ID)) {
			$(IFRAME_ID).style.visibility = "hidden";
			if (obj.iframehelperupdatefn) removeEvent(document, "mousemove", obj.iframehelperupdatefn);
		}
	}
}



// used all over the place
function addEvent(obj, evtName, fn) {
	try{removeEvent(obj, evtName, fn)}catch(e){}
	if (obj.addEventListener) {
		obj.addEventListener(evtName, fn, false);
	} else if (obj.attachEvent) {
		obj.attachEvent('on' + evtName, fn);
	} else {
		obj['on' + evtName] = fn;
	}
}
						
function removeEvent(obj, evtName, fn) {
	try {
		if (obj.removeEventListener) {
			obj.removeEventListener(evtName, fn, false);
		} else if (obj.detachEvent) {
			obj.detachEvent('on' + evtName, fn);
		} else {
			obj['on' + evtName] = null;
		}
	} catch(e){}
}


// used in several functions in admintools.js
function getEventX(e) {
	if (gBrowserType() == 'NS' && !gIsSafari)
		var x = e.pageX;
	else if (gOS() == "MAC")
		var x = event.clientX;
	else
		var x = event ? event.x : e.x;
	
	if (e) {
		var node = getEventTarget(e);
		if (node.ownerDocument) {
			var pframe = node.ownerDocument.parentWindow ? node.ownerDocument.parentWindow : node.ownerDocument.defaultView;
			while ((pframe) && (pframe.frameElement)) {
				x += getOffsetLeft(pframe.frameElement);
				pframe = pframe.parent;
			}
		}
	}
	return x;
}

function getEventY(e) {
	if (gBrowserType() == 'NS' && !gIsSafari)
		var y = e.pageY;
	else if (gOS() == "MAC")
		var y = event.clientY;
	else
		var y = event ? event.y : e.y;
	
	if (e) {
		var node = getEventTarget(e);
		if (node.ownerDocument) {
			var pframe = node.ownerDocument.parentWindow ? node.ownerDocument.parentWindow : node.ownerDocument.defaultView;
			if (pframe) {
				while (pframe.frameElement) {
					y += getOffsetTop(pframe.frameElement);
					pframe = pframe.parent;
				}
			}
		}
	}
	return y;
}

// Used several places in admintools.js
function getInt(i) {
	if (gIsSafari)
		return i.toString().replace((new RegExp("\\D+")),"").valueOf();
	else if ((new RegExp("\\d")).test(i))
		return parseInt(i);
	else
		return 0;
}

//get the value of a parameters from the query string, general purpose AShay 9/10/2007
function getQueryParam(name)
{
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var tmpURL = window.location.href;
  var results = regex.exec( tmpURL );
  if( results == null ){
    return "";}
  else{
    return results[1];}
}

//for results paging
function populateDropdowns(form, currentperpage, currentpage, totalresults, ppfrom, ppstep, ppto, pplist) 
{
  var lst2 = form.pg;
  if (lst2 != null){
      for (i=lst2.length; i>=1; i--) 
      {
        lst2.options[i] = null;
      }
      lst2.options.length = 1;
      index = 2;
      pages = totalresults / currentperpage -1;
      for (i=0; i<pages; i++) 
        {
            var opt = document.createElement('option');
            opt.value = index;
            opt.text  = index;
            lst2.options[index-1] = opt;
            if ((currentpage > 0) && (index == currentpage))
            {
                lst2.options[index-1].selected = true;
            }
            index = index + 1;
         }
    }
  var lst = form.pp;
  if (lst != null){    
      if(ppfrom!='' &&  ppstep!='' && ppstep!=''){
          var val;
          var index, i;
          i=0;
          for (val=ppfrom; val<=ppto; val=val+ppstep) 
          {
              var opt = document.createElement('option');
              opt.value = val;
              opt.text  = val;
              lst.options[i] = opt;
              if (val == currentperpage)
              {
                lst.options[i].selected = true;
              }
              i++;
          }
      }else{
          var pparray = pplist.split('|');
          var num= pparray.length;
          var i;
          var val;
          for (i=0; i<num; i++) 
          {
              var opt = document.createElement('option');
              if (pparray[i] =='All'){
                val=totalresults;
              }
              else{
                val=pparray[i];
              }
              opt.value = val;
              opt.text  = pparray[i];
              lst.options[i] = opt;
              if (val == currentperpage)
              lst.options[i].selected = true;
            }
      }
  }
}

//using display, show if hidden, hide if shown
function showHideDisplay(obj) {
	if (typeof(obj) == "string") obj = $(obj);
	if (obj) 
	{
	  if (getStyleByObj(obj, "display") == "none") 
	  {
	       obj.style.display = "block";
	  } else if (getStyleByObj(obj, "display") == "block") 
	  {
	       obj.style.display = "none";
	  }
		
	}
}
