jQuery(function() {

	var t1 = null;
	var t2 = null;
	var caseList = null;
	var caseHtml = [];

	jQuery('div#slideshow').html('');

	function swapImage(i) {
			jQuery('div#case').removeClass('bringToTop');
			jQuery('div#caseTemp').css('opacity',0).html(caseHtml[i]);
			jQuery('div#caseTemp img').attr('src',caseList[i]['image']);
			jQuery('div#caseBg').show().animate({'opacity': '0.5'},100,null,function() {

				jQuery('div#case').animate({'opacity': '0'},80,null,function() {
					jQuery(this).css('opacity',0)
				});
				jQuery('div#caseTemp').animate({'opacity': '1'},80,null,function() {
					jQuery('div#case a').unbind();
					jQuery('div#case').html(jQuery('div#caseTemp').html()).css('opacity',1).addClass('bringToTop');
					jQuery('div#case a').click(function() {
						window.open(this.href);
						return false;
					});
					jQuery('div#caseTemp').empty();
				});

				t2 = setTimeout(function() {
					jQuery('div#caseBg').animate({'opacity': '0'},100,null,function() {
						jQuery(this).hide();
					});
				},50);

			});

		t1 = setTimeout(function() {
			swapCycle(i,true);
		},4500);
	}

	function swapCycle(i,back) {
		back ? i-- : i++;
		if(i == caseList.length) i = 0;
		if(i < 0) i = caseList.length-1;
		var arr = caseList[i];
		if((arr != null) && (arr.ommit == null)) {
			jQuery('img#caseLoader').attr('src',arr.image).load(function() {
				jQuery('img#caseLoader').unbind();
				swapImage(i);
			}).error(function() {
				arr.ommit = true;
				jQuery('img#caseLoader').unbind();
				swapCycle(i,back);
			});
		} else {
			swapCycle(i,back);
		}
	}

	function caseWork(arr, start) {
		jQuery('div#slideshow').html('<div id="case"></div><div id="caseTemp"></div><div id="caseBg"></div><img id="caseLoader" />');
		jQuery('div#caseBg').css('opacity',0);
		caseList = arr;
		for(i in caseList) {
			if(caseList[i]['ommit'] == null) {
				caseHtml[i] = genCase(caseList[i]);
			}
		}
		swapCycle(start, false);
	}

	jQuery('div#slideshow').ajaxSubmit({
		url: '/case-slideshow/',
		type: 'post',
		dataType: 'json',
		success: function(re,st) {
			caseWork(re.arr, re.start);
		}, error: function(a,b) {
		}
	});

	function genCase(arr) {
		if((arr.name.length == 0) || (arr.image.length == 0) || (arr.link.length == 0)) return null;
		var html = '<img src="" alt="'+arr.name+'" /><p><sub></sub><sup><dfn><strong><a href="http://'+arr.link+'">&raquo; '+arr.name+'</a></strong>';
		if((arr.descr.length > 0) || (arr.date.length > 0)) html += '<em>';
		html += arr.descr;
		if((arr.descr.length > 0) && (arr.date.length > 0)) html += ' | ';
		html += arr.date;
		if((arr.descr.length > 0) || (arr.date.length > 0)) html += '</em>';
		html += '</dfn></sup>';
		html += '<span><small><a href="http://'+arr.link+'">'+arr.link+'</a></small></span></p>';
		return html;
	}

});
