// Author     : v.dobroskok
 var news_visible = 6;
 var div_height=59;
 var timerlenGal = 5;
 var slideAniLenGal = 300;
 
 var count_mainnews_divs=0;
 var mouse_b = 0;
 var newslist_div;
 var starty_first;
 
 var gal_work=false;
 var scroll_div_height=282;
 var div_container_height;
 var coef;
 var obj;
 var scroll_obj;
 
 function create_div_array() {
	var div=document.getElementById("news_block_list");
	newslist_div=document.getElementById("main_news_list");
	var divs = div.getElementsByTagName("a");
	for (var t=0; t<divs.length; t++){
		if (divs[t].className=="it") {
			count_mainnews_divs++;
		}
	}
        starty_first = dojo.byId('scroll').offsetTop;
        div_container_height = (count_mainnews_divs-6)*div_height;
        coef = div_container_height/(scroll_div_height-starty_first);
        obj = dojo.byId('main_news_list');
        scroll_obj = dojo.byId('scroll');
        dragDrop.initElement('scroll');
}
 
function mouse_up(){
	mouse_b=0;
}



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;
		starty = dojo.byId('main_news_list').offsetTop;
		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 dX = null;
		var move=0;
		if ((starty_first<=(dragDrop.startY+dY)) && ((scroll_div_height)>=(dragDrop.startY+dY))){
			dragDrop.setPosition(dX,dY);
			move = dY*coef*(-1);
			setPos('main_news_list',move);
		}else{
			if (dY>0) {
				dY=scroll_div_height-dragDrop.startY;
				move = -div_container_height-starty;
			}else{
				dY=starty_first-dragDrop.startY;
				move = starty*(-1);
			}
			dragDrop.setPosition(dX,dY);
			setPos('main_news_list',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.top = starty + Math.round(posleft) + 'px';
}



function NextNews() {

	direction="bottom";
	var left_pos_container = dojo.byId('main_news_list').offsetTop;
	var left_pos_scroll = dojo.byId('scroll').offsetTop;
	//alert(left_pos_scroll);
	cur_img = Math.abs(left_pos_container/div_height);
	cur_img=parseInt(cur_img)+1;
	
	if ((cur_img>=(count_mainnews_divs-6+1)) || (gal_work==true)) {
		return;
	}
        mouse_b=1;
	var stop_top = cur_img*div_height*(-1);
	var ostatok = (stop_top - left_pos_container)*(-1);
	var alltime = slideAniLenGal*ostatok/div_height;
	//alert("CUR_IMG: "+cur_img+" STOP: "+stop_topt+" OST: "+ostatok+ "ALLTIME: "+alltime);
	startTimeGal=(new Date()).getTime();
	timergal = setInterval('scrollgal("'+direction+'",'+stop_top+','+alltime+','+left_pos_container+','+left_pos_scroll+');',timerlenGal);
	gal_work=true;
	cur_img++;
}

function PrevNews() {

	direction="top";
	var left_pos_container = dojo.byId('main_news_list').offsetTop;
	var left_pos_scroll = dojo.byId('scroll').offsetTop;
	cur_img = Math.abs(left_pos_container/div_height);
	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;
	}
        mouse_b=1;
	var stop_top = cur_img*div_height*(-1);
	var ostatok = (stop_top - left_pos_container)*(-1);
	var alltime = slideAniLenGal*ostatok/div_height*(-1);
	startTimeGal=(new Date()).getTime();
	timergal = setInterval('scrollgal("'+direction+'",'+stop_top+','+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.top = stop + "px";
		scroll_obj.style.top = Math.abs(stop/coef) +starty_first+ "px";
		clearInterval(timergal);
		gal_work=false;
                if (mouse_b==1) {
                    if (direct=="bottom") {
                        NextNews();
                    }else if (direct=="top") {
                        PrevNews();
                    }
                }
	}else{
		//WORK
		var d = Math.round(elapsed / alltime * ostatok);
		var d_scroll = ((elapsed / alltime) * (ostatok/coef));
		if (direct=="bottom") {
			obj.style.top = left_pos_container - d + "px";
			scroll_obj.style.top = left_pos_scroll + d_scroll + "px";
		}else if (direct=="top") {
			obj.style.top = left_pos_container - d + "px";
			scroll_obj.style.top = left_pos_scroll + d_scroll + "px";
		}
	}
}


dojo.addOnLoad(create_div_array);
 
 