var header_image_container;
var header_image_label_container;
var header_image_numbers_container;

window.onload = function(){
}

var init = function(mode){
	document.getElementById('header_image_container_loading').style.display = 'none';
	setTimeout(function(){
		document.getElementById('location_map_container').innerHTML = '<iframe style="width:924px; height:300px;" frameborder="0" src="http://maps.google.com/maps?f=d&amp;source=s_d&amp;saddr=Soidinkatu+2,+Kajaani,+Suomi&amp;daddr=&amp;hl=fi&amp;geocode=&amp;mra=ls&amp;sll=64.209457,27.753342&amp;sspn=0.000907,0.00239&amp;ie=UTF8&amp;t=p&amp;ll=64.217355,27.746315&amp;spn=0.0224,0.158443&amp;z=13&amp;output=embed"></iframe>';
	},2000);
	header_image_container = document.getElementById('header_image_container');
	header_image_label_container = document.getElementById('header_image_label_container');
	header_image_numbers_container = document.getElementById('header_image_numbers_container');
	
	if(mode == 'touch'){
		document.body.style.cssText += 'overflow:hidden; user-select:none; -o-user-select:none; -moz-user-select:none; -khtml-user-select:none; -webkit-user-select:none;'
		var allEls = document.getElementsByTagName("*");
		for(var i=0; i<allEls.length; i++){
			allEls[i].style.cursor = "url(css/blank.png),none";
		}

		addEvtListener(document,'mousedown',function(evt){
			clearTimeout(scrollDocumentTo_timer);
			var startY = evt.screenY;
			var scrollTop = Math.max(document.body.scrollTop, document.documentElement.scrollTop);
			
			var doDocumentDrag = function(evt){
				document.body.scrollTop = document.documentElement.scrollTop = scrollTop+(startY-evt.screenY);
				return false;
			}
			var finishDocumentDrag = function(evt){
				removeEvtListener(document,'mousemove', doDocumentDrag);
				removeEvtListener(document,'mouseup', finishDocumentDrag);
				return false;
			}
			addEvtListener(document,'mousemove', doDocumentDrag);
			addEvtListener(document,'mouseup', finishDocumentDrag);
			return false;
		})
	}

	addEvtListener(document,'mousewheel',function(){
		clearTimeout(scrollDocumentTo_timer);
	})
	
	var anchors = document.getElementsByTagName('a');
	for(var i=0; i<anchors.length; i++){
		if(anchors[i].getAttribute('id')){
			anchors[i].id = "anchor_"+anchors[i].id;
		}
		if(anchors[i].getAttribute('href') && anchors[i].getAttribute('href').indexOf('#') === 0){
			var anc = anchors[i].getAttribute('href').replace(/#/gi,'');
			var ancArr = anc.split('_');
			if(ancArr.length == 2){
				anchors[i].setAttribute('data-expgroup',ancArr[0]);
				anchors[i].setAttribute('data-exptarget',anchors[i].getAttribute('href').replace(/#/gi,''));
				anchors[i].setAttribute('href','#'+anc.replace(ancArr[0]+'_',''));
				addEvtListener(anchors[i],'click',function(evt){
					var evtTarget = (evt.target || evt.srcElement);
					if(evtTarget.tagName !== "A"){
						evtTarget = evtTarget.parentNode;
					}
					scrollDocumentTo(document.getElementById('anchor_'+evtTarget.getAttribute('href').replace(/#/gi,'')).offsetTop);
					expand(evtTarget.getAttribute('data-expgroup'),document.getElementById(evtTarget.getAttribute('data-exptarget')));
				});
			} else {
				addEvtListener(anchors[i],'click',function(evt){
					var evtTarget = (evt.target || evt.srcElement);
					scrollDocumentTo(document.getElementById('anchor_'+evtTarget.getAttribute('href').replace(/#/gi,'')).offsetTop);
				});
			}
		}
	}
	
	window.onscroll = function(){
		var scrollTop = Math.max(document.body.scrollTop, document.documentElement.scrollTop);
		document.getElementById('link_to_top').style.visibility = (scrollTop > 200 ? 'visible' : 'hidden');
	}

	playIntroPages();
}

var intro_page_timer = null;
var intro_page_prev_num = null;
var intro_page_current_num = 0;
var intro_page_z = 0;
playIntroPages = function(autoPlay,num){
	clearTimeout(intro_page_timer);
	
	if(typeof(num) !== 'undefined'){
		if(num === intro_page_current_num){
			return;
		} else {
			intro_page_current_num = num;
		}
	}
	
	var loop = function(n,inum){
		eval("clearTimeout(image_timer_"+inum+")");
		n++;
		var newT = header_image_container.clientHeight-Math.round(header_image_container.clientHeight*tween.easeFast[n]);
		intro_page_current_image.style.top = newT+'px';
		var newT = -header_image_label_container.clientHeight+Math.round(header_image_label_container.clientHeight*tween.easeFast[n]);
		intro_page_current_label.style.top = newT+'px';
		if(newT !== 0 && n < tween.easeFast.length-1){
			eval("image_timer_"+inum+" = setTimeout(function(){loop(n,inum)},tween.timeout)");
		}
	}

	var intro_page_current_image = header_image_container.children[intro_page_current_num];
	var intro_page_current_label = header_image_label_container.children[intro_page_current_num];
	if(eval("typeof(image_timer_"+intro_page_current_num+") == 'undefined'")){
		eval("image_timer_"+intro_page_current_num+" = null");
	} else {
		eval("clearTimeout(image_timer_"+intro_page_current_num+")");
	}

	if(intro_page_prev_num !== null){
		header_image_numbers_container.children[intro_page_prev_num].className = '';
	}
	header_image_numbers_container.children[intro_page_current_num].className = 'selected';

	intro_page_current_image.style.top = header_image_container.clientHeight+'px';
	intro_page_current_image.style.zIndex = intro_page_z;
	intro_page_current_label.style.top = -header_image_label_container.clientHeight+'px';
	intro_page_current_label.style.zIndex = intro_page_z;
	intro_page_z++;
	loop(0,intro_page_current_num);
	if(autoPlay !== false){
		restartIntroPages();
	}
}
restartIntroPages = function(){
	intro_page_timer = setTimeout(function(){
		var scrollTop = Math.max(document.body.scrollTop, document.documentElement.scrollTop);
		if(scrollTop < 400){
			header_image_numbers_container.children[intro_page_current_num].className = '';
			intro_page_current_num = (intro_page_current_num+1 < header_image_numbers_container.children.length ? intro_page_current_num+1 : 0);
			playIntroPages();
		} else {
			restartIntroPages();
		}
	},5000);
}

var tween = {};
tween.timeout = 20;
tween.easeFast = Array(0,0.00334481,0.0126551,0.0286896,0.0522068,0.0839654,0.124448,0.173827,0.231586,0.296276,0.365655,0.436896,0.507276,0.574414,0.636827,0.693621,0.744517,0.789552,0.829034,0.863345,0.892827,0.917931,0.939034,0.956483,0.970586,0.981621,0.989897,0.995552,0.998862,1);
tween.easeSmooth = Array(0,0.000471903,0.00153931,0.00320223,0.00550559,0.00846064,0.0121011,0.0164494,0.021528,0.027382,0.0340224,0.0414718,0.0497752,0.0589437,0.0689999,0.0799662,0.0918651,0.104697,0.118483,0.133225,0.148899,0.165505,0.183034,0.201427,0.220652,0.240652,0.261382,0.282741,0.304663,0.327045,0.349798,0.37282,0.396022,0.419281,0.442517,0.465629,0.488539,0.511146,0.533416,0.555247,0.576618,0.597472,0.617775,0.637505,0.656629,0.675135,0.693022,0.710281,0.726899,0.742899,0.75827,0.773034,0.787191,0.800753,0.81373,0.826146,0.838,0.849314,0.860101,0.870371,0.880146,0.889438,0.898258,0.906618,0.914539,0.922022,0.92909,0.935753,0.942022,0.94791,0.953427,0.958584,0.963382,0.967854,0.971989,0.975798,0.979292,0.982494,0.985393,0.988011,0.990348,0.992416,0.994225,0.995764,0.997056,0.998112,0.998921,0.999506,0.999865,1);

addEvtListener = function(el,evt,func){
	var evt = (evt == 'mousewheel' && navigator.userAgent.toLowerCase().indexOf('firefox') ? 'DOMMouseScroll' : evt);
	if(typeof(document.addEventListener) != "undefined"){
		el.addEventListener(evt, func, false);
	return this;
	}
	if(typeof(document.attachEvent) != "undefined"){
		el.attachEvent("on"+evt, func);
	return this;
	}
}
removeEvtListener = function(el,evt,func){
	if(typeof(document.removeEventListener) != "undefined"){
		el.removeEventListener(evt, func, false);
	return this;
	}
	if(typeof(document.detachEvent) != "undefined"){
		el.detachEvent("on"+evt, func);
	return this;
	}
}

var scrollDocumentTo_timer = null;
scrollDocumentTo = function(targetTop){
	clearTimeout(scrollDocumentTo_timer);
	targetTop = (targetTop < 0 ? 0 : targetTop);
	var loop = function(n){
		n++;
		var scrollTop = Math.max(document.body.scrollTop, document.documentElement.scrollTop);
		var newTop = scrollTop + Math.round((targetTop-scrollTop)*tween.easeSmooth[n]);
		document.body.scrollTop = document.documentElement.scrollTop = newTop;
		if(newTop !== targetTop && n < tween.easeSmooth.length-1){
			scrollDocumentTo_timer = setTimeout(function(){loop(n)},tween.timeout);
		}
	}

	loop(0);
	return false;
}

expand = function(group,item,callBackMid,reOpen){
	var loop = function(n,el,targetH,callBack){
		eval('expand_'+group+'_status = "running"');
		n++;
		var newH = el.clientHeight-Math.round((el.clientHeight-targetH)*tween.easeFast[n]);
		el.style.height = newH+'px';
		if(newH !== targetH && n < tween.easeFast.length-1){
			setTimeout(function(){loop(n,el,targetH,callBack)},tween.timeout);
		} else {
			eval('expand_'+group+'_status = "ready"');
			if(callBack){
				callBack();
			}
		}
	}

	if(eval('typeof(expand_'+group+'_status) == "undefined"')){
		eval('expand_'+group+'_status = "ready"');
	}
	if(eval('typeof(expand_'+group+'_current) == "undefined"')){
		eval('expand_'+group+'_current = null');
	}
	var status = eval('expand_'+group+'_status');
	var current = eval('expand_'+group+'_current');
	
	if(status == 'running' || (current == item && !reOpen)){
		return false;
	}
	eval('expand_'+group+'_current = null');
	if(current){
		loop(0,current,0,function(){
			if(item){
				eval('expand_'+group+'_current = item');
				if(callBackMid){
					callBackMid();
				}
				loop(0,item,item.scrollHeight);
			}
		});
	} else if(item){
		eval('expand_'+group+'_current = item');
		if(callBackMid){
			callBackMid();
		}
		loop(0,item,item.scrollHeight);
	}
}

viewWorkByName = function(g){
	var tmpArr = g.split('/');
	if(tmpArr.length !== 2){
		alert("Error: viewWorkByName(g)\n\nParameter g = "+g);
		return false;
	}
	var group = tmpArr[0];
	var label = tmpArr[1];
	var num = null;
	
	var container = document.getElementById('works_'+group+'_previews');
	for(var i=0; i<container.children.length; i++){
		if(container.children[i].getAttribute("data-label").toLowerCase() == label.toLowerCase()){
			num = i;
			continue;
		}
	}
	if(num !== null){
		viewWork(group,num);
	}
}

viewWork = function(group,n){
	if(eval('typeof(work_'+group+'_current) == "undefined"')){
		eval('work_'+group+'_current = n');
	}
	var current = eval('work_'+group+'_current');
	scrollDocumentTo(document.getElementById('anchor_'+group+'_work_expanded').offsetTop-100);
	expand('works_'+group,document.getElementById('works_'+group),function(){
		// hide work
		document.getElementById('work_'+group+'_'+current).style.display = 'none';
		// reset possible iframes
		var iframes = document.getElementById('work_'+group+'_'+current).getElementsByTagName('iframe');
		for(var i=0; i<iframes.length; i++){
			iframes[i].src = "about:blank";
//			iframes[i].src = iframes[i].src;
		}
		
		if(n !== null){
			// show work
			eval('work_'+group+'_current = n');
			// load possible iframes
			var iframes = document.getElementById('work_'+group+'_'+current).getElementsByTagName('iframe');
			for(var i=0; i<iframes.length; i++){
				iframes[i].src = iframes[i].getAttribute("extsrc");
	//			iframes[i].src = iframes[i].src;
			}

			document.getElementById('work_'+group+'_'+n+'_image_container').style.display = 'block';
			document.getElementById('work_'+group+'_'+n).style.display = 'inline-block';
			var container = document.getElementById('work_'+group+'_'+n+'_image_container');
			container.style.left = '0px';
			swapWorkImage(group,n,0);
		}
	},true);
}

var work_image_z = 0;
swapWorkImage = function(group,w,n){
	var loop = function(){
		eval('clearTimeout(work_'+group+'_'+w+'_timer)');
		
		var step = Math.round(((-456*n)-container.offsetLeft)/2);
		if(Math.abs(step) > 1){
			container.style.left = container.offsetLeft+step+'px';
			eval('work_'+group+'_'+w+'_timer = setTimeout(loop,30)');
		} else {
			container.style.left = -(456*n)+'px';
		}
		
	}

	if(eval('typeof(work_'+group+'_'+w+'_timer) == "undefined"')){
		eval('work_'+group+'_'+w+'_timer = null');
	}
	if(eval('typeof(work_'+group+'_image_current) == "undefined"')){
		eval('work_'+group+'_image_current = null');
	}
	var current = eval('work_'+group+'_image_current');
	var numbers = document.getElementById('work_'+group+'_'+w+'_numbers');
	var container = document.getElementById('work_'+group+'_'+w+'_image_container');
	for(var i=0; i<container.children.length; i++){
		numbers.children[i].className = '';
	}
	numbers.children[n].className = 'selected';
	loop();
}

filterWorks = function(group,f,navLink){
	var nav = navLink.parentNode.parentNode;
	for(var i=0; i<nav.children.length; i++){
		nav.children[i].className = '';
	}
	navLink.parentNode.className = 'selected';
	if(eval('typeof(work_'+group+'_filter_timer) == "undefined"')){
		eval('work_'+group+'_filter_timer = null');
	}
	var container = document.getElementById('works_'+group+'_previews');
	var loop = function(){
		eval('clearTimeout(work_'+group+'_filter_timer)');
		
		var finished = true;
		
		for(var i=0; i<container.children.length; i++){
			var w = container.children[i];
			if(!f){
				if(w.style.opacity-0 < 1){
					w.style.opacity = w.style.opacity-0+0.1;
					finished = false;
				}
			} else {		
				if(inArray(f,w.getAttribute("data-group").split("---"))){
					if(w.style.opacity-0 < 1){
						w.style.opacity = w.style.opacity-0+0.1;
						finished = false;
					}
				} else {
					if(w.style.opacity-0 > 0.2){
						w.style.opacity = w.style.opacity-0-0.1;
						finished = false;
					}
				}
			}
		}
		if(!finished){
			eval('work_'+group+'_filter_timer = setTimeout(loop,30)');
		}
	}
	loop();
}

inArray = function(n,arr){
	for(var i=0; i<arr.length; i++){
		if(arr[i] === n){
			return true;
		}
	}
	return false;
}

submitTarjous = function(){
	var container = document.getElementById('tarjous_container');
	tarjous_originalHTML = container.innerHTML;
	var tmp_frm = document.createElement('div');
	var frm = document.getElementById('form_tarjous');
	// ajax submit here...
	expand('exp1',document.getElementById('exp1_tarjous'),function(){
		container.innerHTML = '<h1 style="text-align:center;">Lähetetään...<h1>';
		setTimeout(function(){
			ajax.submit('ajax.post_tarjous.php',tmp_frm,frm,function(){
				// -> callback setTimeout(restore original HTML to container,2000);
				container.innerHTML = '<div style="text-align:center;"><h1 style="display:inline-block;">'+tmp_frm.innerHTML+'</h1> &nbsp; <input type="button" value="Ok" onclick="expand(\'exp1\',document.getElementById(\'exp1_tarjous\'),function(){document.getElementById(\'tarjous_container\').innerHTML = tarjous_originalHTML;},true);"></div>';
			});
		},1000);
	},true);
	return false;
}

