/*
* Some handy functions
* Ryan Lord 2008
*/

function addSimpleEventListener(el,event,func)
{
	if (el.addEventListener) { el.addEventListener(event, func, false); }
	else if (el.attachEvent) { el.attachEvent('on'+event, func); }
}

function removeSimpleEventListener(el,event,func)
{
	if (el.addEventListener) { el.removeEventListener(event, func, false); }
	else if (el.attachEvent) { el.detachEvent('on'+event, func); }
}

function onLoad(func)
{
	addSimpleEventListener(window,'load',func); //IE7 doesn't support the correct DOMContentLoaded event...no suprise there!
	if (window.addEventListener) { window.addEventListener("DOMContentLoaded", func, false); }
}

function objPos(obj)
{
	
	var left = 0;
	var top = 0;
	if ( obj.offsetParent )
	{
		do
		{
			left += obj.offsetLeft;
			top += obj.offsetTop;

			obj = obj.offsetParent;
		} while ( obj );
	}
	return [left,top];
}

String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g,"");
}
String.prototype.ltrim = function() {
	return this.replace(/^\s+/,"");
}
String.prototype.rtrim = function() {
	return this.replace(/\s+$/,"");
}

document.getElementsByClassName = function(clsName){
    var retVal = [];
    var elements = document.getElementsByTagName("*");
    for(var i = 0;i < elements.length;i++){
        if(elements[i].className.indexOf(" ") >= 0){
            var classes = elements[i].className.split(" ");
            for(var j = 0;j < classes.length;j++){
                if(classes[j] == clsName) {
                    retVal.push(elements[i]);
		}
            }
        }
        else if(elements[i].className == clsName) {
            retVal.push(elements[i]);
	}
    }
    return retVal;
}

function hasClassName(el,c)
{
  c=c.replace(/\-/g,'\\-');
  return (new RegExp('(^|\\s)'+c+'(\\s|$)')).test(el.className);
}
function addClassName(el,c)
{
  if(hasClassName(el,c)) { return; }
  el.className=((el.className||'')+' '+c).replace(/^\s*|\s*$/g,'');
}
function removeClassName(el,c)
{
  var re=new RegExp('\\s*'+c.replace(/\-/g,'\\-')+'\\s*');
 el.className=el.className.replace(re,' ').replace(/^\s*|\s*$/g,'');
}
function replaceClassName(el,oldC,newC) { removeClassName(el,oldC); addClassName(el,newC); }

function scrollToElement(el)
{
	var pos = objPos(el);
	/*
	if ( document.documentElement ) document.documentElement.scrollTop = pos[1];
	else document.body.scrollTop = pos[1];
	*/
	window.scrollTo(pos[0],pos[1]);
}

function removeElement(el)
{
	try
	{
		if ( typeof el == 'string' ) el = document.getElementById(el);
		return el.parentNode.removeChild(el);
	}
	catch(e) { return false; }	
}

function setOpacity(el,opacity)
{
	try
	{
		el.style.opacity = opacity;
		el.style.filter = 'alpha(opacity=' + opacity*100 + ')';
	}
	catch(err) {};
}

function isValidEmail(email)
{
	return email.search(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i) > -1;
}

function mysqlDatetimeToDate(timestamp) {
	//YYYY-MM-DD HH:MM:SS
	var regex=/^([0-9]{2,4})-([0-1][0-9])-([0-3][0-9]) (?:([0-2][0-9]):([0-5][0-9]):([0-5][0-9]))?$/;
	var parts=timestamp.replace(regex,"$1 $2 $3 $4 $5 $6").split(' ');
	return new Date(parts[0],parts[1]-1,parts[2],parts[3],parts[4],parts[5]);
}

function fetchWindowDims()
{
	var w,h,scrollTop,scrollLeft;
	
	if( typeof( window.innerWidth ) == 'number' ) {
	    //Non-IE
	    w = window.innerWidth;
	    h = window.innerHeight;
	  } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
	    //IE 6+ in 'standards compliant mode'
	    w = document.documentElement.clientWidth;
	    h = document.documentElement.clientHeight;
	  } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
	    //IE 4 compatible
	    w = document.body.clientWidth;
	    h = document.body.clientHeight;
	  }
	  
	scrollLeft = document.body.scrollLeft ? document.body.scrollLeft : document.documentElement.scrollLeft;
	scrollTop = document.body.scrollTop ? document.body.scrollTop : document.documentElement.scrollTop;
	
	return {'width':w,'height':h,'scrollTop':scrollTop,'scrollLeft':scrollLeft};
}

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);
}

function getNextHighestZindex(obj){  
  var highestIndex = 0;  
  var currentIndex = 0;  
  var elArray = Array();  
  if(obj){ elArray = obj.getElementsByTagName('*'); }else{ elArray = document.getElementsByTagName('*'); }  
  for(var i=0; i < elArray.length; i++){  
     if (elArray[i].currentStyle){  
        currentIndex = parseFloat(elArray[i].currentStyle['zIndex']);  
     }else if(window.getComputedStyle){  
        currentIndex = parseFloat(document.defaultView.getComputedStyle(elArray[i],null).getPropertyValue('z-index'));  
     }  
     if(!isNaN(currentIndex) && currentIndex > highestIndex){ highestIndex = currentIndex; }  
  }  
  return(highestIndex+1);  
}

var _mouseCoords={x:0,y:0};
function getMouseCoords()
{
	return _mouseCoords;
}
function setMouseCoords(ev)
{
	try
	{
		if ( !ev && document.all?true:false )
			ev = window.event;
		
		if(ev.pageX || ev.pageY) 
			_mouseCoords = {x:ev.pageX, y:ev.pageY}; 
		else
			_mouseCoords = { 
				x:ev.clientX + document.body.scrollLeft - document.body.clientLeft, 
				y:ev.clientY + document.body.scrollTop  - document.body.clientTop 
			};
		
		return true;
	}
	catch (e) { /*alert(e);*/ }
}

document.onmousemove = setMouseCoords;




String.prototype.chunk = function(n) {
if (typeof n=='undefined') n=2;
return this.match(RegExp('.{1,'+n+'}','g'));
};

String.prototype.pad = function(l, s, t){
    return s || (s = " "), (l -= this.length) > 0 ? (s = new Array(Math.ceil(l / s.length)
        + 1).join(s)).substr(0, t = !t ? l : t == 1 ? 0 : Math.ceil(l / 2))
        + this + s.substr(0, l - t) : this;
};

