/*
 *	An image slider by Henrik Dahl, Perfica, 2009-11-06.
 *	http://www.perfica.se | henrik -(a)t- perfica.se
 *
 */

var slidePad = speed = mypic = slidebox = gtable = counter = timerId = timerIx = direction = 0;
var cursor = {x:0, y:0};
var spoint = {left: 0, right: 0};
var slide_status = false;

function strpos(strStack, strNeedle) {
	var locx = -1;
	for(var bz = 0; bz <= (strStack.length-strNeedle.length); bz++) {
    	if(strStack.substring(bz, (bz+strNeedle.length)) == strNeedle) {
			locx = bz;
			break;
		}
	}
	return locx;
}

function initVars() {

	speed = 55;
	mypic = document.getElementById('mypic');
	slidebox = document.getElementById('slidebox');
	gtable = document.getElementById('gtable');
	slidePad = document.getElementById('slidepad');

	if(navigator.appName != "Microsoft Internet Explorer") {
		slidePad.setAttribute('onMouseMove', 'slide_starter()');
		slidePad.setAttribute('onMouseOut', 'slide_stopper()');
		slidePad.setAttribute('onClick', 'henriks_click()');
	} else {
		slidePad.onclick = function() { henriks_click(); };
		slidePad.onmousemove = function() { slide_starter(); };
		slidePad.onmouseout = function() { slide_stopper(); };
	}

	slidePad.style.height = (slidebox.offsetHeight-5) + 'px';
	slidePad.style.top = slidebox.offsetTop + 'px';
	slidePad.style.width = slidebox.offsetWidth + 'px';
	slidePad.style.left = slidebox.offsetLeft + 'px';

	spoint.left = 1*(slidePad.offsetLeft+(slidePad.offsetWidth/2)-70);
	spoint.right = 1*(slidePad.offsetLeft+(slidePad.offsetWidth/2)+70);

	document.body.onmousemove = updCursor;
}

function updCursor(e) {
	e = e || window.event;
    if (e.pageX || e.pageY) {
        cursor.x = e.pageX;
        cursor.y = e.pageY;
    } else {
        var de = document.documentElement;
        var b = document.body;
        cursor.x = e.clientX + (de.scrollLeft || b.scrollLeft) - (de.clientLeft || 0);
        cursor.y = e.clientY + (de.scrollTop || b.scrollTop) - (de.clientTop || 0);
    }
}

function henriks_click(e) {
	var img = document.getElementsByTagName("img");
	for(i=0; i< img.length; ++i) {
		if(img[i].className == "slidelink") {
			var pic_left = (1*(slidebox.offsetLeft+mypic.offsetLeft+img[i].offsetLeft));
			var pic_right = (1*(slidebox.offsetLeft+mypic.offsetLeft+img[i].offsetLeft+img[i].offsetWidth));
			if(cursor.x >= pic_left && cursor.x <= pic_right) {
				if(img[i].parentNode.href && img[i].parentNode.href.length > 0) {
					slideClick(img[i].parentNode);
				}
			}
		}
	}
}


function slideClick(aObject) {
	var w = aObject.id.substring(strpos(aObject.id, "_")+1);
	var h = 1*(w.substring(strpos(w, 'x')+1))+20;
	w = 1*(w.substring(0, strpos(w, 'x')))+5;
	SqueezeBox.open(aObject.href, {handler: 'iframe', size: {x: w, y: h}});
}


function slide_starter() {
 if(cursor.x >= spoint.right || cursor.x <= spoint.left) { 
	if(!slide_status) {
		slide_status = true;
		clearTimeout(timerIx);
		clearTimeout(timerId);
		henriks_slide();
	}
 }
}


function slide_stopper() {
	if(slide_status) {
		slide_status = false;
		clearTimeout(timerId);
		clearTimeout(timerIx);
		henriks_slop();
	}
}

function haltSlide() {
	slide_status = false;
	clearTimeout(timerId);
	clearTimeout(timerIx);
}

function henriks_slide() {
	if(slide_status) {
		if(cursor.x >= spoint.right) { 
			if((mypic.offsetLeft + gtable.offsetWidth) <= slidebox.offsetWidth) { haltSlide(); return false; }
			if(speed > 0) speed = speed - 5;
			mypic.style.left = (1*(mypic.offsetLeft-2)) + 'px';
			timerId = setTimeout("henriks_slide()", speed);
			direction = 'right';
		} else if(cursor.x <= spoint.left) {
			if((mypic.offsetLeft+slidebox.offsetLeft) >= slidebox.offsetLeft) { haltSlide(); return false; }
			if(speed > 0) speed = speed - 5;
			mypic.style.left = (1*(mypic.offsetLeft+2)) + 'px';
			timerId = setTimeout("henriks_slide()", speed);
			direction = 'left';
		} else slide_stopper();
	}
}

function henriks_slop() {
	if(!slide_status) {
		if(speed < 55) {
			if(direction == "right") { 
				if((mypic.offsetLeft + gtable.offsetWidth) <= slidebox.offsetWidth) { haltSlide(); return false; }
				mypic.style.left = (1*(mypic.offsetLeft-2)) + 'px';
			} else {
				if((mypic.offsetLeft + slidebox.offsetLeft) >= slidebox.offsetLeft) { haltSlide(); return false; }
				mypic.style.left = (1*(mypic.offsetLeft+2)) + 'px';
			}
			speed = speed + 3;
			timerIx = setTimeout("henriks_slop()", speed);
		} else {
			clearTimeout(timerIx);
			speed = 55;
		}
	}
}