// utility functions

function hasClass(ele,cls) {
	return ele.className.match(new RegExp('(\\s|^)'+cls+'(\\s|$)'));
}

function addClass(ele,cls) {
	if (!this.hasClass(ele,cls)) ele.className += " "+cls;
}

function removeClass(ele,cls) {
	if (hasClass(ele,cls)) {
    	var reg = new RegExp('(\\s|^)'+cls+'(\\s|$)');
		ele.className=ele.className.replace(reg,' ');
	}
}

function getElementsByClassName(node, searchClass, tag){
  var classElements=[];
  node = node || document;
  var pattern = new RegExp('(^|\\s)' + searchClass+ '(\\s|$)');
  var els = (!tag &&  node.all) || node.getElementsByTagName(tag|| '*');
  var elsLen = els.length;
  for(var i=0, j=0;i<els.length;i++){
    if(pattern.test(els[i].className)){
      classElements[j] = els[i];
      j++;
    }
  }
  return classElements;
}


function findPosX(obj){
    var curleft = 0;
    if(obj.offsetParent)
        while(1){
          curleft += obj.offsetLeft;
          if(!obj.offsetParent)
            break;
          obj = obj.offsetParent;
        }
    else if(obj.x)
        curleft += obj.x;
    return curleft;
}

function findPosY(obj){
    var curtop = 0;
    if(obj.offsetParent)
        while(1){
          curtop += obj.offsetTop;
          if(!obj.offsetParent)
            break;
          obj = obj.offsetParent;
        }
    else if(obj.y)
        curtop += obj.y;
    return curtop;
}


function degToRad(angle) {
	return ((angle*Math.PI) / 180);
}

function radToDeg(angle) {
	return ((angle*180) / Math.PI);
}


// @param {Number} t Time value used to compute current value.
// @param {Number} b Starting value.
// @param {Number} c Delta between start and end values.
// @param {Number} d Total length of animation.
// @return {Number} The computed value for the current animation frame.
function easeNone(t, b, c, d) {
	return c*t/d + b;
}
   
function easeIn(t, b, c, d) {
	return c*(t/=d)*t + b;
}

function easeOut(t, b, c, d) {
	return -c *(t/=d)*(t-2) + b;
}
   

