var smallDistSpeed = 3;


var scrolldowns = [];
var fadeins = [];
var highlights = [];
var wrapper;
var wrapperHeight = 240;
var scrollContentW = document.createElement("div");
var scrollContentP = document.createElement("div");
var underWrapper;
var gammalsida='info';
var fadeaIn;
var customerShowHideEffect;
var glh = null;

function linkOver(elem){
	if(glh!=null && glh.element==elem)
		glh.cancel();
	elem.style.backgroundColor='#8b0000';
	elem.style.color='#ffffff';
}
function linkOut(elem,blue){
	elem.style.color='';
	glh = new Effect.Highlight(elem,
		{ startcolor:'#8b0000',
		  endcolor:blue?'#e0e8e7':'#ffffff',
		  duration:0.5,
		  restorecolor:true});
}

function getClientByName(str_name){
	str_name=str_name.replace("&amp;","&");
	for(var i=0; i<kunder.length;i++){
		if(kunder[i].name==str_name) return kunder[i];
	}
	for(var i=0; i<privateProjects.length;i++){
		if(privateProjects[i].name==str_name) return privateProjects[i];
	}
	
	return null;
}

function getClientIndexByName(str_name){
	str_name=str_name.replace("&amp;","&");
	for(var i=0; i<kunder.length;i++){
		if(kunder[i].name==str_name) return i;
	}
	for(var i=0; i<privateProjects.length;i++){
		if(privateProjects[i].name==str_name) return i;
	}
	return null;
}
 
function initCustomers(){
	//Lägger in kunder och event-lyssnare
	
	//Först referenser till våra olika wrappers
	wrapper = $("wrapper");		
	underWrapper = $("underWrapper");
	Element.setOpacity(wrapper,0);			
	
	//Skapa länk-listorna och skriv rullarna
	updateProjectsList(true);
	updateProjectsList(false);
	
	//IE Fixar inte att man lägger till lyssnarna i första
	//iterrationen, så vi gör det här
	var elems = Element.childElements($("linkHolder"));
	elems = elems.concat(Element.childElements($("linkHolder1")));
	elems = elems.concat(Element.childElements($("linkHolder2")));
	elems = elems.concat(Element.childElements($("privateLinkHolder")));
	elems = elems.concat(Element.childElements($("privateLinkHolder1")));
	elems = elems.concat(Element.childElements($("privateLinkHolder2")));
	for(var i=0; i<elems.length;i++){
		elems[i].observe("mouseover",showLink);
		elems[i].observe("mouseout",hideLink);
	}
	
	//Preloada headers
	preloadHeaders();
}

function updateProjectsList(work){
	var list = work ? kunder : privateProjects;
	for(var i=0; i<list.length;i++){
		var kund = list[i];
		if(kund!=null && kund!=undefined){
			var elem = document.createElement("a");
			
			if(kund.media.length>0){
				elem.rel="lightbox["+(work?"w":"p")+i+"]";
				elem.href=kund.mediaDir+"/"+kund.media[0];
			}
			
			
			elem.style.paddingLeft=5;

			//elem.style.paddingBottom=1;
			elem.style.display='block';
			elem.style.cursor='pointer';

			var textHolder = document.createElement("span");
			textHolder.style.position="relative";
			textHolder.style.top="-1px";
			textHolder.appendChild(document.createTextNode(kund.name));
			elem.appendChild(textHolder);
			
			
			if(i<=11)
				var kolumnId = work ? "linkHolder" : "privateLinkHolder";
			else if(i<=23)
				var kolumnId = work ? "linkHolder1" : "privateLinkHolder1";
			else if(i<=35)
				var kolumnId = work ? "linkHolder2" : "privateLinkHolder2";
			
			$(kolumnId).appendChild(elem);
			
			if(work)
				scrollContentW.appendChild(getCustomerDiv(kund,i));
			else 
				scrollContentP.appendChild(getCustomerDiv(kund,i));
			
			
			
			//Lägg in alla andra bilder
			for(var j=1;j<kund.media.length;j++){
				var entill = document.createElement("a");
				entill.rel="lightbox["+(work?"w":"p")+i+"]";
				entill.href=kund.mediaDir+"/"+kund.media[j];
				$('lbtrash').appendChild(entill);
			}
		}
	}
}

function preloadHeaders(){	
	//Ladda headers också
	var topImgs = ['clientlogin','contact','info','privateprojects','workprojects'];
	for(var i=0; i < topImgs.length; i++){
		var img = new Image();
		img.src = 'Dogge_Web/top_'+topImgs[i]+'.jpg'; 
	}	
}

function getCustomerDiv(kund,index){
	//Bygg DOM
	var holder = document.createElement("div");
	holder.style.position = "absolute";
	holder.style.width = "470px";
	holder.style.height = wrapper.style.height;
	holder.style.left = "0px";
	holder.style.top = (240*index)+"px";
	
	var textHolder = document.createElement("div");
	textHolder.style.position="absolute";
	textHolder.style.width="229px";
	textHolder.style.top="2px";
	
	var header = document.createElement("span");
	header.className = "georgia";
	header.style.position = "relative";
	header.style.left = "-1px";
	header.style.paddingBottom = "11px";
	header.style.display = "block";
	header.style.lineHeight = "21px";
	header.style.textTransform = "uppercase";
	header.appendChild(document.createTextNode(kund.header));
	header.appendChild(document.createElement("br"));
	textHolder.appendChild(header);
	textHolder.appendChild(document.createTextNode("CLIENT:"+kund.client));
	textHolder.appendChild(document.createElement("br"));
	textHolder.appendChild(document.createTextNode("TYPE:"+kund.type));
	textHolder.appendChild(document.createElement("br"));
	textHolder.appendChild(document.createTextNode("SOUND:"+kund.sound));
	var spacer2 = document.createElement("div");
	spacer2.style.height = "14px"; 
	textHolder.appendChild(spacer2);
	textHolder.appendChild(document.createTextNode(kund.text));
	
	holder.appendChild(textHolder);
	
	var img = new Image();
	
	
	img.style.position="absolute";
	img.style.left="240px";
	img.style.top="6px";
	
	
	
	holder.appendChild(img);
	
	var tmpImg = document.createElement("div");
	tmpImg.className = "tmpImg";
	tmpImg.appendChild(document.createTextNode("loading image..."))
	
	holder.appendChild(tmpImg);
	
	img.onload= (function(){
		holder.removeChild(tmpImg);
	}).bind(this);
	
	img.src = kund.mediaDir+"/thumbnail." + (kund.gifThumbnail ? "gif" : "jpg");
	return holder;
}

function showLink(evt){
	//Hämta den aktiva länken
	var link = evt.element();
	if(link.href==null || link.href==undefined) doShowLink(link.parentNode);
	else doShowLink(link);
  
}
function doShowLink(link){
	//Avbryt alla effects och ta bort ur array 
	//clearTimeout(hackTimer);
	while(scrolldowns.length>0){
		scrolldowns.pop().cancel();
	}
	while(fadeins.length>0){ 
		fadeins.pop().cancel();
	}
	
	if(customerShowHideEffect != null){
		customerShowHideEffect.cancel();
	}
	customerShowHideEffect = new Effect.Opacity(wrapper,
		{ from:Element.getOpacity(wrapper),
		  to:1,
		  duration:0.5,
		  afterFinish:onShowHideFinished});
	
	
	//Hämta aktiv länk
	//var link = evt.element();
	//Hämta kund
	var kund = getClientByName(link.firstChild.innerHTML);
	//Sätt backgrund på läken
	link.style.backgroundColor="#8b0000";
	link.style.color="#ffffff";
	
	var clientIndex = getClientIndexByName(link.firstChild.innerHTML);
	
	if(highlights[clientIndex]) {
		highlights[clientIndex].cancel();
	}
	
	
	//Visa nästa kund
	
	
	$(wrapper.firstChild).makePositioned();

	
	var moveBy = 34;
	
	try{
		moveBy = -clientIndex*wrapperHeight+34 -parseFloat(wrapper.firstChild.getStyle('top'));
	}catch(e){
		moveBy = -clientIndex*wrapperHeight+34;
	}
	
	//NaN-check
	if(!(moveBy<0) && !(moveBy>0)) moveBy=34;
	
	
	
	
	var goalTime = Math.max(1,Math.min(2.5*smallDistSpeed,Math.abs(moveBy/wrapperHeight)))/smallDistSpeed;
	
	var speed = moveBy/goalTime;

	
	
	var halfWH = wrapperHeight/2 * (moveBy<0?-1:1);
	
	if(Math.abs(moveBy)>wrapperHeight*5){
		halfWH*=4;
	}
	else if(Math.abs(moveBy)>wrapperHeight*3){
		halfWH*=2;
	}
	
	var distDifWH = moveBy - halfWH*2;
	
	//moveHack(wrapper.firstChild,target);
	
	
	if(Math.abs(moveBy)<wrapperHeight){
		scrolldowns[scrolldowns.length] = new Effect.Move(wrapper.firstChild,
		{ x: 0,
		  y: moveBy,
		  duration: Math.abs(moveBy/500),
		  transition: Effect.Transitions.linear,
		  mode: 'relative'});
		 return;
	}
	
  
  
	scrolldowns[scrolldowns.length] = new Effect.Move(wrapper.firstChild,
		{ x: 0,
		  y: halfWH,
		  duration: Math.abs(halfWH/speed),
		  transition: Effect.Transitions.dogge1,
		  mode: 'relative',
		  afterFinish: function(){
		  
				scrolldowns[scrolldowns.length] = new Effect.Move(wrapper.firstChild,
					{ x: 0,
					  y: distDifWH,
					  duration: Math.abs(distDifWH/(speed*2)),
					  transition: Effect.Transitions.linear,
					  mode: 'relative',
					  afterFinish: function(){
		  
		  
							scrolldowns[scrolldowns.length] = new Effect.Move(wrapper.firstChild,
								{ x: 0,
								  y: halfWH,
								  duration: Math.abs(halfWH/speed),
								  transition: Effect.Transitions.dogge2,
								  mode: 'relative' }
							);
		  
		  
						}
					}
				)
			}
		}
	);
		  
	
	
	//if(!Prototype.Browser.IE)
	//fadeins[fadeins.length] = new Effect.Opacity(holder,{from:0,to:1,delay:0.2,duration:1});
}

var hackTimer;
var ty;
var e;
var cTop;
function moveHack(elem, targetY){
	if(elem!=null) e = elem;
	if(targetY!=null) ty = targetY;
	if(elem!=null && targetY!=null){
		cTop = e.offsetTop;
	}
	if(hackTimer!=null)
		clearTimeout(hackTimer);
		
	var distLeft = Math.abs(ty-cTop);
		
	var movement = 10;
	  //(1+Math.cos(Math.PI+Math.min(distLeft/1000,Math.PI)))*5
	//- (1+Math.cos(Math.PI+Math.min((ft-t<=1000?(ft-t)/1000*Math.PI:0))))*5;
	
	if(cTop<ty){
		cTop =  Math.min(cTop + movement,ty);
	}
	else
		cTop = Math.max(cTop - movement,ty)
	
	
	/*new Effect.Move(e,
		{ x: 0,y: cTop,duration: 0,
		  transition: Effect.Transitions.full,
		  mode: 'absolute' });*/
	
	$$(e).setStyle({top:cTop+"px"});
	
	if( cTop != ty )
		hackTimer = setTimeout("moveHack()",10);
}

function hideLink(evt){
	//Hämta den aktiva länken
	var link = evt.element();
	if(link.href==null || link.href==undefined) doHideLink(link.parentNode);
	else doHideLink(link);
  
}
function doHideLink(link){
	//Hämta den aktiva länken
	//var link = evt.element();
	
	//Bakgrund på länken ändras
	highlights[getClientIndexByName(link.firstChild.innerHTML)] = new Effect.Highlight(link,{startcolor:'#8b0000',endcolor:'#e0e8e7',duration:0.5});
	link.style.backgroundColor = "";
	link.style.color="";
	
	if(customerShowHideEffect != null)
		customerShowHideEffect.cancel();
		
	customerShowHideEffect = new Effect.Opacity(wrapper,
		{ from:1,
		  to:0,
		  duration:1,
		  delay:1,
		  afterFinish:onShowHideFinished});
	
}

function onShowHideFinished(){
	customerShowHideEffect = null;
}

function clearOld(){
	//Rensar ut gamla element så de inte dra minne i onödan
	var elems = Element.childElements($("underWrapper"));
	var minH = wrapperHeight;
	for(var i=0; i<elems.length;i++){
		var el = elems[i];
		if(el.offsetTop>=minH){
			$("underWrapper").removeChild(el);
		}
	}
}

function visa(id) {
	if(customerShowHideEffect != null)
		customerShowHideEffect.cancel();
	Element.setOpacity(wrapper,0);
	
	if(gammalsida!=id) {
		//Dogge ville inte ha fade
		//$(id).appear();
		//$(gammalsida).fade();
		//new Effect.Opacity(gammalsida+'flik',{from:1,to:0,duration:0.4});
		$(id).style.visibility = "visible"; 
		$(id).style.display = ""; 
		$(gammalsida).style.visibility = "hidden"; 
		$(gammalsida).style.display = "none"; 
		
		
		Element.setOpacity($(id+'flik'),1);
		$(id+'flik').style.display = "";
		document.getElementById(id+'meny').style.color='#ffffff';
		
		Element.setOpacity($(id),1);
		Element.setOpacity($(gammalsida),0);
		Element.setOpacity($(gammalsida+'flik'),0);
		$(gammalsida+'meny').style.color='';
		$('topImg').src='Dogge_Web/top_'+id+'.jpg';
		gammalsida=id;
		
		if(id=='privateprojects' || id =='workprojects'){
			$(id).appendChild(underWrapper);
			$(id).appendChild(wrapper);
			while(wrapper.firstChild!=null)
				wrapper.removeChild(wrapper.firstChild);
			if(id=='privateprojects')
				wrapper.appendChild(scrollContentP);
			else
				wrapper.appendChild(scrollContentW);
		}
		
		lb.updateImageList();
	}
}

function toggla(id,bool) {
	return;
	if(bool==1) {
		//Dogge ville inte ha fade
		//fadeaIn = new Effect.Opacity(id+'flik',{from:0,to:1,duration:0.4});
		Element.setOpacity($(id+'flik'),1);
		$(id+'flik').style.display = "";
		document.getElementById(id+'meny').style.color='#ffffff';
	}
	else if(bool==0 && gammalsida!=id) {
		//fadeaIn.cancel();
		//new Effect.Opacity(id+'flik',{from:1,to:0,duration:0.4});
		Element.setOpacity($(id+'flik'),0);
		document.getElementById(id+'meny').style.color='';
	}
}
