/* Copyright Claude Needham gxxaxx@gmail.com All rights reserved
	Please refrain from using this script without permission.
	This is how I make my living. 
	If you would like to use the script contact me. We can work something out. 
	You can get a javascript without stealing it (I'll keep the price low).
	And I can live in a house instead of a station wagon.
*/

/*************************************
*** GLOBAL FUNCTIONS *****************
*************************************/
function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}

function mouseRelativeToObject(e, DivObj) {
	if (!e) var e = window.event;
	
	var relativeX = 0;
	var relativeY = 0;

	var mousePos = mousePosition(e);
	var offsets = elementPosition(DivObj);

	relativeX = mousePos[0] - offsets[0];
	relativeY = mousePos[1] - offsets[1];
	return [relativeX, relativeY];
}

// http://www.quirksmode.org/js/events_properties.html
function mousePosition(e) {
	if (!e) var e = window.event; 	// if e exists ff, else use ie window.event var
	var posX = 0;
	var posY = 0;
	if (e.pageX || e.pageY) 	{
		posX = e.pageX;
		posY = e.pageY;
	} else if (e.clientX || e.clientY) 	{
		posX = e.clientX + document.body.scrollLeft
			+ document.documentElement.scrollLeft;
		posY = e.clientY + document.body.scrollTop
			+ document.documentElement.scrollTop;
	}
	return [posX, posY];
}

// http://www.quirksmode.org/js/findpos.html
function elementPosition(obj) {
	var curleft = 0;
	var curtop = 0;
	if (obj) {
		curleft += obj.offsetLeft;
		curtop += obj.offsetTop;
	}
	while (obj = obj.offsetParent) {
		curleft += obj.offsetLeft;
		curtop += obj.offsetTop;
	}
	return [curleft,curtop];
} 


function addEvent(object, evName, fnName, cap) {
	if (!object) {
		return;
	}
	// test for IE-ness
	if (object.attachEvent) {
		object.attachEvent("on" + evName, fnName);
	} else if (object.addEventListener) {
		object.addEventListener(evName, fnName, cap);
	}
}
function removeEvent(object, evName, fnName, cap) {
	if (!object) {
		return;
	}
	// test for IE-ness
	if (object.detachEvent) {
		object.detachEvent("on" + evName, fnName);
	} else if (object.removeEventListener) {
		object.removeEventListener(evName, fnName, cap);
	}
}
function eventTarget(e) {
	if (e.srcElement) {
		return (e.srcElement);
	} else if (e.target) {
		return (e.target);
	} else {
		return null;
	}
}

function GrabDir(instring) {
	var tmp;
	var ndx = instring.lastIndexOf("/");
	if (ndx == -1) {
		return "";
	}
	return instring.substring(0,ndx+1);
}
function GrabFile(instring) {
	var tmp;
	var ndx = instring.lastIndexOf("/");
	if (ndx == -1) {
		return instring;
	}
	return instring.substring(ndx+1);
}

function GrabFront (stag, instring) {
	if (instring == "") {
		return "";
	}
	if (stag == "") {
		return "";
	}
	var tagwhere = instring.indexOf(stag);
	if (tagwhere < 0) {
		return "";
    	}
	return instring.substring(0, tagwhere);
}
function GrabAfter (stag, instring) {
	if (instring == "") {
		return "";
	}
	if (stag == "") {
		return "";
	}
	var tagwhere = instring.indexOf(stag);
	if (tagwhere < 0) {
		return "";
    	}
	return instring.substring(tagwhere+stag.length);
}

// http://robertnyman.com/2006/04/24/get-the-rendered-style-of-an-element/
function getStyle(oElm, strCssRule){
	var strValue = "";
	if (!oElm) {
		return "";
	}
	if(document.defaultView && document.defaultView.getComputedStyle){
		strValue = document.defaultView.getComputedStyle(oElm, "").getPropertyValue(strCssRule);
	}
	else if(oElm.currentStyle){
		strCssRule = strCssRule.replace(/\-(\w)/g, function (strMatch, p1){
			return p1.toUpperCase();
		});
		strValue = oElm.currentStyle[strCssRule];
	}
	return strValue;
}

/* function getStyle2(object, styleName) {
   	if (window.getComputedStyle) {
      		return document.defaultView.getComputedStyle(object, null).getPropertyValue(styleName);
	} else if (object.currentStyle) {
		return object.currentStyle[styleName];
	}
	return null;
}
*/

function getWidth(obj)
{
	var retval;
	if (obj.currentStyle) {
		retval = obj.currentStyle["width"];
	} else if (obj.offsetWidth) {
		retval = obj.offsetWidth;
	} else if (window.getComputedStyle) {
 		retval = document.defaultView.getComputedStyle(x,"").getPropertyValue("width");
	}
	if (retval == "auto") {
		retval = obj.offsetWidth;
	}
	return retval;
}
function getHeight(obj)
{
	var retval;
	if (obj.currentStyle) {
		retval = obj.currentStyle["height"];
	} else if (obj.offsetHeight) {
		retval = obj.offsetHeight;
	} else if (window.getComputedStyle) {
 		retval = document.defaultView.getComputedStyle(x,"").getPropertyValue("height");
	}
	if (retval == "auto") {
		retval = obj.offsetHeight;
	}
	return retval;
}

function is_iphoneish() {
	if (navigator && navigator.platform && navigator.platform.match(/^(iPad|iPod|iPhone)$/)) {
		return true;
	} else {
		return false;
	}
}


