function registerNameSpace(ns){
 	var nsParts = ns.split(".");
	var root = window;
 	for(var i=0; i<nsParts.length; i++) {
  		if(typeof root[nsParts[i]] == "undefined")
   			root[nsParts[i]] = new Object();
  		root = root[nsParts[i]];
 	}
}


function $(id){
    return document.getElementById(id);
}
function newTable(){
    return document.createElement('table');
}
function newTr(){
    return document.createElement('tr');
}
function newTd(){
    return document.createElement('td');
}
function newDiv(){
    return document.createElement('div');
}
function newUl(){
    return document.createElement('ul');
}
function newLi(){
    return document.createElement('li');
}
function newImg(){
    return document.createElement('img');
}
function newIFRAME(){
    return document.createElement('iframe');
}
function newSwf(){
    return document.createElement('object');
}

var getDimensions = function(element_id){
    var element = $(element_id);
    var display = element.style.display;
    if (display != 'none' && display != null)
      return {width: element.offsetWidth, height: element.offsetHeight};

    var els = element.style;
    var originalVisibility = els.visibility;
    var originalPosition = els.position;
    var originalDisplay = els.display;
    els.visibility = 'hidden';
    els.position = 'absolute';
    els.display = 'block';
    var originalWidth = element.clientWidth;
    var originalHeight = element.clientHeight;
    els.display = originalDisplay;
    els.position = originalPosition;
    els.visibility = originalVisibility;
    return {width: originalWidth, height: originalHeight};
};
var elementHeight = function(element_id){
    return getDimensions(element_id).height;
};
var elementWidth = function(element_id){
    return getDimensions(element_id).width;
};
var addListener = function (element, type, expression, bubbling){
    bubbling = bubbling || false;
    
    if(element.attachEvent){
        element.attachEvent('on' + type, expression);
        return true;
    }
    else if(element.addEventListener){
        element.addEventListener('on' + type, expression, bubbling);
        return true;
    }
    else
        return false;
};
var bodyHeight = function(){
    return bodyDimensions().height;
};
var bodyWidth = function(){
    return bodyDimensions().width;
};
var bodyDimensions = function(){
    var _h = 0;
    var _w = 0;
    if( typeof( window.innerWidth ) == 'number' ){
        _w = window.innerWidth;
        _h = window.innerHeight;
    }
    else if(document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)){
        _w = document.documentElement.clientWidth;
        _h = document.documentElement.clientHeight;
    }
    else if(document.body && (document.body.clientWidth || document.body.clientHeight)){
        _w = document.body.clientWidth;
        _h = document.body.clientHeight;
    } 
    
    return {width:_w, height:_h};
};
getIFRAME = function (iframe_id){
    var oIframe = $(iframe_id);
    if(oIframe.contentWindow)
        return oIframe.contentWindow;
    else if(oIframe.contentDocument)
        return oIframe.contentDocument;
};
getMouseXY = function(){
    var IE = document.all?true:false
    if (!IE)
        document.captureEvents(Event.MOUSEMOVE);
    
    var tempX = 0;
    var tempY = 0;
    
    if(IE){
        tempX = event.clientX + document.body.scrollLeft
        tempY = event.clientY + document.body.scrollTop
    }else{
        tempX = e.pageX
        tempY = e.pageY
    }  
    if(tempX < 0)
        tempX = 0;
    if(tempY < 0)
        tempY = 0;
        
    return {x:tempX, y:tempY};
};
getStyle = function(element_id, style){
    return YAHOO.util.Dom.getStyle(element_id, style);
};
setStyle = function(element_id, style, value){
    YAHOO.util.Dom.setStyle(element_id, style, value);  
};
getX = function(element_id){
    var elem = $(element_id);
	var curleft = 0;
    if(elem.offsetParent)
        while(1){
          curleft += elem.offsetLeft;
          if(!elem.offsetParent)
            break;
          elem = elem.offsetParent;
        }
    else if(elem.x)
        curleft += elem.x;
    return curleft;
};
getY = function(element_id){
    var elem = $(element_id);
	var curtop = 0;
    if(elem.offsetParent)
        while(1)        {
          curtop += elem.offsetTop;
          if(!elem.offsetParent)
            break;
          elem = elem.offsetParent;
        }
    else if(elem.y)
        curtop += elem.y;
    return curtop;
};

setUnselectable = function (elm){
  if(document.getElementsByTagName) {
    if(elm && typeof(elm.tagName) != 'undefined') {
      if(elm.tagName != 'TEXTAREA' && elm.tagName != 'IFRAME') {
        if(elm.hasChildNodes()) {
          for(var i = 0; i < elm.childNodes.length; i++) {
            this.setUnselectable(elm.childNodes[i]);
          }
        }
        elm.unselectable = true;
      }
    }
  }
};
String.prototype.startsWith = function(str){    return (this.indexOf(str) === 0);}

cancelEvent = function(){
    var evt = window.event || arguments.callee.caller.arguments[0];
    var target = evt.target || evt.srcElement;
    if (evt.stopPropagation) 
        evt.stopPropagation();
    else 
        evt.cancelBubble = true;
};