
function getElementPos(obj) {
    var curleft = 0;
      var curtop = 0;
      if (obj.offsetParent) {
            do {
                  curleft += obj.offsetLeft;
                  curtop += obj.offsetTop;
            } while (obj = obj.offsetParent);
      }
      return [curleft, curtop];
}


var allImgs = new Array();
var allImgsNum = 0;
var precacherStarted = false;
var precacherDone = false;
var precacherImgLoaded = 0;
var precacherImgTotal = 0;
var precacherTimer = null;
var precacherFunction = null;

function runPrecacher() {

	if (precacherDone == true) {
		clearTimeout(precacherTimer);
		return;
	}

	precacherImgLoaded = 0;
	for (var i=0; i<allImgsNum; i++) {
		if (allImgs[i].complete) {
			precacherImgLoaded++;
			if (precacherImgLoaded >= precacherImgTotal) {
				clearTimeout(precacherTimer);
				precacherFunction();
				precacherDone = true;
				return;
			}
		}
	}

	precacherTimer = setTimeout('runPrecacher()',300);
}

function initPrecacher(fn, limit) {
	precacherImgTotal = limit;
	precacherFunction = fn;
}

function preCacheImage(src) {
	allImgs[allImgsNum] = new Image();
	allImgs[allImgsNum].src = src;
	allImgsNum++;
	
	precacherTimer = setTimeout('runPrecacher()',300);	
	precacherStarted = true;
}

