
document.write('<style type="text/css">');
document.write(".cs { display: none; }");
document.write('</style>');

window.onload = init;

function trace (s) {
	if (!$('debug')) {
		var o = document.createElement('pre');
		o.id = 'debug';
		o.style.fontSize = '10pt';
		o.style.position = 'absolute';
		o.style.top = '0px';
		o.style.left = '0px';
		o.style.textAlign = 'left';
		document.getElementsByTagName('body')[0].appendChild(o);
	}
	$('debug').innerHTML += s + '<br />';
}


var cats = {
	linkIds: ['',        'cat_link1', 'cat_link2', 'cat_link3', 'cat_link4', 'cat_link5', 'cat_link6', 'cat_link7', 'cat_link8'],
	copyIds: ['tc_home', 'cat_over1', 'cat_over2', 'cat_over3', 'cat_over4', 'cat_over5', 'cat_over6', 'cat_over7', 'cat_over8']
};
var showHomeCopyTimer = null;

function init () {
	// fix google toolbar auto fill colour
	// http://code.jenseng.com/google/
	var inputs = ['name', 'email', 'message'];
	for (var i = 0; i < inputs.length; i++) {
		if ($(inputs[i])) {
			$(inputs[i]).onpropertychange = function () {
				if (this.style.backgroundColor != '') {
					this.style.backgroundColor = '#64675c';
				}
			}
		}
	}

	// add the actions for the front page links
	for (var i = 0; i < cats.linkIds.length; i++) {
		var linkObj = $(cats.linkIds[i]);
		var copyObj = $(cats.copyIds[i]);
		if (linkObj && copyObj) {
			linkObj.onmouseover = function () {
				if (showHomeCopyTimer) {
					clearTimeout(showHomeCopyTimer);
				}
				var copyId = null;
				for (var i = 0; i < cats.linkIds.length; i++) {
					if (cats.linkIds[i] == this.id && cats.linkIds[i].length > 0) {
						copyId = cats.copyIds[i];
						break;
					}
				}
				if (!copyId) {
					return;
				}
				for (var i = 0; i < cats.copyIds.length; i++) {
					if (cats.copyIds[i] == copyId) {
						$(cats.copyIds[i]).style.display = 'block';
					}
					else {
						$(cats.copyIds[i]).style.display = 'none';
					}
				}
			}
			linkObj.onmouseout = function () {
				showHomeCopyTimer = setTimeout('showHomeCopy()', 100);
			}
		}
	}

	LeftContent.init();
	CaseStudies.init();
}

function showHomeCopy () {
	for (var i = 0; i < cats.copyIds.length; i++) {
		if (cats.copyIds[i] == 'tc_home') {
			$(cats.copyIds[i]).style.display = 'block';
		}
		else {
			$(cats.copyIds[i]).style.display = 'none';
		}
	}
}

function $(element) {
	if (typeof element == 'string' && element.length > 0) {
		element = document.getElementById(element);
	}
	return element;
}


LeftContent = {
	duration:	20,
	steps:		15,
	obj:		null,
	baseH:		0,
	smallH:		0,
	scrollers:	null,
	scrolling:	false,
	contHeight: 0,
	init:		function () {
		var divs = document.getElementsByTagName('div');
		var c1 = 'leftContent';
		for (var i = 0; i < divs.length; i++) {
			if (new RegExp('\\b' + c1 + '\\b').test(divs[i].className)) {
				LeftContent.obj = divs[i];
				i = divs.length;
			}
		}
		if (!LeftContent.obj) {
			return;
		}
		LeftContent.baseH = LeftContent.obj.offsetHeight;
		LeftContent.smallH  = LeftContent.baseH - 18;
	},
	resize:		function () {
		// get the height of the content
		var h = 0;
		var d = LeftContent.obj;
		for (i = 0; i < d.childNodes.length; i++) {
			var j = d.childNodes[i].offsetHeight;
			if (!isNaN(j)) {
				h += j;
			}
		}
		if (h > LeftContent.baseH) {
			LeftContent.obj.style.height = LeftContent.smallH + 'px';
			LeftContent.show();
		}
		else {
			LeftContent.obj.style.height = LeftContent.baseH + 'px';
			LeftContent.hide();
		}
		LeftContent.contHeight = h;
	},
	up:			function () {
		if (LeftContent.scrolling) {
			return false;
		}
		var o = LeftContent.obj;
		var current = o.scrollTop;
		var target = current - LeftContent.smallH + 20; // give 20 pixels grace
		if (target < 0) {
			target = 0;
		} 
		LeftContent.slide(target);
		return false;
	},
	down:		function () {
		if (LeftContent.scrolling) {
			return false;
		}
		var o = LeftContent.obj;
		var current = o.scrollTop;
		var target = current + LeftContent.smallH - 20; // give 20 pixels grace
		var maxScrollHeight = LeftContent.contHeight - LeftContent.smallH;
		if (target > maxScrollHeight) {
			target = maxScrollHeight;
		}
		LeftContent.slide(target);
		return false;
	},
	slide:		function (target) {
		LeftContent.scrolling = true;
		var current = LeftContent.obj.scrollTop;
		if (target < current) {
			var increment = Math.round((target - current - LeftContent.steps) / LeftContent.steps);
			if (increment == 0) {
				increment = -1;
			}
			var location = current + increment;
		}
		else if (target > current) {
			var increment = Math.round((target - current) / LeftContent.steps);
			if (increment == 0) {
				increment = 1;
			}
			var location = current + increment;
		}
		else if (target == current) {
			LeftContent.scrolling = false;
			return;
		}
		LeftContent.obj.scrollTop = location;
		setTimeout('LeftContent.slide(' + target + ')', LeftContent.duration);
	},
	show:		function () {
		if (LeftContent.scrollers) {
			LeftContent.scrollers.style.display = 'block';
			return;
		}
		var o = document.createElement('div');
		o.id = 'leftScroller';
		var up = document.createElement('a');
		up.href = '#';
		up.onclick = LeftContent.up;
		up.id = 'leftScrollUp';
		var dn = document.createElement('a');
		dn.href = '#';
		dn.onclick = LeftContent.down;
		dn.id = 'leftScrollDown';
		o.appendChild(up);
		o.appendChild(dn);
		LeftContent.scrollers = o;
		LeftContent.obj.parentNode.appendChild(LeftContent.scrollers);
	},
	hide:		function () {
		if (LeftContent.scrollers) {
			LeftContent.scrollers.style.display = 'none';
		}
	}
}

CaseStudies = {
	layerPrefix: 'cs',
	linkPrefix:	'csl',
	xmlfile:	'case_studies.xml',
	imgpath:	'images/casestudies/',
	data: 		null,
	loader:		'loading',
	loaderImg:	'images/loading.gif',
	wrapper:	'wrapper',
	container:	'casestudy',
	holder1:	'holder1',
	holder2:	'holder2',
	nextBtn:	'nextArrow',
	prevBtn:	'prevArrow',
	buffer:		5, // images either side
	layers:		new Array(),
	images:		new Array(), // references to the data object
	loading:	false,
	loadtimer:	null,
	current:	{
		layer: 0,
		image: 0,
		buffer: 0,
		holder: 1,
		slide: 'none'
	},
	inshow:		false,
	duration:	20,
	steps:		7,
	moving:		false,
	init:		function () {
		CaseStudies.prepData();

		// sort the layers out
		var divs = document.getElementsByTagName('div');
		var regex = new RegExp('^'+ CaseStudies.layerPrefix + '_(\\w+)_(\\d+)$');
		var ids = new Array();
		for (var i = 0; i < divs.length; i++) {
			if (regex.test(divs[i].id)) {
				ids[ids.length] = divs[i].id;
				var l = CaseStudies.layers.length;
				CaseStudies.layers[l] = divs[i];
			}
		}
		if (CaseStudies.layers.length == 0) {
			return;
		}

		// show the first layer
		CaseStudies.layers[0].style.display = 'block';

		// put the data in order
		CaseStudies.data.addIds(ids);

		// sort the links out
		var links = document.getElementsByTagName('a');
		var regex = new RegExp('^'+ CaseStudies.linkPrefix + '_(\\w+)_(\\d+)$');
		for (var i = 0; i < links.length; i++) {
			if (regex.test(links[i].id)) {
				links[i].onclick = CaseStudies.linkClicked;
				links[i].onkeydown = CaseStudies.linkClicked;
			}
		}

	    var con = CaseStudies.xhcon();
	    if (!con) return;

		function conComplete(oXML) {
			CaseStudies.processXML(oXML);
		}
		con.connect(CaseStudies.xmlfile, 'GET', Math.random(), conComplete);

		// set up the container objects
		CaseStudies.wrapper = $(CaseStudies.wrapper);
		if (!CaseStudies.wrapper) {
			return;
		}

		var o = document.createElement('a');
		o.id = CaseStudies.nextBtn;
		o.href = '#';
		o.onclick = CaseStudies.next;
		CaseStudies.nextBtn = o;

		var o = document.createElement('a');
		o.id = CaseStudies.prevBtn;
		o.href = '#';
		o.onclick = CaseStudies.prev;
		CaseStudies.prevBtn = o;

		var o = document.createElement('div');
		o.id = CaseStudies.container;
		CaseStudies.container = o;

		var o = document.createElement('div');
		o.id = CaseStudies.holder1;
		CaseStudies.holder1 = o;

		var o = document.createElement('div');
		o.id = CaseStudies.holder2;
		CaseStudies.holder2 = o;

		var o = document.createElement('img');
		o.id = CaseStudies.loader;
		o.alt = '';
		CaseStudies.loader = o;
		CaseStudies.loader.src = CaseStudies.loaderImg;

		CaseStudies.nextBtn.style.visibility = 'visible';
		CaseStudies.prevBtn.style.visibility = 'hidden';
		CaseStudies.container.style.visibility = 'hidden';
		CaseStudies.holder1.style.visibility = 'hidden';
		CaseStudies.holder2.style.visibility = 'hidden';
		CaseStudies.loader.style.visibility = 'hidden';

		CaseStudies.wrapper.appendChild(CaseStudies.nextBtn);
		CaseStudies.wrapper.appendChild(CaseStudies.prevBtn);
		CaseStudies.wrapper.appendChild(CaseStudies.container);
		CaseStudies.wrapper.appendChild(CaseStudies.loader);
		CaseStudies.container.appendChild(CaseStudies.holder1);
		CaseStudies.container.appendChild(CaseStudies.holder2);

		LeftContent.resize();
	},
	showInitial: function () {
		CaseStudies.inshow = false;
		CaseStudies.nextBtn.style.visibility = 'visible';
		CaseStudies.prevBtn.style.visibility = 'hidden';
		CaseStudies.container.style.visibility = 'hidden';
		CaseStudies.holder1.style.visibility = 'hidden';
		CaseStudies.holder2.style.visibility = 'hidden';
		CaseStudies.loader.style.visibility = 'hidden';
		var o = document.getElementById('right');
		for (var i = 0; i < o.childNodes.length; i++) {
			if (o.childNodes[i].style) {
				o.childNodes[i].style.display = '';
			}
		}

		CaseStudies.layers[0].style.display = 'block';
		for (var i = 1; i < CaseStudies.layers.length; i++) {
			CaseStudies.layers[i].style.display = 'none';
		}
		CaseStudies.layers[0].parentNode.scrollTop = 0;
		LeftContent.resize();
	},
	hideInitial: function () {
		CaseStudies.inshow = true;
		CaseStudies.container.style.visibility = 'visible';
		var o = document.getElementById('right');
		for (var i = 0; i < o.childNodes.length; i++) {
			if (o.childNodes[i].style) {
				o.childNodes[i].style.display = 'none';
			}
		}
	},
	loadCaseStudy:	function (id) {
		if (!CaseStudies.inshow) {
			CaseStudies.hideInitial();
		}

		// for jumping directly to a case study
		var d = CaseStudies.data;
		var c = CaseStudies.current;
		var layer = 0;
		var buffer = CaseStudies.buffer + 0;
		for (var i = 0; i < d.ids.length; i++) {
			if (d.ids[i] == id) {
				layer = i;
				if (i == 0) {
					buffer = 0;
				}
				break;
			}
		}

		c.layer = layer;
		c.buffer = buffer;
		c.image = 0;
		c.slide = 'none';
		c.holder = 1;

		for (var i = 0; i < CaseStudies.layers.length; i++) {
			CaseStudies.layers[i].style.display = (CaseStudies.layers[i].id == d.ids[CaseStudies.current.layer]) ? 'block' : 'none';
		}
		CaseStudies.layers[0].parentNode.scrollTop = 0;
		LeftContent.resize();

		// process images
		CaseStudies.loadImages();
	},
	showCaseStudy: function () {
		if (!CaseStudies.inshow) {
			CaseStudies.hideInitial();
		}

		// used to start the case studies
		var d = CaseStudies.data;
		if (d.ids.length == 0) {
			return;
		}
		CaseStudies.loadCaseStudy(d.ids[0]);
	},
	setButtons:		function() {
		var d = CaseStudies.data;
		var c = CaseStudies.current;
		var p = CaseStudies.prevBtn;
		var n = CaseStudies.nextBtn
		//if (c.image == 0 && c.layer == 0) {
		if (!CaseStudies.inshow) {
			p.style.visibility = 'hidden';
		}
		else {
			p.style.visibility = 'visible';
		}
		if (c.image == d.images[d.ids.length - 1].length - 1 && c.layer == d.ids.length - 1) {
			n.style.visibility = 'hidden';
		}
		else {
			n.style.visibility = 'visible';
		}
	},
	next:	function () {
		if (!CaseStudies.inshow) {
			CaseStudies.showCaseStudy();
			return false;
		}
		if (CaseStudies.moving || CaseStudies.loading) {
			return false;
		}

		var d = CaseStudies.data;

		var oldLayer = layer;
		var layer = CaseStudies.current.layer;
		var image = CaseStudies.current.image;

		image++;
		if (image >= d.images[layer].length) {
			image = 0;
			CaseStudies.layers[0].parentNode.scrollTop = 0;
			layer++;
		}
		if (layer >= d.ids.length) {
			return;
		}
		CaseStudies.current.layer = layer;
		CaseStudies.current.image = image;
		CaseStudies.current.slide = 'left';

		for (var i = 0; i < CaseStudies.layers.length; i++) {
			CaseStudies.layers[i].style.display = (CaseStudies.layers[i].id == d.ids[CaseStudies.current.layer]) ? 'block' : 'none';
		}
		if (oldLayer != layer) {
			LeftContent.resize();
		}

		// process images
		CaseStudies.loadImages();
		return false;
	},
	prev:	function () {
		if (CaseStudies.moving || CaseStudies.loading) {
			return false;
		}

		var d = CaseStudies.data;

		var oldLayer = layer;
		var layer = CaseStudies.current.layer;
		var image = CaseStudies.current.image;

		image--;
		if (image < 0) {
			CaseStudies.layers[0].parentNode.scrollTop = 0;
			layer--;
			if (layer < 0) {
				CaseStudies.showInitial();
				return false;
			}
			image = d.images[layer].length - 1;
		}

		CaseStudies.current.layer = layer;
		CaseStudies.current.image = image;
		CaseStudies.current.slide = 'right';

		for (var i = 0; i < CaseStudies.layers.length; i++) {
			CaseStudies.layers[i].style.display = (CaseStudies.layers[i].id == d.ids[CaseStudies.current.layer]) ? 'block' : 'none';
		}
		CaseStudies.layers[0].parentNode.scrollTop = 0;
		if (oldLayer != layer) {
			LeftContent.resize();
		}

		// process images
		CaseStudies.loadImages();
		return false;
	},
	loadImages:	function () {
		var images = new Array();
		var d = CaseStudies.data;
		var c = CaseStudies.current;
		var n = null;

		if ((c.layer == 0 && c.image > 0) || c.layer != 0) {
			var currentImg = c.image - 1;
			var prevLayer = c.layer;
			var prevImages = new Array();
			// preload previous images
			for (var i = 0; i < CaseStudies.buffer; i++) {
				if (currentImg < 0) {
					prevLayer--;
					if (prevLayer < 0) {
						break;
					}
					currentImg = d.images[prevLayer].length - 1;
				}
				if (!d.images[prevLayer][currentImg].obj) {
					d.images[prevLayer][currentImg].obj = document.createElement('img');
					d.images[prevLayer][currentImg].obj.onload = CaseStudies.imageLoaded;
					d.images[prevLayer][currentImg].obj.src = d.images[prevLayer][currentImg].url;
				}
				prevImages[prevImages.length] = {id: prevLayer, img: currentImg};
				currentImg--;
			}
			for (var i = (prevImages.length - 1); i >= 0; i--) {
				images[images.length] = prevImages[i];
			} 
		}

		// preload current image
		if (!d.images[c.layer][c.image].obj) {
			d.images[c.layer][c.image].obj = document.createElement('img');
			d.images[c.layer][c.image].obj.onload = CaseStudies.imageLoaded;
			d.images[c.layer][c.image].obj.src = d.images[c.layer][c.image].url;
		}
		CaseStudies.current.buffer = images.length;
		images[images.length] = {id: c.layer, img: c.image};

		// preload next images
		var currentImg = c.image + 1;
		var nextLayer = c.layer; 
		for (var i = 0; i < CaseStudies.buffer; i++) {
			if (currentImg >= d.images[nextLayer].length) {
				currentImg = 0;
				nextLayer++;
			}
			if (nextLayer >= d.ids.length) {
				break;
			}
			if (!d.images[nextLayer][currentImg].obj) { 
				var o = document.createElement('img');
				d.images[nextLayer][currentImg].obj = document.createElement('img');
				d.images[nextLayer][currentImg].obj.onload = CaseStudies.imageLoaded;
				d.images[nextLayer][currentImg].obj.src = d.images[nextLayer][currentImg].url;
			}
			images[images.length] = {id: nextLayer, img: currentImg};
			currentImg++;
		}

		CaseStudies.images = images;
		CaseStudies.checkLoading();
	},
	doneLoading:	function () {
		CaseStudies.loading = false;
		CaseStudies.loader.style.visibility = 'hidden';

		var images = CaseStudies.images;
		var d = CaseStudies.data;
		var divs = new Array();
		var holder = (CaseStudies.current.holder == 1) ? CaseStudies.holder2 : CaseStudies.holder1;
		var oldholder = (CaseStudies.current.holder == 1) ? CaseStudies.holder1 : CaseStudies.holder2;


		while (holder.childNodes.length > 0) {
			holder.removeChild(holder.childNodes[0]);
		}
		for (var i = 0; i < images.length; i++) {
			var o = d.images[images[i].id][images[i].img].obj.cloneNode(true);
			holder.appendChild(o);
			var w = holder.offsetWidth + o.offsetWidth;
			holder.style.width = w + 'px';
			divs[i] = o;
		}

		CaseStudies.setButtons();
		// do the slide
		if (CaseStudies.current.slide == 'left') {
			var px = 0;
			var l = CaseStudies.current.buffer - 1;
			for (var i = 0; i < divs.length; i++) {
				if (i < l) {
					px -= divs[i].offsetWidth;
				}
			}
			var topx = px - divs[CaseStudies.current.buffer].offsetWidth;


			holder.style.left = px + 'px';
			// make the new holder visible
			holder.style.visibility = 'visible';
			oldholder.style.visibility = 'hidden';
			CaseStudies.current.holder = (CaseStudies.current.holder == 1) ? 2 : 1;
			CaseStudies.slide(topx);
		}
		else if (CaseStudies.current.slide == 'right') {
			var px = 0;
			var l = CaseStudies.current.buffer - 1;
			for (var i = 0; i < divs.length; i++) {
				if (i <= l) {
					px -= divs[i].offsetWidth;
				}
			}
			var topx = px - divs[CaseStudies.current.buffer].offsetWidth;

			holder.style.left = topx + 'px';
			// make the new holder visible
			holder.style.visibility = 'visible';
			oldholder.style.visibility = 'hidden';
			CaseStudies.current.holder = (CaseStudies.current.holder == 1) ? 2 : 1;
			CaseStudies.slide(px);
		}
		else {
			var px = 0;
			var l = CaseStudies.current.buffer;
			for (var i = 0; i < l; i++) {
				px -= divs[CaseStudies.current.buffer - i].offsetWidth;
			}
			holder.style.left = px + 'px';

			// make the new holder visible
			holder.style.visibility = 'visible';
			oldholder.style.visibility = 'hidden';
			while (oldholder.childNodes.length > 0) {
				oldholder.removeChild(oldholder.childNodes[0]);
			}
			CaseStudies.current.holder = (CaseStudies.current.holder == 1) ? 2 : 1;
		}
	},
	checkLoading:	function () {
		CaseStudies.loading = true;
		if (CaseStudies.loadtimer) {
			CaseStudies.loader.style.visibility = 'visible';
		}
		var images = CaseStudies.images;
		var d = CaseStudies.data;
		//for (var i = 0; i < images.length; i++) {
		for (var i = 0; i <= CaseStudies.current.buffer; i++) {
			if (d.images[images[i].id][images[i].img].obj.nodeName == 'IMG') {
				CaseStudies.loadtimer = setTimeout('CaseStudies.checkLoading()', 500);
				return;
			}
		}
		clearTimeout(CaseStudies.loadtimer);
		CaseStudies.doneLoading();
	},
	imageLoaded:	function () {
		var div = document.createElement('div');
		div.appendChild(this);

		var images = CaseStudies.data.images;
		for (var i = 0; i < images.length; i++) {
			for (var j = 0; j < images[i].length; j++) {
				if (images[i][j].obj == this) {
					images[i][j].obj = div;
					return;
				}
			}
		}
	},
	linkClicked: function () {
		var id = this.id;
		// replace the link prefix characters with the layer prefix chars
		id = CaseStudies.layerPrefix + id.substr(CaseStudies.linkPrefix.length);

		if (CaseStudies.data.getImages(id).length > 0) {
			CaseStudies.loadCaseStudy(id);
		}
		else {
			alert('No data');
		}
		return false;
	},
	slide:		function (target) {
		CaseStudies.moving = true;
		var holder = (CaseStudies.current.holder == 1) ? CaseStudies.holder1 : CaseStudies.holder2;
		var current = parseInt(holder.style.left);
		current = isNaN(current) ? 0 : current;
		if (target < current) {
			var increment = Math.round((target - current - CaseStudies.steps) / CaseStudies.steps);
			if (increment == 0) {
				increment = -1;
			}
			var location = current + increment;
		}
		else if (target > current) {
			var increment = Math.round((target - current) / CaseStudies.steps);
			if (increment == 0) {
				increment = 1;
			}
			var location = current + increment;
		}
		else if (target == current) {
			CaseStudies.moving = false;
			return;
		}
		holder.style.left = location + 'px';
		setTimeout('CaseStudies.slide(' + target + ')', CaseStudies.duration);
	},
	getNodeValue: function (scope, node) {
		return scope.getElementsByTagName( node )[0].firstChild.nodeValue;
	},
	processXML:	function (oXML) {
		var xml = oXML.responseXML;
		var divs = xml.getElementsByTagName('div');
		for (var i = 0; i < divs.length; i++) {
			var id = divs[i].getAttribute('id');
			var images = new Array();
			for (var j = 0; j < divs[i].childNodes.length; j++) {
				if (divs[i].childNodes[j].nodeName == 'img') {
					images[images.length] = divs[i].childNodes[j].getAttribute('src');
				}
			}
			CaseStudies.data.addImages(id, images);
		}
		CaseStudies.data.clean();
	},
	xhcon:		function () {
		var xmlhttp, bComplete = false;
		try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); }
		catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); }
		catch (e) { try { xmlhttp = new XMLHttpRequest(); }
		catch (e) { xmlhttp = false; }}}
		if (!xmlhttp) return null;
		this.connect = function(sURL, sMethod, sVars, fnDone) {
			if (!xmlhttp) return false;
			bComplete = false;
			sMethod = sMethod.toUpperCase();
	
			try {
				if (sMethod == "GET") {
					xmlhttp.open(sMethod, sURL+"?"+sVars, true);
					sVars = "";
				}
				else {
					xmlhttp.open(sMethod, sURL, true);
					xmlhttp.setRequestHeader("Method", "POST "+sURL+" HTTP/1.1");
					xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
				}
				xmlhttp.onreadystatechange = function() {
					if (xmlhttp.readyState == 4 && !bComplete) {
						bComplete = true;
						fnDone(xmlhttp);
					}
				};
				xmlhttp.send(sVars);
			}
			catch(z) { return false; }
			return true;
		};
		return this;
	},
	prepData:	function () {
		// prep the data object
		CaseStudies.data = {
			images: new Array(),
			ids:	new Array(),
			addIds:	function (arrIds) {
				var d = CaseStudies.data;
				var c = arrIds.length;
				for (var i = 0; i < c; i++) {
					var l  = d.ids.length;
					d.ids[l] = arrIds[i];
					d.images[l] = new Array();
				}
			},
			addImages: function (id, images) {
				var d = CaseStudies.data;
				for (var i = 0; i < d.ids.length; i++) {
					if (d.ids[i] == id) {
						for (var j = 0; j < images.length; j++) {
							d.images[i][j] = {
								url: CaseStudies.imgpath + images[j],
								obj: null
							}
						}
					}
				}
			},
			getImages: function (id) {
				var d = CaseStudies.data;
				for (var i = 0; i < d.ids.length; i++) {
					if (d.ids[i] == id) {
						return d.images[i];
					}
				}
				return new Array();
			},
			clean: function () {
				// removes all the ids without associated images
				var d = CaseStudies.data;
				var temp_ids = new Array();
				var temp_img = new Array();
				for (var i = 0; i < d.ids.length; i++) {
					if (d.images[i].length > 0) {
						var l = temp_ids.length;
						temp_ids[l] = d.ids[i];
						temp_img[l] = d.images[i];
					}
				}
				d.ids = temp_ids;
				d.images = temp_img;
			}
		}
	}
}