/* Copyright . 2007 RedZee Search, All rights reserved.*/

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//// event handlers
function body_onmousemove(evt) {

	if (1 != _isrotating)
		return;

	var clientXPos = -1;
	if (evt) {
		clientXPos = evt.clientX;
	} else if (window.event) {
		clientXPos = window.event.clientX;
	}
	if (0 > clientXPos)
		return;
	else
		rotate(clientXPos);
}

function body_onmouseup(evt) {
	// _isrotating=0;
	// alert("boyd mouse up!");

	if (1 != _isrotating)
		return;

	var clientXPos = -1;
	if (evt) {
		clientXPos = evt.clientX;
		// alert("evt");
	} else if (window.event) {
		clientXPos = window.event.clientX;
		// alert("win.event");
	}
	if (0 > clientXPos) {
		_isrotating = 0;
		return;
	} else {
		endRotate(clientXPos);
	}
}

function getPvwImg(pvwimg) {
	if ("undefined" == typeof (pvwimg.imgdx)) {
		for (; null != pvwimg && "undefined" == typeof (pvwimg.pvwimgId);) {
			pvwimg = pvwimg.parentNode;
		}
		if (null != pvwimg)
			pvwimg = document.getElementById(pvwimg.pvwimgId);
	}
	return pvwimg;
}

function pvwimg_onclick(evt) {
	try {
		var pvwimg;
		if (evt) {
			pvwimg = evt.target;

		} else {
			pvwimg = window.event.srcElement;
		}
		if (pvwimg) {
			pvwimg = getPvwImg(pvwimg);
			nav(pvwimg.imgdx - 4);
		}

	} catch (e) {
		// alert("@debug::pvwimg_onclick():EXCEPTION!:"+e.description);
	}
}

function pvwimg_ondragstart(evt) {
	if (evt) {
		evt.cancelBubble = true;
		evt.returnValue = false;
		evt.preventDefault();
	} else {
		window.event.cancelBubble = true;
		window.event.returnValue = false;
	}
	return false;
}

function pvwimg_ondrag(evt) {
	if (evt) {
		evt.cancelBubble = true;
		evt.returnValue = false;
		evt.preventDefault();
	} else {
		window.event.cancelBubble = true;
		window.event.returnValue = false;
	}
	return false;
}

var mouseDownImage = null;

function pvwimg_onmousedown(evt) {
	var clientXPos = -1;
	if (evt) {
		mouseDownImage = evt.target;
		evt.preventDefault();

		clientXPos = evt.clientX;
	} else if (window.event) {
		clientXPos = window.event.clientX;
	}
	if (0 > clientXPos)
		return;
	else
		beginRotate(clientXPos);
}

function pvwimg_ondblclick(evt) {
	var pvwimg;
	if (evt) {
		pvwimg = evt.target;
	} else {
		pvwimg = window.event.srcElement;
	}
	if (pvwimg) {
		pvwimg = getPvwImg(pvwimg);

		// alert(pvwimg.resTargetUrl);
		// view(pvwimg);
		window.open(pvwimg.resTargetUrl);
	}
}

// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// // nav

var _scrlpos = 0;
var _scrlndx = 0;
var _isrotating = 0;
var _scrlrat = 0.05;
var _reqSearch = null;

var _isOpenedTab = 0;

var _isrttng = 0;

function rttng_on() {
	if (_isrttng == 1) {
		_isrttng = 0;
		return;
	}
	if (_isrttng == 0) {
		_isrttng = 1;
		return;
	}
}

function getRDelta(x) {
	return x - _scrlpos;
}

function beginRotate(x) {
	_scrlpos = x;
	_scrlndx = rdx;

	if (_isOpenedTab == 0) {
		_isrotating = 1;
	} else {
		_isrotating = 0;
	}
}

function rotate(x) {
	var dx = getRDelta(x);

	if (0 == dx)
		return; // dont waste time

	var dbg_nav = 0;
	var ndx = -1 * parseInt(_scrlrat * dx);
	if (ndx != (rdx - _scrlndx)) {
		dbg_nav = ndx - (rdx - _scrlndx);
		nav(dbg_nav);
	}

	if (0 < dx) {
		dx -= (-ndx * (1.0 / _scrlrat));
		for ( var i = 7; i >= 0; i--) {
			rotateLoc(_loc[i], _loc[i + 1], dx);
		}
	} else {
		dx += (ndx * (1.0 / _scrlrat));
		for ( var i = 1; i <= 8; i++) {
			rotateLoc(_loc[i], _loc[i - 1], -dx);
		}
	}
}

function rotateLoc(imglci, imglcf, dx) {
	var rloc = new Object();

	rloc.wdth = imglci.wdth + (imglcf.wdth - imglci.wdth) * (_scrlrat * dx);
	rloc.hght = imglci.hght + (imglcf.hght - imglci.hght) * (_scrlrat * dx);
	rloc.x = imglci.x + ((imglcf.x - imglci.x) * (_scrlrat * dx));
	rloc.y = imglci.y + ((imglcf.y - imglci.y) * (_scrlrat * dx));
	rloc.z = imglci.z;
	rloc.imglm = imglci.imglm;

	plcimg(rloc.imglm, rloc);
}

function endRotate(x) {
	_isrotating = 0;
	var dx = getRDelta(x);
	nav(0); // "snap back"
}

function nav(ndx) {
	rdx += ndx;
	if (schres.length <= rdx) {
		rdx = rdx - schres.length;
	} else if (0 > rdx) {
		rdx = rdx + schres.length;
	}

	hideAll();

	for ( var i = 0; i < 9; i++) {
		var imglc = _loc[i];
		var imgdx = rdx + i;

		if (schres.length <= imgdx) {
			imgdx -= (schres.length);
		}

		var imgelem = schres[imgdx];
		imgelem.imgdx = i;
		plcimg(imgelem, imglc);
		if (4 == i) {
			plcimginfo(imgelem);
		}
	}
}

function hideAll() {
	for ( var i = 0; i < 9; i++) {
		if (_loc[i].imglm) {
			if (mouseDownImage && mouseDownImage.id == _loc[i].imglm.id) {
				// _loc[i].imglm.style.visibility="hidden";
			} else {
				_loc[i].imglm.style.display = "none";
			}
			_loc[i].imglm.imgifolm.style.display = "none";
		}
	}
	document.getElementById("res_info").style.display = "none";
}

function plcimg(imgelem, imgloc) {
	// website image
	imgelem.style.width = imgloc.wdth + "px";
	imgelem.style.height = imgloc.hght + "px";
	imgelem.style.top = imgloc.y;
	imgelem.style.left = imgloc.x;
	imgelem.style.zIndex = imgloc.z;
	// imgelem.style.visibility="visible";
	imgelem.style.display = "inline";

	// website info
	imgelem.imgifolm.style.width = imgloc.wdth + "px";
	imgelem.imgifolm.style.height = "12px";
	imgelem.imgifolm.style.top = (imgloc.y + imgloc.hght) + "px";
	imgelem.imgifolm.style.left = imgloc.x + "px";
	imgelem.imgifolm.style.zIndex = imgelem.style.zIndex + 1;
	imgelem.imgifolm.style.display = "inline";

	imgloc.imglm = imgelem;
}

function plcimginfo(imglm) {
	var ifolm = document.getElementById("res_info");

//	var htmlstr = "<span style=\"font-family:Tahoma;font-size:9pt;color:#CC0000;text-decoration:underline;cursor:pointer;\" onclick=\"view(document.getElementById('" + imglm.id + "'));\">"
	var htmlstr = "<span style=\"font-family:Tahoma;font-size:9pt;color:#CC0000;text-decoration:underline;cursor:pointer;\" onclick=\"window.open('" + imglm.resTargetUrl + "');\">"
			+ imglm.resTitle
			+ "</span>"
			+ "<br><span style=\"font-family:Tahoma;font-size:9pt;color:#333333;\">"
			+ imglm.resDescr
			+ "</span>"
			+ "<br><span style=\"font-family:Tahoma;font-size:9pt;color:#999999;\">"
			+ imglm.resDspurl + "</span>";

	var sw = getScrWidth();
	var iWidth = ifolm.style.width + "";
	if ("px" == iWidth.substr(iWidth.length - 2))
		iWidth = iWidth.substr(0, iWidth.length - 2);
	iWidth = iWidth - 0;
	var iLeft = (sw / 2) - (iWidth / 2);
	iLeft += "px";

	ifolm.innerHTML = htmlstr;
	ifolm.style.left = iLeft; // 332;
	ifolm.style.top = bseline
			- parseInt(ifolm.style.height.substr(0,
					ifolm.style.height.length - 2));
	ifolm.style.zIndex = 10;
	ifolm.style.display = "inline";
}

function handle(delta) {
	if (delta < 0)
		nav(-1);
	else
		nav(1);
}

function wheel(event) {
	if (_isOpenedTab == 0) {
		var delta = 0;
		if (!event) /* For IE. */
			event = window.event;
		if (event.wheelDelta) { /* IE/Opera. */
			delta = event.wheelDelta / 120;
			if (window.opera)
				delta = -delta;
		} else if (event.detail) {
			/** Mozilla case. */
			delta = -event.detail / 3;
		}
		if (delta)
			handle(delta);
		if (event.preventDefault)
			event.preventDefault();
		event.returnValue = false;
	}
}

if (window.addEventListener)
	window.addEventListener('DOMMouseScroll', wheel, false);
window.onmousewheel = document.onmousewheel = wheel;
