var biggestZIndex = 99;

function getBiggestZIndex() {
	return biggestZIndex++;
}

Event.observe(document, 'mousemove', function(e) {
	currentMousePosX = Event.pointerX(e);
	currentMousePosY = Event.pointerY(e);
});

function BrowserCheck() {
	var ua = navigator.userAgent.toLowerCase();
	this.Opera = ua.indexOf("opera")!=-1;
	this.IE = (!this.Opera && (ua.indexOf("msie")!=-1));
	this.NS = (!this.Opera && (ua.indexOf("mozilla")!=-1) && (ua.indexOf("compatible")==-1));
	if (this.Opera) {
		this.what = 'Opera';
	} else if (this.IE) {
		this.what = 'IE';
	} else if (this.NS) {
		this.what = 'NS';
	}
}
is = new BrowserCheck();

window.onscroll = function() {
	lastScrollTop = getScrollTop();
}


function getScrollTop(){
	return window.pageYOffset
               || document.documentElement.scrollTop
               || document.body.scrollTop
               || 0;
}

function getPageSize(){
  	var xScroll, yScroll;

  	if (window.innerHeight && window.scrollMaxY) {	
  		xScroll = document.body.scrollWidth;
  		yScroll = window.innerHeight + window.scrollMaxY;
  	} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
  		xScroll = document.body.scrollWidth;
  		yScroll = document.body.scrollHeight;
  	} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
  		xScroll = document.body.offsetWidth;
  		yScroll = document.body.offsetHeight;
  	}

  	var windowWidth, windowHeight;

  	if (self.innerHeight) {	// all except Explorer
  		windowWidth = self.innerWidth;
  		windowHeight = self.innerHeight;
  	} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
  		windowWidth = document.documentElement.clientWidth;
  		windowHeight = document.documentElement.clientHeight;
  	} else if (document.body) { // other Explorers
  		windowWidth = document.body.clientWidth;
  		windowHeight = document.body.clientHeight;
  	}	
  	var pageHeight, pageWidth;

  	// for small pages with total height less then height of the viewport
  	if(yScroll < windowHeight){
  		pageHeight = windowHeight;
  	} else { 
  		pageHeight = yScroll;
  	}

  	// for small pages with total width less then width of the viewport
  	if(xScroll < windowWidth){	
  		pageWidth = windowWidth;
  	} else {
  		pageWidth = xScroll;
  	}

  	return {pageWidth: pageWidth ,pageHeight: pageHeight , windowWidth: windowWidth, windowHeight: windowHeight};
  }

function getWindowScroll(w) {
    var T, L, W, H;
    with (w.document) {
      if (w.document.documentElement && documentElement.scrollTop) {
        T = documentElement.scrollTop;
        L = documentElement.scrollLeft;
      } else if (w.document.body) {
        T = body.scrollTop;
        L = body.scrollLeft;
      }
      if (w.innerWidth) {
        W = w.innerWidth;
        H = w.innerHeight;
      } else if (w.document.documentElement && documentElement.clientWidth) {
        W = documentElement.clientWidth;
        H = documentElement.clientHeight;
      } else {
        W = body.offsetWidth;
        H = body.offsetHeight
      }
    }
    return { top: T, left: L, width: W, height: H };
}


function DOMInsertAfter(refChild, newNode) {
	var parent = refChild.parentNode;
	var brother = refChild.nextSibling;
	if(brother != null) {
		parent.insertBefore(newNode, brother);
	} else {
		parent.appendChild(newNode);
	}
}

function popup(url, name, height, width, scrollbars) {
	var popwin;
	var opts = "toolbar=no,status=yes,location=no,menubar=no,resizable=yes";
	opts += ",height=" + height + ",width=" + width + ",top="+(((screen.height/2)-height/2)-20)+",left=" + ((screen.width/2)-width/2) + ",scrollbars=" + scrollbars;
	popwin = window.open("", ''+name+'', opts);
	if (popwin) {
		popwin.location.replace(url);
		popwin.focus();
	}
	return popwin;
}


Element.addMethods({
	toMousePos: function(element, opts) {
	    el = $(element);
		var opts = opts || {};
		var offsetY = opts.ox || 12;
		var offsetX = opts.oy || 12;
		var y = currentMousePosY+offsetY;
		var x = currentMousePosX+offsetX;
		el.style.top = y+'px';
		el.style.left = x+'px';
	},
	toTop: function(element) {
		element.style.zIndex = getBiggestZIndex();
	}
});

