
/**
 * Slide One TBA - Photospot Viewer
 *
 * @package slideone_tba
 * @version 1.0
 * @copyright Creative Pulse 2010
 * @link http://www.creativepulse.eu/
 */

function PsViewerSlideoneTba(params) {
	for (var k in params)
		if (params.hasOwnProperty(k))
			this[k] = params[k];

	this.target_x = 0;
	this.sel = -1;

	if (this.speed <= 0)
		this.speed = 1;
	else if (this.speed > 100)
		this.speed = 100;

	var wdg_driver = document.getElementById(this.iname + "_driver");
	this.width = wdg_driver.offsetWidth;
	wdg_driver.parentNode.removeChild(wdg_driver);

	this.items_count = 0;
	for (var i = 0; ; i++) {
		var wdg = document.getElementById(this.iname + "_panel_" + i);
		if (!wdg)
			break;

		this.items_count++;

		wdg.style.width = this.width + "px";

		var wdg_button = document.getElementById(this.iname + "_button_" + i);
		wdg_button.style.cursor = "pointer";
		wdg_button.setAttribute("iname", this.iname);
		wdg_button.setAttribute("idx", i);
		wdg_button.onclick = function () { document[this.getAttribute("iname")].open(parseInt(this.getAttribute("idx"))); }
	}

	this.wdg_content = document.getElementById(this.iname + "_content");
	this.wdg_content.style.display = "block";
	this.wdg_content.style.width = this.width + "px";
	this.wdg_content.style.overflow = "hidden";

	this.position();
}

PsViewerSlideoneTba.prototype.position = function () {
	if (this.items_count > 0 && this.thumb_position != "hide") {
		var wdg_container = document.getElementById(this.iname + "_container");
		var x = 0, y = 0, obj = wdg_container;
		while (obj) {
			x += obj.offsetLeft;
			y += obj.offsetTop;
			obj = obj.offsetParent;
		}

		var wdg_buttons = document.getElementById(this.iname + "_buttons");
		wdg_buttons.style.position = "absolute";
		wdg_buttons.style.display = "block";

		var pos = this.thumb_position.split("_");

		if (pos[1] == "left")
			wdg_buttons.style.left = (x + this.thumb_offset_x) + "px";
		else
			wdg_buttons.style.left = (x + wdg_container.offsetWidth - wdg_buttons.offsetWidth - this.thumb_offset_x) + "px";

		if (pos[0] == "top")
			wdg_buttons.style.top = (y + this.thumb_offset_y) + "px";
		else
			wdg_buttons.style.top = (y + wdg_container.offsetHeight - wdg_buttons.offsetHeight - this.thumb_offset_y) + "px";

		this.open(0);
	}
}

PsViewerSlideoneTba.prototype.open = function (idx) {
	if (this.sel > -1)
		document.getElementById(this.iname + "_button_" + this.sel).className = this.class_button;

	this.last_movement = (new Date).getTime();

	this.sel = idx;
	this.target_x = this.sel * this.width;

	document.getElementById(this.iname + "_button_" + this.sel).className = this.class_button_sel;
	this.h_ani_timer();
}

PsViewerSlideoneTba.prototype.move = function (size) {
	var idx = (this.sel + size) % this.items_count;
	if (idx < 0)
		idx = this.items_count + idx;

	this.open(idx);
}

PsViewerSlideoneTba.prototype.h_ani_timer = function () {
	if (this.target_x != this.wdg_content.scrollLeft) {
		this.wdg_content.scrollLeft = this.wdg_content.scrollLeft + (this.target_x < this.wdg_content.scrollLeft ? -1 : 1) * Math.ceil(Math.abs(this.target_x - this.wdg_content.scrollLeft) * this.speed / 100);

		if (this.target_x != this.wdg_content.scrollLeft)
			setTimeout('document["' + this.iname + '"].h_ani_timer()', this.interval);
	}
}

PsViewerSlideoneTba.prototype.h_mouse_move = function () {
	this.last_movement = (new Date).getTime();
}

PsViewerSlideoneTba.prototype.h_idle_timer = function () {
	if (this.idle_secs > 0 && ((new Date).getTime() - this.last_movement) / 1000 > this.idle_secs) {
		this.last_movement = (new Date).getTime();
		this.move(1);
	}
}

function ps_viewer_slideone_tba_init() {
	for (k in document.ps_viewer_slideone_tba_conf)
		if (document.ps_viewer_slideone_tba_conf.hasOwnProperty(k)) {
		var conf = document.ps_viewer_slideone_tba_conf[k];
		conf.interval = 20;
		document[conf.iname] = new PsViewerSlideoneTba(conf);
	}

	ps_viewer_slideone_tba_mouse_moved(null);
	setInterval("ps_viewer_slideone_tba_idle_timer()", 1000);
}

if (window.addEventListener)
	window.addEventListener("load", ps_viewer_slideone_tba_init, false);
else if (window.attachEvent)
	window.attachEvent("onload", ps_viewer_slideone_tba_init);


function ps_viewer_slideone_tba_mouse_moved(e) {
	if (document["ps_viewer_slideone_tba_conf"])
		for (k in document.ps_viewer_slideone_tba_conf)
			if (document.ps_viewer_slideone_tba_conf.hasOwnProperty(k))
				document[document.ps_viewer_slideone_tba_conf[k].iname].h_mouse_move();
}

if (window.addEventListener)
	window.addEventListener("mousemove", ps_viewer_slideone_tba_mouse_moved, false);
else
	document.attachEvent("onmousemove", ps_viewer_slideone_tba_mouse_moved);


function ps_viewer_slideone_tba_idle_timer() {
	for (k in document.ps_viewer_slideone_tba_conf)
		if (document.ps_viewer_slideone_tba_conf.hasOwnProperty(k))
			document[document.ps_viewer_slideone_tba_conf[k].iname].h_idle_timer();
}


function ps_viewer_slideone_tba_position() {
	if (document["ps_viewer_slideone_tba_conf"])
		for (k in document.ps_viewer_slideone_tba_conf)
			if (document.ps_viewer_slideone_tba_conf.hasOwnProperty(k))
				document[document.ps_viewer_slideone_tba_conf[k].iname].position();
}

if (window.addEventListener)
	window.addEventListener("resize", ps_viewer_slideone_tba_position, false);
else if (window.attachEvent)
	window.attachEvent("onresize", ps_viewer_slideone_tba_position);


