﻿/*************************************
	View script based on the original work by http://www.zelph.com/releases/onviewable/
*************************************/

d = document;
function z_onViewable(dtw,ctr){
	try {
		var ranIt = false;
		// Find out info about our element
		if(d.getElementById(dtw)){
			var elem = d.getElementById(dtw);
			var e = new Array(); // elem info
			e['t'] = findPosY(elem);
			e['h'] = elem.offsetHeight;
			e['b'] = e['t']  + e['h'];

			// find out about our viewport
			var v = new Array(); // viewport info
			v['t'] = z_getScroll();
			v['h'] = z_getHeight();
			v['b'] = v['t'] + v['h'];

			// if above the bottom and below the top
			if((e['b'] < v['b'] && e['t'] > v['t']) || (e['h'] > v['h'] && e['b'] > v['b'] && e['t'] < v['t'])){
				eval(ctr);
				ranIt = true;
			}
		}
		if(!ranIt) {
			setTimeout("z_onViewable('" + dtw + "', '" + z_addSlashes(ctr) + "')", 100);
		}
	}
	catch (e){
        
	}
}
// from http://www.quirksmode.org/js/findpos.html
function findPosY(obj){
	var curtop = 0;
	if (obj.offsetParent){
		while (obj.offsetParent){
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	return curtop;
}

// from http://www.quirksmode.org/viewport/compatibility.html
function z_getScroll(){ // returns how far down we are scrolled
	var pos;
	if (self.pageYOffset){ // all except Explorer
		  pos = self.pageYOffset
	} else if (document.documentElement && document.documentElement.scrollTop){	// Explorer 6 Strict Mode
		pos = document.documentElement.scrollTop
	} else if (document.body){ // other Explorers
		  pos = document.body.scrollTop
	}
	return pos
}

// from http://www.quirksmode.org/viewport/compatibility.html
function z_getHeight(){ // returns the height of the viewing area
	var h;
	if (self.innerHeight){ // all except Explorer
		h = self.innerHeight;
	} else if (document.documentElement && document.documentElement.clientHeight){	// Explorer 6 Strict Mode
		h = document.documentElement.clientHeight;
	} else if (document.body){ // other Explorers
		h = document.body.clientHeight;
	}
	return h;
}

function z_addSlashes(n){
	var p = /[']/g;
	c = n.replace(p,"\\'");
	p = /["]/g;
	c = c.replace(p,'\\"');
	return c
}