function fetchElement(element_id)
{
 if(element_id!=null)
 {
  return document.getElementById(element_id);
 }
 return null;
}

function isChildElement(parent,child)
{
 if(parent!=child)
 {
  if(child != null) 
  {			
	 while(child.parentNode) 
   {
	  if((child=child.parentNode)==parent) 
    {
	 	 return true;
	  }
	 }
  }
 }
 return false; 
}

function fixOnMouseOut(element, event, JavaScript_code) 
{
 var current_mouse_target = null;
 if(event.toElement) 
 {				
	current_mouse_target = event.toElement;
 } 
 else if(event.relatedTarget) 
 {				
	current_mouse_target = event.relatedTarget;
 }
 if(!isChildElement(element,current_mouse_target)) 
 {
	eval(JavaScript_code);
 }
}

function setClassName(element,className) 
{
 if(element!=null)
 {
  element.className = className;
  return true;
 }
 return false;
}

function getElementX(element) 
{ 
 if(element)
 {
  return (element.x) ? element.x : getElementPosition(element, "Left"); 
 }
 return null;
}

function getElementY(element) 
{ 
 if(element)
 {
  return (element.y) ? element.y : getElementPosition(element, "Top"); 
 }
 return null;
}

function getElementPosition(element,which) 
{
 if(element)
 {
  iPos = 0;
  while (element != null) 
  {
   iPos += element["offset" + which];
   element = element.offsetParent;
  }
  return iPos;
 }
 return null;
}

function getElementStyle(element,style_name) 
{
 if(element!=null)
 {
  return element.style[style_name];
 }
 return null;
}

function setElementStyle(element,style_name,style_value) 
{
 if(element!=null)
 {
  element.style[style_name] = style_value;
  return true;
 }
 return false;
}

function getElementHeight(element)
{
 if(element)
 {
  return element.offsetHeight;
 }
 return 0;
}

function getElementWidth(element)
{
 if(element)
 {
  return element.offsetWidth;
 }
 return 0;
}

function isElementHidden(element)
{
 if(element)
 {
  var visibility_value = getElementStyle(element,'visibility');
  var display_value = getElementStyle(element,'display');
  if(visiblity_value=='hidden'&&display_value=='none')
  {
   return true;
  }
 }
 return false;
}

function hideElement(element)
{
 if(element)
 {
  setElementStyle(element,'visibility','hidden');
  setElementStyle(element,'display','none');
  return true;
 }
 return false;
}

function showElement(element)
{
 if(element)
 {
  setElementStyle(element,'display','');
  setElementStyle(element,'visibility','visible');
  return true;
 }
 return false;
}

function getElementID(element)
{
 if(element)
 {
  return element.id;
 }
 return false;
}

//PHP Functions

function strpos(haystack,needle,offset)
{ 
 var i=(haystack+'').indexOf(needle,offset); 
 return (i===-1)?false:i;
}

function explodeArray(item,delimiter) {
tempArray=new Array(1);
var Count=0;
var tempString=new String(item);

while (tempString.indexOf(delimiter)>0) {
tempArray[Count]=tempString.substr(0,tempString.indexOf(delimiter));
tempString=tempString.substr(tempString.indexOf(delimiter)+1,tempString.length-tempString.indexOf(delimiter)+1);
Count=Count+1
}

tempArray[Count]=tempString;
return tempArray;
} 

//Prototypes

Array.prototype.remove = function(from, to) 
{
 var rest = this.slice((to || from) + 1 || this.length);
 this.length = from < 0 ? this.length + from : from;
 return this.push.apply(this, rest);
};

Array.prototype.find = function(searchStr) 
{
  var returnArray = false;
  for (i=0; i<this.length; i++) {
    if (typeof(searchStr) == 'function') {
      if (searchStr.test(this[i])) {
        if (!returnArray) { returnArray = [] }
        returnArray.push(i);
      }
    } else {
      if (this[i]===searchStr) {
        if (!returnArray) { returnArray = [] }
        returnArray.push(i);
      }
    }
  }
  return returnArray;
}
