/* constructor Presentation */
var Presentation = function() {	

	var box = document.getElementById('presentation_box');
	
	var main = document.getElementById('presentation_main');
	var mainI = main.getElementsByTagName('a');		
	
	var nav = document.getElementById('presentation_nav');	
	var navI = nav.getElementsByTagName('li');	
	var navIC = 0;
	
	var slide = document.getElementById('presentation_slide');
	var slideI = slide.getElementsByTagName('li');
	var slideC = 0;
		
	var loadText = document.createElement('span');	
	loadText.innerHTML = 'Загрузка...';
	loadText.id = 'presentation_text';
	
	var loadGif = document.createElement('img');
	loadGif.id = 'presentation_load';
	loadGif.src = 'templates/site/images/presentation_load.gif';
					
	var stopDir = false;
	var loadComplete = false;
	
	var pclose = document.getElementById('presentation_close');
	
	var back_a = document.getElementById('presentation_back');
	var next_a = document.getElementById('presentation_next');
	var back_div = document.getElementById('presentation_back_div');
	var next_div = document.getElementById('presentation_next_div');
	
	
	var p_num = 0;
	
	$('#presentation_slide').serialScroll({items:'li',start:0,duration:1200,force:true,stop:true,lock:false,cycle:true,easing:'easeInOutExpo',constant:false});
	
	for(var i = 0; i < mainI.length; i++) {
		mainI[i].onclick = function() {
			overlay.show({opacity: '0.9', filter: 'progid:DXImageTransform.Microsoft.Alpha(opacity=90)'});
			showBox();			
			overlay.box.onclick = pclose.onclick = hideAll;
			$(document).bind('keydown', keyNav);
			
			pNavOuterNum = getNum(this);						
			p_num = parseInt(pNavOuterNum);
			
			$('#presentation_slide').trigger('goto', p_num);
						
				
			var href = window.location.href;
			var test = /#/.test(href);

			if(test) {
				window.location.href = href.substr(0, href.indexOf('#')) + '#present';
			}
			else
				window.location.href = window.location.href+'#present';
			setHref(p_num);
			setActive(1);
			return false;
							
			
		};
	}
	
	this.init = function (n) {
		overlay.show({opacity: '0.9', filter: 'progid:DXImageTransform.Microsoft.Alpha(opacity=90)'});
		showBox();			
		overlay.box.onclick = pclose.onclick = hideAll;
		$(document).bind('keydown', keyNav);
		p_num = n;
								
		if(n) 
			$('#presentation_slide').trigger('goto', n);					
		else 
			$('#presentation_slide').trigger('goto', 1);						
		setActive(1);
		return false;		
	}
	
	for(var j = 0; j < navI.length; j++) {
		navI[j].onclick = function() {
			pNavInnerNum = getNum(this);
			setActive(0);
			p_num = parseInt(pNavInnerNum);
			setHref(p_num);
			$('#presentation_slide').trigger('goto', p_num);
			setActive(1);
		};
	}
	
	back_a.onmouseover = function() {
		overA(back_div, 'left');
	};
	back_a.onmouseout = function(e) {
		var to = elemOut(e);
		if(to.id != 'presentation_back_div') {
			var h = false;
			outA(back_div, h);
		}
	};	
	next_a.onmouseover = function() {		
		overA(next_div, 'right');
	};
	next_a.onmouseout = function(e) {
		var to = elemOut(e);
		if(to.id != 'presentation_next_div') {
			var h = false;
			outA(next_div, h);
		}
	};
	back_a.onclick = back_div.onclick = function() {
		setActive(0);
		if(p_num > 0) p_num--;
		else p_num = 31;
		setHref(p_num);			
		$('#presentation_slide').trigger('prev');
		setActive(1);
		return false;
	};
	next_a.onclick = next_div.onclick = function() {
		setActive(0);
		if(p_num < 31) p_num++;
		else p_num = 0;
		setHref(p_num);
		$('#presentation_slide').trigger('next');
		setActive(1);
		return false;
	};
	
	load_gif();
	
	function setHref(p_num) {
		var href = window.location.href;
		var num = href.match(/\d{1,2}$/);
		if(num) 			
			window.location.href = href.substr(0, href.length - num.toString().length) + p_num;
		else 
			window.location.href = href + '#' + p_num;
	}
	
	function load_gif() {				
		navI[0].appendChild(loadGif);		
		slide.appendChild(loadText);				
		(function() {
			if(loadGif.complete == true) {
				navI[0].removeChild(loadGif);
				loadOne();								 
			}
			else setTimeout(arguments.callee, 10);
		})();
	}
	
	function loadOne() {
		var img = document.createElement('img');
		img.className = 'item';
		img.src = 'templates/site/images/presentation/bt2009-'+slideC+'.png';
		slideI[slideC].insertBefore(img, null);
		(function() {			
			if(img.complete == true) {				
				slideC++;
				if(slideC == 2) {
					slide.removeChild(loadText);
					removePSlideLoad(0);
					removePSlideLoad(1);
					$('#presentation_back').css({visibility: 'visible'});
					$('#presentation_next').css({visibility: 'visible'});
					$('#presentation_download').css({visibility: 'visible'});					
					loadImgs();
				}
				else loadOne();
			}
			else setTimeout(arguments.callee, 10);
		})();				
	}	
	function loadImgs() {
		if(slideC < slideI.length) {
			var imgMin = document.createElement('img');
			imgMin.className = 'item';
			imgMin.src = 'templates/site/images/presentation/nav_'+navIC+'.gif';
			navI[navIC].insertBefore(imgMin, navI[navIC].firstChild);
			setPNavLoad(navIC);
			
			if(navIC < slideC) {
				(function() {
					if(imgMin.complete == true) {
						removePNavLoad(navIC);					
						navIC++;					
						loadImgs();
					}
					else setTimeout(arguments.callee, 10);				
				})();
			}				
			else {				
				var imgBig = document.createElement('img');						
				imgBig.className = 'item';			
				imgBig.src = 'templates/site/images/presentation/bt2009-'+slideC+'.png';				
				slideI[slideC].insertBefore(imgBig, null);							
				(function() {			
					if(imgBig.complete == true) {
						(function() {
							if(imgMin.complete == true) { 
								removePNavLoad(navIC);
								removePSlideLoad(slideC)
								navIC++;
								slideC++;
								loadImgs();
							}
							else setTimeout(arguments.callee, 10);				
						})();					
					}
					else setTimeout(arguments.callee, 10);				
				})();	
			}				
		}		
	}
		
	function setPNavLoad(num) {		
		navI[num].style.visibility = 'visible';
		navI[num].appendChild(loadGif);
	}
	function removePNavLoad(num) {		
		navI[num].removeChild(loadGif);
		navI[num].getElementsByTagName('img')[0].style.visibility = 'visible';
	}
	function removePSlideLoad(num) {
		slideI[num].getElementsByTagName('img')[0].style.visibility = 'visible';
	}
	
	
	function getNum(e) {
		var n = (e.tagName == 'A') ? e.href : e.id;
		return  n.match(/\d+$/);
	}	

	function setActive(a) {
		navI[p_num].style.margin = a ? '0px' : '3px';
		navI[p_num].style.border = a ? '3px solid #7aa921' : 'none';
		if (!($.browser.msie && $.browser.version == 6)) {
			navI[p_num].getElementsByTagName('div')[0].style.background = a ? 'none' : 'url('+dir+'images/presentation_hover.png)';		
			navI[p_num].getElementsByTagName('span')[0].style.color = a ? 'black' : '#9fd43d';
		}
	}

	function showBox() {
		box.style.display = 'block';		
		var size = windowSize();
		box.style.top = parseInt(size.st+35)+'px';
		if(box.offsetWidth >= size.cw) box.style.left = 50+'px';
		else box.style.left = parseInt(size.sl+size.cw/2-box.offsetWidth/2)+'px';
		overA(back_div, false);
		overA(next_div, false);
		
	}		
	function hideBox() {
		box.style.display = 'none';		
	}	
	function hideAll() {
		overlay.hide();	
		hideBox();
		setActive(0);
		
		var href = window.location.href;
		if(/#present/.test(href))
			window.location.href = href.substr(0, href.indexOf('present'));
		
		$(document).unbind('keydown', keyNav);
	}
	
	function keyNav(event) {
		if (window.event) event = window.event;
		var key = event.keyCode ? event.keyCode : event.which ? event.which : null;
		if(key == 0x1b) hideAll();
		if (event.ctrlKey) {			
			switch (key) {
				case 0x25: 
					setActive(0);
					if(p_num > 0) p_num--;
					else p_num = 31;
					setHref(p_num);
					$('#presentation_slide').trigger('prev');
					setActive(1);
					break;
				case 0x27:
					setActive(0);
					if(p_num < 31) p_num++;
					else p_num = 0;
					setHref(p_num);
					$('#presentation_slide').trigger('next');
					setActive(1);
					break;
		    }
	    }
    }


		
	function overA(div, dir) {
		var css = div.style.backgroundImage;
		if(!(dir == 'left' && stopDir == 'back') && !(dir == 'right' && stopDir == 'next')) {			
			var rCss = css.match(/^(url\("?.+)_min(.png"?\))$/);
			if(rCss) div.style.backgroundImage = rCss[1]+rCss[2];
			
			
		}
	}
	
	function outA(div, h) {
		var css = div.style.backgroundImage;
		if(!h) {
			var rCss = css.match(/^(url\("?.+)(.png"?\))$/);			
			
			if(rCss) div.style.backgroundImage = rCss[1]+'_min'+rCss[2];			
		}
		
	}
	
	

	function isChild(e, p) {
		while(e) {
			if (e == p) return true;
			else e = e.parentNode;
		}
		return false;
	}
}
/* end constructor Presentation */