/*
 * preloads image
 */
function preloadImage(src){
    var image = new Image();
	image.src = src;
};

/*
 * returns element by it's ID
 */
function $(id){
  return document.getElementById(id);
};



var ua = navigator.userAgent.toLowerCase();
var isOpera = (ua.indexOf('opera')  > -1);
var isIE = (!isOpera && ua.indexOf('msie') > -1);
var root = (typeof document.compatMode != 'undefined')? document.documentElement : document.body;

/*
function getCenter(){
  var root = (typeof document.compatMode != 'undefined')? document.documentElement : document.body;
  return {
    x: getViewportWidth()/2 + root.scrollLeft,
    y: getViewportHeight()/2 + root.scrollTop
  };
}
*/
	 
function getDocumentHeight() {
	return Math.max(document.compatMode != 'CSS1Compat' ? document.body.scrollHeight : document.documentElement.scrollHeight, getViewportHeight());
}

function getViewportHeight() {
	return ((document.compatMode || isIE) && !isOpera) ? (document.compatMode == 'CSS1Compat') ? document.documentElement.clientHeight : document.body.clientHeight : (document.parentWindow || document.defaultView).innerHeight;
}

function getDocumentWidth() {
	return Math.max(document.compatMode != 'CSS1Compat' ? document.body.scrollWidth : document.documentElement.scrollWidth, getViewportWidth());
}

function getViewportWidth() {
	return ((document.compatMode || isIE) && !isOpera) ? (document.compatMode == 'CSS1Compat') ? document.documentElement.clientWidth : document.body.clientWidth : (document.parentWindow || document.defaultView).innerWidth;
}
