// Helper functions

function getURLParam ( name )
{
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var results = regex.exec( window.location.href );
  if( results == null )
    return "";
  else
    return results[1];
}

function addEvent( obj, type, fn )
{
	if (obj.addEventListener) {
		obj.addEventListener( type, fn, false );
	} 
	else 
	if (obj.attachEvent) {
		obj["e"+type+fn] = fn;
		obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
		obj.attachEvent( "on"+type, obj[type+fn] );
	}
}

function removeEvent( obj, type, fn )
{
	if (obj.removeEventListener) {
		obj.removeEventListener( type, fn, false );
	} else if (obj.detachEvent) {
		obj.detachEvent( "on"+type, obj[type+fn] );
		obj[type+fn] = null;
		obj["e"+type+fn] = null;
	}
}

function setClass(a,o,c1,c2)
{
	switch (a){
		case 'swap':
			o.className=!setClass('check',o,c1)?o.className.replace(c2,c1):o.className.replace(c1,c2);
			break;
		case 'add':
			if(!setClass('check',o,c1)){o.className+=o.className?' '+c1:c1;}
			break;
		case 'remove':
			var rep=o.className.match(' '+c1)?' '+c1:c1;
			o.className=o.className.replace(rep,'');
			break;
		case 'check':
			return new RegExp('\\b'+c1+'\\b').test(o.className)
			break;
	}
}

function getMouseCoords (evt)
{
	if (navigator.appName.indexOf("Microsoft")!=-1) {
		return Array (evt.clientX, evt.clientY);
	}
	else {
		return Array (evt.pageX, evt.pageY);
	}
}


function getAbsoluteCoords (obj) {
	var coords = {x: 0, y: 0 };
	while (obj) {
		// obj.currentStyle
		coords.x += obj.offsetLeft;
		coords.y += obj.offsetTop;
		obj = obj.offsetParent;
	};
	return coords;
}

function getScrollPos () {
  var scrOfX = 0, scrOfY = 0;
  if( typeof( window.pageYOffset ) == 'number' ) {
    //Netscape compliant
    scrOfY = window.pageYOffset;
    scrOfX = window.pageXOffset;
  } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
    //DOM compliant
    scrOfY = document.body.scrollTop;
    scrOfX = document.body.scrollLeft;
  } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
    //IE6 standards compliant mode
    scrOfY = document.documentElement.scrollTop;
    scrOfX = document.documentElement.scrollLeft;
  }
  return [ scrOfX, scrOfY ];
}

function getWindowDim () {
  var myWidth = 0, myHeight = 0;
  if( typeof( window.innerWidth ) == 'number' ) {
    //Non-IE
    myWidth = window.innerWidth;
    myHeight = window.innerHeight;
  } else 
	if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
    //IE 6+ in 'standards compliant mode'
    myWidth = document.documentElement.clientWidth;
    myHeight = document.documentElement.clientHeight;
  } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
    //IE 4 compatible
    myWidth = document.body.clientWidth;
    myHeight = document.body.clientHeight;
  }
  return {width: myWidth, height: myHeight };
}


function setTransparency (e, opacity) {
	if (navigator.appName.indexOf("Netscape")!=-1 && parseInt(navigator.appVersion)>=5)
	{
   	e.style.MozOpacity=opacity/100; // Mozilla, Netscape
		e.style.KhtmlOpacity=opacity/100; // Safari, Chrome, KHTML
	}
	else 
	if (navigator.appName.indexOf("Microsoft")!=-1 && parseInt(navigator.appVersion)>=4)
    e.style.filter="alpha(opacity="+opacity+")"; // IExpl.
	else
		e.style.opacity=opacity/100; // Opera, other
}

function getBorderWidth (obj, side) {
	if (obj.currentStyle["border" + side + "Style"] == "none")
		return 0;
	var n = parseInt(obj.currentStyle["border" + side + "Width"]);
	return n || 0;
}

function getIEVersion () {
	var Browser = {
	  Version: function() {
	    var version = 999; // we assume a sane browser
	    if (navigator.appVersion.indexOf("MSIE") != -1)
	      // bah, IE again, lets downgrade version number
	      version = parseFloat(navigator.appVersion.split("MSIE")[1]);
	    return version;
	  }
	}
	return Browser.Version();
}
