//Closure functions
function associateObjWithDomEvent(obj, methodName) { return (function(e) { e = e||window.event; return obj[methodName](e, this); }); }
function associateObjWithDataEvent(obj, methodName) { return (function(data) { return obj[methodName](data, this); }); }
function associateObjWithEvent(obj, methodName) { return (function() { return obj[methodName](this); }); }

var homePageCount = 5;

//Quirksmode Cookie functions - http://www.quirksmode.org/js/cookies.html
function createCookie(name,value,days) {
	if (days)
	{
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++)
	{
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}

function addToDocument() {	
	var element =  document.getElementById(this.elementID);
	element.onmouseover = function () { this.src = rollovers[this.id].overImage.src; }
	element.onmouseout = function () { this.src = rollovers[this.id].defaultImage.src; }
}
function loadImages() {
	this.defaultImage.src = this.defaultImageFilename;
	this.overImage.src = this.overImageFilename;
}
function rollOver(elementID, defaultImageFilename, overImageFilename) {
	this.addToDocument = addToDocument;
	this.elementID = elementID;
	this.defaultImageFilename = defaultImageFilename;
	this.overImageFilename = overImageFilename;
	
	this.defaultImage = new Image();
	this.overImage = new Image();
	
	this.defaultImage.src = defaultImageFilename;
	this.overImage.src = overImageFilename;
}

var rollovers = new Array();
function createRollover(elementID, defaultImageFilename, overImageFilename) {
	rollovers[elementID] = new rollOver(elementID, defaultImageFilename, overImageFilename);
}
function addRollovers() {
	for(i in rollovers) if(document.getElementById(rollovers[i].elementID)) rollovers[i].addToDocument();
}
function loadRollovers() {
	for(i in rollovers) if(document.getElementById(rollovers[i].elementID)) rollovers[i].loadImages();
}

//Other functions
function setHomePage(number) {
	for(i = 0; i < homePageCount; i++) {
		document.getElementById("home"+i).style.display="none";
	}
	document.getElementById("home"+number).style.display="block";
}

function setOpacity(id, opacity, bgColor) {
	//alert(id);
	var object = document.getElementById(id).style;
	object.backgroundColor=bgColor;
	if(opacity) {
		object.width="646px";
		object.height="400px";
	} else {
		object.width="0px";
		object.height="0px";
	}
	object.opacity = (opacity / 100);
    object.MozOpacity = (opacity / 100);
    object.KhtmlOpacity = (opacity / 100);
    object.filter = "alpha(opacity=" + opacity + ")"; 
}
function onFinishMove(number) {
	var previous = number - 1;
	var next = number + 1;
	if(number == 5) next = 1;
	if(number < 2) previous = 5;
	//Enable next and previous buttons
	document.getElementById('submenu0').onclick = function() { setStoriesPage(eval("previous"), false, false); return false;}
	document.getElementById('submenu1').onclick = function() { setStoriesPage(eval("next"), false, true); return false;}
	document.getElementById('darwindidit'+number).onclick = function() { setStoriesPage(eval("next"), false, true); return false;}
	//Remove opacity
	setOpacity('storymask'+number, 0, "");
	//Enable stuff on new focus layer
}
function onStartMove(number, moveNext) {
	var previous = number - 1;
	var next = number + 1;
	if(number == 5) next = 1;
	if(number < 2) previous = 5;
	//Disable next and previous buttons
	document.getElementById('submenu0').onclick = function() {}
	document.getElementById('submenu1').onclick = function() {}
	
}
function setStoriesPage(number, firstRun, moveNext) {
	var number = setStoriesPage.arguments[0];
	var firstRun = setStoriesPage.arguments[1];
	var moveNext = setStoriesPage.arguments[2];
	//var page=number;
	var previous = number - 1;
	var next = number + 1;
	if(number == 5) next = 1;
	if(number < 2) previous = 5;
	
	document.getElementById('submenu0').onclick = function() { setStoriesPage(previous, false, false); return false;}
	document.getElementById('submenu1').onclick = function() { setStoriesPage(next, false, true); return false;}
	document.getElementById('submenu2').onclick = function() { window.open("pdfs/darwindidit"+number+".pdf", "services"); return false; }
	
	if(!firstRun) {
		//scroll all three
		if(moveNext){
			
			document.getElementById('story'+next+'container').style.top = "1040px";
			myScroll1 = new scroller('story'+previous+'container', 0, -520, function() {});
			myScroll2 = new scroller('story'+number+'container', 520, 0, function() {});
			myScroll3 = new scroller('story'+next+'container', 1040, 520, function() { onFinishMove(number); });
			//alert("test");
			setOpacity('storymask'+previous, 65, "white");
			setOpacity('storymask'+number, 65, "white");
			setOpacity('storymask'+next, 65, "white");
		} else {
			
			var afterNext = next+1;
			if(afterNext > 5) afterNext=1;
			document.getElementById('story'+number+'container').style.top = "-520px";
			//myScroll1 = new scroller('story'+previous+'container', -520, 0, function() {});
			myScroll2 = new scroller('story'+number+'container', 0, 520, function() {});
			myScroll3 = new scroller('story'+next+'container', 520, 1040, function() { onFinishMove(number); });
			myScroll1 = new scroller('story'+afterNext+'container', 1040, 1560, function() {});
			setOpacity('storymask'+number, 65, "white");
			setOpacity('storymask'+next, 65, "white");
			setOpacity('storymask'+afterNext, 65, "white");
		}
		
		onStartMove(number, moveNext);

		scrollAll = function () {myScroll1.doScroll("myScroll1"); myScroll2.doScroll("myScroll2"); myScroll3.doScroll("myScroll3");}
		setTimeout("scrollAll()", 1);

	}
	else {
		document.getElementById('story'+number+'container').style.top = "0px";
		document.getElementById('story'+next+'container').style.top = "520px";
		document.getElementById('darwindidit'+number).onclick = function() { setStoriesPage(next, false, true); return false;}
		setOpacity('storymask'+next, 65, "white");
	}
	
	//Add rollover to submenu
	document.getElementById('submenu').onmouseover = setMapRollover(0, number);	
}
function setClientsPage(number, firstRun, moveNext) {
	var number = setClientsPage.arguments[0];
	var firstRun = setClientsPage.arguments[1];
	var moveNext = setClientsPage.arguments[2];
	//var page=number;
	var previous = number - 1;
	var next = number + 1;
	if(number == 3) next = 1;
	if(number < 2) previous = 3;
	
	document.getElementById('submenu0').onclick = function() { setClientsPage(previous, false, false); return false;}
	document.getElementById('submenu1').onclick = function() { setClientsPage(next, false, true); return false;}
	if(!firstRun) {
		//scroll all three
		if(moveNext){
			document.getElementById('client'+next+'container').style.top = "1040px";
			myScroll1 = new scroller('client'+previous+'container', 0, -520, function() {});
			myScroll2 = new scroller('client'+number+'container', 520, 0, function() {});
			myScroll3 = new scroller('client'+next+'container', 1040, 520, function() { onFinishClientMove(number); });
			setOpacity('clientsmask'+previous, 65, "white");
			setOpacity('clientsmask'+number, 65, "white");
			setOpacity('clientsmask'+next, 65, "white");
		} else {
			var afterNext = next+1;
			if(afterNext > 3) afterNext=1;
			document.getElementById('client'+number+'container').style.top = "-520px";
			//myScroll1 = new scroller('story'+previous+'container', -520, 0, function() {});
			myScroll2 = new scroller('client'+number+'container', 0, 520, function() {});
			myScroll3 = new scroller('client'+next+'container', 520, 1040, function() { onFinishClientMove(number); });
			myScroll1 = new scroller('client'+afterNext+'container', 1040, 1560, function() {});
			setOpacity('clientsmask'+number, 65, "white");
			setOpacity('clientsmask'+next, 65, "white");
			setOpacity('clientsmask'+afterNext, 65, "white");
		}
		onStartClientsMove(number, moveNext);
		scrollAll = function () { myScroll1.doScroll("myScroll1"); myScroll2.doScroll("myScroll2"); myScroll3.doScroll("myScroll3"); }
		setTimeout("scrollAll()", 1);

	}
	else {
		document.getElementById('client'+number+'container').style.top = "0px";
		document.getElementById('client'+next+'container').style.top = "520px";
		document.getElementById('clients'+number+'people1').onclick = function() { setClientsPage(next, false, true); return false;}
		//setOpacity('clientsmask'+next, 65, "white");
	}	
}
function onStartClientsMove(number, moveNext) {
	var previous = number - 1;
	var next = number + 1;
	if(number == 3) next = 1;
	if(number < 2) previous = 3;
	//Disable next and previous buttons
	document.getElementById('submenu0').onclick = function() {}
	document.getElementById('submenu1').onclick = function() {}

}
function onFinishClientMove(number) {
	var previous = number - 1;
	var next = number + 1;
	if(number == 3) next = 1;
	if(number < 2) previous = 3;
	//Enable next and previous buttons
	document.getElementById('submenu0').onclick = function() { setClientsPage(eval("previous"), false, false); return false;}
	document.getElementById('submenu1').onclick = function() { setClientsPage(eval("next"), false, true); return false;}
	document.getElementById('clients'+number+'people1').onclick = function() { setClientsPage(eval("next"), false, true); return false;}
	//Remove opacity
	setOpacity('clientsmask'+number, 0, "");
	//Enable stuff on new focus layer
}


function setContactUsPage(number, firstRun, moveNext) {
	//debugger;
	var number = setContactUsPage.arguments[0];
	var firstRun = setContactUsPage.arguments[1];
	var moveNext = setContactUsPage.arguments[2];
	//var page=number;
	var max = 4;
	var previous = number - 1;
	var next = number + 1;
	if(number == max) next = 1;
	if(number == 1) previous = max;
	
	document.getElementById('submenu0').onclick = function() { setContactUsPage(previous, false, false); return false;}
	document.getElementById('submenu1').onclick = function() { setContactUsPage(next, false, true); return false;}
	if(!firstRun) {
		//scroll all three
		if(moveNext){
			document.getElementById('contactus'+next+'container').style.top = "1040px";
			myScroll1 = new scroller('contactus'+previous+'container', 0, -520, function() {});
			myScroll2 = new scroller('contactus'+number+'container', 520, 0, function() {});
			myScroll3 = new scroller('contactus'+next+'container', 1040, 520, function() { onFinishContactUsMove(number); });
			setOpacity('contactusmask'+previous, 65, "white");
			setOpacity('contactusmask'+number, 65, "white");
			setOpacity('contactusmask'+next, 65, "white");
		} else {
			var afterNext = next+1;
			if(afterNext > max) afterNext=1;
			document.getElementById('contactus'+number+'container').style.top = "-520px";
			//myScroll1 = new scroller('story'+previous+'container', -520, 0, function() {});
			myScroll2 = new scroller('contactus'+number+'container', 0, 520, function() {});
			myScroll3 = new scroller('contactus'+next+'container', 520, 1040, function() { onFinishContactUsMove(number); });
			myScroll1 = new scroller('contactus'+afterNext+'container', 1040, 1560, function() {});
			setOpacity('contactusmask'+number, 65, "white");
			setOpacity('contactusmask'+next, 65, "white");
			setOpacity('contactusmask'+afterNext, 65, "white");
		}
		onStartContactUsMove(number, moveNext);
		scrollAll = function () { myScroll1.doScroll("myScroll1"); myScroll2.doScroll("myScroll2"); myScroll3.doScroll("myScroll3"); }
		setTimeout("scrollAll()", 1);

	}
	else {
		document.getElementById('contactus'+number+'container').style.top = "0px";
		document.getElementById('contactus'+next+'container').style.top = "520px";
		
		if (number == 1 || number == 3)
		{
			document.getElementById('darwincountry'+number).onclick = function() { setContactUsPage(next, false, true); return false;}
		}
		else
		{
			document.getElementById('contactUsMap').onclick = function() { setContactUsPage(next, false, true); return false;}
		}
		
		document.getElementById('darwincountry-link1').onclick = function() { setContactUsPage(next, false, true); return false;}
		document.getElementById('darwincountry-link2').onclick = function() { setContactUsPage(next, false, true); return false;}
		setOpacity('contactusmask'+next, 65, "white");
	}	
}
function onStartContactUsMove(number, moveNext) {
	var max = 4;
	var previous = number - 1;
	var next = number + 1;
	if(number == max) next = 1;
	if(number == 1) previous = max;
	//Disable next and previous buttons
	document.getElementById('submenu0').onclick = function() {}
	document.getElementById('submenu1').onclick = function() {}
}
function onFinishContactUsMove(number) {
	var max = 4;
	var previous = number - 1;
	var next = number + 1;
	if(number == max) next = 1;
	if(number == 1) previous = max;
	//Enable next and previous buttons
	document.getElementById('submenu0').onclick = function() { setContactUsPage(eval("previous"), false, false); return false;}
	document.getElementById('submenu1').onclick = function() { setContactUsPage(eval("next"), false, true); return false;}
	
	if (number == 1 || number == 3)
	{
		document.getElementById('darwincountry'+number).onclick = function() { setContactUsPage(next, false, true); return false;}
	}
	else
	{
		document.getElementById('contactUsMap').onclick = function() { setContactUsPage(next, false, true); return false;}
	}
	
	document.getElementById('darwincountry-link1').onclick = function() { setContactUsPage(next, false, true); return false;}
	document.getElementById('darwincountry-link2').onclick = function() { setContactUsPage(next, false, true); return false;}
	//Remove opacity
	setOpacity('contactusmask'+number, 0, "");
	//Enable stuff on new focus layer
}


function setMapRollover(over, number) {
	page = number;
	if(over) {
		return function () {
			document.getElementById('storybackground'+number).style.display="none";
			document.getElementById('storybackgroundover'+number).style.display="block";
			document.getElementById('story'+number).style.visibility="hidden";
			document.getElementById('darwinlogoStory'+number).style.display="block";
			return false;
		}
	}
	else {		
		return function () {
			document.getElementById('storybackgroundover'+number).style.display='none';
			document.getElementById('storybackground'+number).style.display='block';
			document.getElementById('story'+number).style.visibility="visible";
			document.getElementById('darwinlogoStory'+number).style.display="none";
			return false;
		}
	}
}
function scrollLater(objRef) { return function() { objRef.doScroll(); }; }
function scroller(id, start, finish, onComplete) {
	this.id = id;
	this.start = start;
	this.finish = finish;
	this.state = true;
	this.moving = false;
	this.timeoutId = null;
	this.closeLater = false;
	this.onComplete = onComplete;
}
scroller.prototype.doScroll = function (currentScroller) {
	this.moving = true;
	var element = document.getElementById(this.id);
	var top = parseInt(element.style.top);
	functRef=scrollLater(this);
	//document.getElementById("test").value= this.state + " "+element+"p";
		if(this.start > this.finish && top > this.finish) {
			element.style.top = (top - 10) + "px";
			//var func= function() {scrollMenu(id);}
			this.timeoutId = setTimeout(currentScroller+'.doScroll("'+currentScroller+'")', "1");
		}
		else if(this.start < this.finish && top < this.finish-520) {
			element.style.top = (top + 10) + "px";
			//var func= function() {scrollMenu(id);}
			this.timeoutId = setTimeout(currentScroller+'.doScroll("'+currentScroller+'")', "1");
		}
		else {
			clearTimeout(this.timeoutId);
			this.moving = false;
			this.onComplete();
			//document.getElementById("test").value=this.state + " "+top+"s";
		}
}
//Variables
var myScroll1 = null;
var myScroll2 = null;
var myScroll3 = null;
var myScroll4 = null;
var functRef=null;
var page = 0;

//Rollovers
var loc = window.location.href;

if (loc.indexOf("stories.htm") != -1) {
	createRollover("menu0", "images/menu-0-home.gif", "images/menu-0-home-over.gif");
	createRollover("menu2", "images/menu-2-services.gif", "images/menu-2-services-over.gif");
	createRollover("menu3", "images/menu-3-clients.gif", "images/menu-3-clients-over.gif");
	createRollover("menu4", "images/menu-4-contactus.gif", "images/menu-4-contactus-over.gif");
	
	createRollover("submenu0", "images/submenu-0-0-previous.gif", "images/submenu-0-0-previous-over.gif");
	createRollover("submenu1", "images/submenu-0-1-next.gif", "images/submenu-0-1-next-over.gif");
	createRollover("submenu2", "images/submenu-0-2-downloadpdf.gif", "images/submenu-0-2-downloadpdf-ove.gif");
	createRollover("darwindidit1", "images/case-studies-1-darwindidit.gif", "images/case-studies-1-darwindidit-.gif");
	createRollover("darwindidit2", "images/case-studies-2-darwindidit.gif", "images/case-studies-2-darwindidit-.gif");
	createRollover("darwindidit3", "images/case-studies-3-darwindidit.gif", "images/case-studies-3-darwindidit-.gif");
	createRollover("darwindidit4", "images/case-studies-4-darwindidit.gif", "images/case-studies-4-darwindidit-.gif");
	createRollover("darwindidit5", "images/case-studies-5-darwindidit.gif", "images/case-studies-5-darwindidit-.gif");
}
else if(loc.indexOf("services.htm") != -1) {
	createRollover("menu0", "images/menu-0-home.gif", "images/menu-0-home-over.gif");
	createRollover("menu1", "images/menu-1-stories.gif", "images/menu-1-stories-over.gif");
	createRollover("menu3", "images/menu-3-clients.gif", "images/menu-3-clients-over.gif");
	createRollover("menu4", "images/menu-4-contactus.gif", "images/menu-4-contactus-over.gif");
	
	createRollover("darwinquality", "images/services-quality.gif", "images/services-quality-over.gif");
}
else if(loc.indexOf("contact-us.htm") != -1) {
	createRollover("menu0", "images/menu-0-home.gif", "images/menu-0-home-over.gif");
	createRollover("menu1", "images/menu-1-stories.gif", "images/menu-1-stories-over.gif");
	createRollover("menu2", "images/menu-2-services.gif", "images/menu-2-services-over.gif");
	createRollover("menu3", "images/menu-3-clients.gif", "images/menu-3-clients-over.gif");
	
	createRollover("submenu0", "images/submenu-0-0-previous.gif", "images/submenu-0-0-previous-over.gif");
	createRollover("submenu1", "images/submenu-0-1-next.gif", "images/submenu-0-1-next-over.gif");
	createRollover("submenu2", "images/submenu-map.gif", "images/submenu-map-over.gif");
	createRollover("darwincountry1", "images/contactus-darwincountry.gif", "images/contactus-darwincountry-over.gif");
	createRollover("darwincountry3", "images/contactus-darwincountry.gif", "images/contactus-darwincountry-over.gif");
}
else if(loc.indexOf("clients.htm") != -1) {
	createRollover("menu0", "images/menu-0-home.gif", "images/menu-0-home-over.gif");
	createRollover("menu1", "images/menu-1-stories.gif", "images/menu-1-stories-over.gif");
	createRollover("menu2", "images/menu-2-services.gif", "images/menu-2-services-over.gif");
	createRollover("menu4", "images/menu-4-contactus.gif", "images/menu-4-contactus-over.gif");
	
	createRollover("clients1people1", "images/clients1-people1.gif", "images/clients1-people1-over.gif");
}
//if(loc.indexOf("index.htm") != -1) - always true for the home page
else
{
	createRollover("home0darwindidit0", "images/home0-darwindidit.gif", "images/home0-darwindidit-over.gif");
	createRollover("home0darwindidit1", "images/home0-darwindidit.gif", "images/home0-darwindidit-over.gif");
	createRollover("home0darwindidit2", "images/home0-darwindidit.gif", "images/home0-darwindidit-over.gif");
	createRollover("home0darwindidit3", "images/home0-darwindidit.gif", "images/home0-darwindidit-over.gif");
	createRollover("home0darwindidit4", "images/home0-darwindidit.gif", "images/home0-darwindidit-over.gif");
	createRollover("home0darwindidit5", "images/home0-darwindidit.gif", "images/home0-darwindidit-over.gif");
}
 
//Document script
window.onload = function () {
	if(document.getElementById("home")) {
		var pageset=false;
		if(readCookie('page0')) {
			for(i = 1; i < 50; i++ ) {
				var rand = Math.round(Math.random()*(homePageCount-2))+1;
				if(!readCookie('page'+rand)) {
					setHomePage(rand);
					createCookie('page'+rand, '1', 365);
					pageset = true;
					break;
				}
			}
			if(!pageset) {
				rand = Math.round(Math.random()*(homePageCount-2))+1;
				setHomePage(rand);
			}
		} else {
			createCookie('page0', '1', 365);
			setHomePage(0);
		}
		
		//Preload large images from the stories page
		var imageObject = new Image();
		var imageNames = new Array();
		imageNames[0] = "images/case-studies-1-background.gif";
		imageNames[1] = "images/case-studies-2-background.gif";
		imageNames[2] = "images/case-studies-3-background.gif";
		imageNames[3] = "images/case-studies-4-background.gif";
		imageNames[4] = "images/case-studies-5-background.gif";
		imageNames[5] = "images/case-studies-1-background-o.jpg";
		imageNames[6] = "images/case-studies-2-background-o.jpg";
		imageNames[7] = "images/case-studies-3-background-o.jpg";
		imageNames[8] = "images/case-studies-4-background-o.jpg";
		imageNames[9] = "images/case-studies-5-background-o.jpg";
		
		for(i=0; i<imageNames.length; i++) 
     		{
        		imageObject.src=imageNames[i];
     		}
	}
	
	if(document.getElementById("stories"))
	{
		var pageset = false;
		
		if (document.location.search.substr(1).length == 0 ||
			isNaN(parseInt(document.location.search.substr(1))) ||
			parseInt(document.location.search.substr(1)) > 5 ||
			parseInt(document.location.search.substr(1)) < 1
		)
		{
			for(i = 1; i < 50; i++ ) {
				var rand = Math.round(Math.random()*4)+1;

				if(!readCookie('spage'+rand)) {
					setStoriesPage(rand, true);
					createCookie('spage'+rand, '1', 365);
					pageset = true;
					break;
				}
			}
			if(!pageset) {
				rand = Math.round(Math.random()*4)+1;
				setStoriesPage(rand, true);
			}
		}
		else
		{
			var pageNum = parseInt(document.location.search.substr(1));
			setStoriesPage(pageNum, true);
		}
		for(k = 1; k < 6; k++) {
			m = (k<5) ? (k+1) : 1; 
			document.getElementById('storyMap'+k).onmouseover = setMapRollover(1, k);
			document.getElementById('storyMap'+k+'over').onmouseout = setMapRollover(0, k);
		}
		document.getElementById('darwinlogoStory4').onmouseover = setMapRollover(1, 4);

	}

	if(document.getElementById("contactus")) {
		setContactUsPage(1, true);
	}
	addRollovers();

}
