// **************************************************************************
var ilimit = 8;
var imagearray = new Array();
var oldx = 0;
var oldy = 0;
var numrows = 15;
var	mp = new Array(0,0,0,0);
var IE = document.all?true:false;
var anim_direction = 1;
var targ,tsrc,imagenum,fliptimer,mevent;
var tempcounter = 0;
//
for(i=1;i<=ilimit;i++){
	m = new Image(96,96);
	m.src = "images/paper"+i+".gif";
	imagearray.push(m);
}
//
window.onload=add_behaviours_to_elements;
//
// **************************************************************************
// Functions
// **************************************************************************
//
function add_behaviours_to_elements(){
	var i,j,nc,el,el2,str,str2;
	for(i=1;i<=numrows;i++){
		el = document.getElementById("row"+i);
		nc = el.childNodes.length;
		elid = el.id;

		for(j=0;j<nc;j++){

			el2 = document.getElementById("row"+i).childNodes[j];

			str = String(el2.id);
			if ((str.substring(0,1)=="c")&&(el2.childNodes.length==0)){
				add_Event(el2, "mouseover", start_flip, true);
				add_Event(el2, "mousemove", get_mp, true);
				add_Event(el2, "mouseout", stop_flip, true);
			}

		}
		
	}
}
//
function add_Event(obj, evType, fn, useCapture){
  if (obj.addEventListener){
    obj.addEventListener(evType, fn, useCapture);
    return true;
  } else if (obj.attachEvent){
    var r = obj.attachEvent("on"+evType, fn);
    return r;
  } else {
    alert("Handler could not be attached");
  }
}
//
function start_flip(e){
	if (e.target) targ = e.target;
	else if (e.srcElement) targ = e.srcElement;
	tsrc = String(targ.src);
	imagenum = Number(tsrc.substring(tsrc.length-5,tsrc.length-4));
	tsrc = String(targ.src).substring(0,tsrc.length-5);
	fliptimer = setInterval("flip_images()",30);
	return false;
}
//
function stop_flip(){
	stopfliptimer = setTimeout("clear_flip()",400);
	return true;
}
function clear_flip(){
	//alert("stopping flip");
	window.clearTimeout(stopfliptimer);
	window.clearInterval(fliptimer);
}
//
function flip_images(){
	// calculate if mouse has been dragged far enough to increment anim
	var xm = mp[0] - oldx;
  var ym = mp[1] - oldy;
  var xd = (xm*xm);
  var yd = (ym*ym);
	var distance = xd+yd;
	//	
	if(distance>170){
		//
		imagenum += anim_direction;
		oldx = mp[0];
		oldy = mp[1];
		// 
		if(imagenum>ilimit){
			imagenum =ilimit-1;
			anim_direction = -1;
		};
		if(imagenum<1){
			imagenum=1;
			anim_direction = 1;
		}
		//
		//targ.src = tsrc+imagenum+".gif";
		targ.src = imagearray[imagenum-1].src;
	}
}
//
function get_mp(e){
	// find the scroll offsets according to browser - new IE, old IE and NS
	if (document.documentElement && document.documentElement.scrollTop){
		mp[2] = document.documentElement.scrollLeft;
		mp[3] = document.documentElement.scrollTop;
	}else if (document.body){
		mp[2] = document.body.scrollLeft;
		mp[3] = document.body.scrollTop;
	}else{
		//ns
		mp[2] = window.pageXOffset + document.body.scrollLeft; 
		mp[3] = window.pageYOffset + document.body.scrolltop; 
	}
	//
	if (IE) {
		mp[0] = event.clientX + mp[2];
		mp[1] = event.clientY + mp[3];
	} else {
		mp[0] = e.pageX;
		mp[1] = e.pageY;
	}
	// catch possible negative values in NS4
	if (mp[0] < 0){mp[0] = 0;}
  if (mp[1] < 0){mp[1] = 0;}
}
//
