// Author     : v.dobroskok

//CONFIG SCROLL BAR
var img_width_with_margin_and_padding=145;
var scroll_div_width=602;

// END CONFIG SCROLL BAR;

//CONFIG GALLERY BUTTONS
var timerlenGal = 5;
var slideAniLenGal = 300; 


var imglist = create_el_array("img_container",'img');
var div_container_width = (imglist.length-visible_img)*img_width_with_margin_and_padding;
//var scroll_div_width=dojo.byId("scroll_div").clientWidth;
var startx = dojo.byId('img_container').offsetLeft;
var startx_first = dojo.byId('scroll').offsetLeft;
var coef = div_container_width/(scroll_div_width-startx_first);

var cur_img=1;
var timergal;
var direction;
var gal_work=false;
var startTimeGal;
var scroll_obj = dojo.byId('scroll');
var obj = dojo.byId('img_container');
var img;

//-----------------------------------------------SCROLL SCROLL BAR-----------------------------------------------
dragDrop = {
	keyHTML: '<a href="#" class="keyLink"></a>',
	keySpeed: 10, // pixels per keypress event
	initialMouseX: undefined,
	initialMouseY: undefined,
	startX: undefined,
	startY: undefined,
	dXKeys: undefined,
	dYKeys: undefined,
	draggedObject: undefined,
	initElement: function (element) {
		if (typeof element == 'string')
			element = document.getElementById(element);
		element.onmousedown = dragDrop.startDragMouse;
		element.innerHTML += dragDrop.keyHTML;
		var links = element.getElementsByTagName('a');
		var lastLink = links[links.length-1];
		lastLink.relatedElement = element;
		lastLink.onclick = dragDrop.startDragKeys;
	},
	startDragMouse: function (e) {
		dragDrop.startDrag(this);
		var evt = e || window.event;
		dragDrop.initialMouseX = evt.clientX;
		dragDrop.initialMouseY = evt.clientY;
		addEventSimple(document,'mousemove',dragDrop.dragMouse);
		addEventSimple(document,'mouseup',dragDrop.releaseElement);
		return false;
	},
	startDragKeys: function () {
		dragDrop.startDrag(this.relatedElement);
		dragDrop.dXKeys = dragDrop.dYKeys = 0;
		addEventSimple(document,'keydown',dragDrop.dragKeys);
		addEventSimple(document,'keypress',dragDrop.switchKeyEvents);
		this.blur();
		return false;
	},
	startDrag: function (obj) {
		if (dragDrop.draggedObject)
			dragDrop.releaseElement();
		dragDrop.startX = obj.offsetLeft;
		dragDrop.startY = obj.offsetTop;
		startx = dojo.byId('img_container').offsetLeft;
		dragDrop.draggedObject = obj;
		obj.className += ' dragged';
	},
	dragMouse: function (e) {
		var evt = e || window.event;
		var dX = evt.clientX - dragDrop.initialMouseX;
		//var dY = evt.clientY - dragDrop.initialMouseY;
		var dY = null;
		var move=0;
		if ((startx_first<=(dragDrop.startX+dX)) && ((scroll_div_width)>=(dragDrop.startX+dX))){
			dragDrop.setPosition(dX,dY);
			move = dX*coef*(-1);
			setPos('img_container',move);
		}else{
			if (dX>0) {
				dX=scroll_div_width-dragDrop.startX;
				move = -div_container_width-startx;
			}else{
				dX=startx_first-dragDrop.startX;
				move = startx*(-1);
			}
			dragDrop.setPosition(dX,dY);
			setPos('img_container',move);
		}
		return false;
	},
	dragKeys: function(e) {
		var evt = e || window.event;
		var key = evt.keyCode;
		switch (key) {
			case 37:	// left
			case 63234:
				dragDrop.dXKeys -= dragDrop.keySpeed;
				break;
			case 38:	// up
			case 63232:
				dragDrop.dYKeys -= dragDrop.keySpeed;
				break;
			case 39:	// right
			case 63235:
				dragDrop.dXKeys += dragDrop.keySpeed;
				break;
			case 40:	// down
			case 63233:
				dragDrop.dYKeys += dragDrop.keySpeed;
				break;
			case 13: 	// enter
			case 27: 	// escape
				dragDrop.releaseElement();
				return false;
			default:
				return true;
		}
		dragDrop.setPosition(dragDrop.dXKeys,dragDrop.dYKeys);
		if (evt.preventDefault)
			evt.preventDefault();
		return false;
	},
	setPosition: function (dx,dy) {
		dragDrop.draggedObject.style.left = dragDrop.startX + dx + 'px';
		dragDrop.draggedObject.style.top = dragDrop.startY + dy + 'px';
	},
	switchKeyEvents: function () {
		// for Opera and Safari 1.3
		removeEventSimple(document,'keydown',dragDrop.dragKeys);
		removeEventSimple(document,'keypress',dragDrop.switchKeyEvents);
		addEventSimple(document,'keypress',dragDrop.dragKeys);
	},
	releaseElement: function() {
		removeEventSimple(document,'mousemove',dragDrop.dragMouse);
		removeEventSimple(document,'mouseup',dragDrop.releaseElement);
		removeEventSimple(document,'keypress',dragDrop.dragKeys);
		removeEventSimple(document,'keypress',dragDrop.switchKeyEvents);
		removeEventSimple(document,'keydown',dragDrop.dragKeys);
		dragDrop.draggedObject.className = dragDrop.draggedObject.className.replace(/dragged/,'');
		dragDrop.draggedObject = null;
	}
}

function addEventSimple(obj,evt,fn) {
	if (obj.addEventListener)
		obj.addEventListener(evt,fn,false);
	else if (obj.attachEvent)
		obj.attachEvent('on'+evt,fn);
}

function removeEventSimple(obj,evt,fn) {
	if (obj.removeEventListener)
		obj.removeEventListener(evt,fn,false);
	else if (obj.detachEvent)
		obj.detachEvent('on'+evt,fn);
}

function setPos(objID,posleft) {
	var obj = dojo.byId(objID);
	obj.style.left = startx + Math.round(posleft) + 'px';
}

if (imglist.length>visible_img) {
	dragDrop.initElement('scroll');
}else{
	scroll_obj.style.left  = (scroll_div_width+startx_first)/2+"px";
}	
//-----------------------------------------------SCROLL SCROLL BAR-----------------------------------------------

//-----------------------------------------------GALLERY BUTTONS-----------------------------------------------
function GalNext() {

	direction="right";
	var left_pos_container = dojo.byId('img_container').offsetLeft;
	var left_pos_scroll = dojo.byId('scroll').offsetLeft;
	//alert(left_pos_scroll);
	cur_img = Math.abs(left_pos_container/img_width_with_margin_and_padding);
	cur_img=parseInt(cur_img)+1;
	//if ((parseInt(cur_img)<cur_img) || (cur_img==0)) {
	//	cur_img=parseInt(cur_img)+1;
	//}
	
	if ((cur_img>=(imglist.length-visible_img+1)) || (gal_work==true)) {
		return;
	}
	var stop_left = cur_img*img_width_with_margin_and_padding*(-1);
	var ostatok = (stop_left - left_pos_container)*(-1);
	var alltime = slideAniLenGal*ostatok/img_width_with_margin_and_padding;
	//alert("CUR_IMG: "+cur_img+" STOP: "+stop_left+" OST: "+ostatok+ "ALLTIME: "+alltime);
	startTimeGal=(new Date()).getTime();
	timergal = setInterval('scrollgal("'+direction+'",'+stop_left+','+alltime+','+left_pos_container+','+left_pos_scroll+');',timerlenGal);
	gal_work=true;
	cur_img++;
}

function GalPrev() {

	direction="left";
	var left_pos_container = dojo.byId('img_container').offsetLeft;
	var left_pos_scroll = dojo.byId('scroll').offsetLeft;
	cur_img = Math.abs(left_pos_container/img_width_with_margin_and_padding);
	if ((parseInt(cur_img)==0) && (cur_img>0)) {
		cur_img=0;
	}else if (parseInt(cur_img)==cur_img){
		cur_img=parseInt(cur_img)-1;
	}else{
		cur_img=parseInt(cur_img);
	}
	
	if ((cur_img<0) || (gal_work==true)) {
		return;
	}
	var stop_left = cur_img*img_width_with_margin_and_padding*(-1);
	var ostatok = (stop_left - left_pos_container)*(-1);
	var alltime = slideAniLenGal*ostatok/img_width_with_margin_and_padding*(-1);
	startTimeGal=(new Date()).getTime();
	timergal = setInterval('scrollgal("'+direction+'",'+stop_left+','+alltime+','+left_pos_container+','+left_pos_scroll+');',timerlenGal);
	gal_work=true;
	cur_img--;
}

function scrollgal(direct,stop,alltime,left_pos_container,left_pos_scroll) {
	var elapsed = (new Date()).getTime() - startTimeGal;
	var ostatok = (stop - left_pos_container)*(-1);
	if (elapsed > (alltime-timerlenGal)) {
		//END
		obj.style.left = stop + "px";
		scroll_obj.style.left = Math.abs(stop/coef) +startx_first+ "px";
		clearInterval(timergal);
		gal_work=false;
	}else{
		//WORK
		var d = Math.round(elapsed / alltime * ostatok);
		var d_scroll = ((elapsed / alltime) * (ostatok/coef));
		if (direct=="right") {
			obj.style.left = left_pos_container - d + "px";
			scroll_obj.style.left = left_pos_scroll + d_scroll + "px";
		}else if (direct=="left") {
			obj.style.left = left_pos_container - d + "px";
			scroll_obj.style.left = left_pos_scroll + d_scroll + "px";
		}
	}
}

function show_foto(f_url) {
	var gobj = dojo.byId('show_gallery');
	if (gobj) {
		if (gobj.style.visibility=="hidden") {
			gobj.style.visibility="visible";
		}
		img = new Image();
		var imgarea = dojo.byId('img_area');
		imgarea.innerHTML="<img src=\"/data/img/loading.gif\" style=\"margin: 180px 280px\" />";
		img.onload = function () { imagesLoaded(f_url); }
		img.src = f_url;
		
	}else{
		alert('Not found');
	}
}

function imagesLoaded(f_url){
	//alert("Image loaded OK");
	var imgarea = dojo.byId('img_area');
	imgarea.innerHTML='<img class="galimg" src="'+f_url+'" />';
}

function hide_gal() {
	var gobj = dojo.byId('show_gallery');
	if (gobj) {
		if (gobj.style.visibility=="visible") {
			gobj.style.visibility="hidden";
		}
	}
	img.onload=function () {};
}
//-----------------------------------------------GALLERY BUTTONS-----------------------------------------------
