EJS.config({
	ext: 'jhtml'
});
var RSPSCJS = {
	all: 0,
	current: 0,
	animationID: 0,
	animationSpeed: 500,
	html: {},
	data: null,
	ejs: new EJS({url:'/templates/media/js/rspscjs.jhtml'}),
	rebuild: function(sid) {
		if(RSPSCJS.data[sid]) {
			RSPSCJS.current = 0;
			RSPSCJS.all = 0;
			RSPSCJS.html = {};
			for(var i in RSPSCJS.data[sid]) {
				RSPSCJS.html[RSPSCJS.all++] = RSPSCJS.ejs.render(RSPSCJS.data[sid][i]);
			}
			RSPSCJS.build();
			$.each(RSPSCJS.data, function(sid, data){
				$('#slider_menu_'+sid).removeClass('active').find('a').show().parent().find('span').hide();
			});
			$('#slider_menu_'+sid).addClass('active').find('a').hide().parent().find('span').show();
		}
		return false;
	},
	build: function(){
		$('#RSPSCJS_container').empty();
		for(var i=0,l=RSPSCJS.all,delta=0; i<l; i++) {
			delta = i + RSPSCJS.current;
			while(delta+1 >= l) {
				delta -= l;
			}
			while(delta < 0) {
				delta += l;
			}
			$('#RSPSCJS_container').append(RSPSCJS.html[delta]);
		}
		$('#RSPSCJS_container').children('div').each(RSPSCJS.show);
	},
	show: function(index, element){
		switch(index) {
			case 0:
				RSPSCJS.makeFirstConer(element);
			break;
			case 1:
				RSPSCJS.makeFirst(element);
			break;
			case 2:
				RSPSCJS.makeCenter(element);
			break;
			case 3:
				RSPSCJS.makeLast(element);
			break;
			case 4:
				RSPSCJS.makeLastConer(element);
			break;
			default:
				RSPSCJS.makeHidden(element);
		}
	},
	prev: function() {
		$('#RSPSCJS_container').children('div').each(function(index, element){
			var source = $(element).children('a:first').children('img');
			var target = $(element).next().children('a:first').children('img');
			switch(index) {
				case 0:
				case 1:
				case 2:
				case 3:
					RSPSCJS.animate(source, target);
				break;
				case 4:
					
				break;
			}
		});
		RSPSCJS.current--;
		RSPSCJS.build();
		return false;
	},
	next: function() {
		$('#RSPSCJS_container').children('div').each(function(index, element){
			var source = $(element).children('a:first').children('img');
			var target = $(element).prev().children('a:first').children('img');
			switch(index) {
				case 0:
					
				break;
				case 1:
				case 2:
				case 3:
				case 4:
					RSPSCJS.animate(source, target);
				break;
			}
		});
		RSPSCJS.current++;
		RSPSCJS.build();
		return false;
	},
	click: function(event) {
		event.preventDefault();
		RSPSCJS[event.data.type]();
	},
	makeFirstConer: function(element) {
		element.className = 'first coner';
		$(element).fadeIn(RSPSCJS.animationSpeed).find('img').css({height:'100px'});
		$(element).children('a:first').bind('click', {type:'prev'}, RSPSCJS.click);
	},
	makeFirst: function(element) {
		element.className = 'first';
		$(element).fadeIn(RSPSCJS.animationSpeed).find('img').css({height:'150px'});
		$(element).children('a:first').bind('click', {type:'prev'}, RSPSCJS.click);
	},
	makeCenter: function(element) {
		element.className = 'center';
		$(element).fadeIn(RSPSCJS.animationSpeed).find('img').css({height:'200px'});
	},
	makeLast: function(element) {
		element.className = 'last';
		$(element).fadeIn(RSPSCJS.animationSpeed).find('img').css({height:'150px'});
		$(element).children('a:first').bind('click', {type:'next'}, RSPSCJS.click);
	},
	makeLastConer: function(element) {
		element.className = 'last coner';
		$(element).fadeIn(RSPSCJS.animationSpeed).find('img').css({height:'100px'});
		$(element).children('a:first').bind('click', {type:'next'}, RSPSCJS.click);
	},
	makeHidden: function(element) {
		element.className = '';
		$(element).hide();
	},
	animate: function(source, target, callback) {
		var index = RSPSCJS.animationID++;
		$('body').prepend('<img id="rspscjs_shadow'+index+'" src="'+source.attr('src')+'" style="display: none; background-color: #ddd; border: solid 1px darkgray; position: static; top: 0px; z-index: 100000;" />');
		var shadow = $('#rspscjs_shadow'+index);
		if(shadow) {
			if(!callback || !callback.apply) callback = function(){}
			shadow.width(source.css('width')).height(source.css('height')).css('top', source.offset().top).css('left', source.offset().left).css('opacity', 0.9).show();
			shadow.css('position', 'absolute');
			shadow.animate( { width: target.innerWidth(), height: target.innerHeight(), top: target.offset().top, left: target.offset().left }, { duration: RSPSCJS.animationSpeed, complete: function(){ shadow.remove(); callback() } } );
		}
	}
}
