if (typeof(ecarlist) === 'undefined') ecarlist = {};
ecarlist.specials = {
	conf: {
		effect: 'fade', 
		fadeOutSpeed: "slow", 
		rotate: true,
		onBeforeClick: function(event, tab_index){
			var ele = this.getCurrentPane();
			var par = ele.parent().attr('id');
			ecarlist.specials.onBeforeClick(event, tab_index, this);
		},
		onClick: function(event, tab_index){
			ecarlist.specials.onClick(event, tab_index);
		}
	},
	conf_s: {
		interval: 4000,
		autoplay: true,
		clickable: false,
		next: '.specials_flash_next',
		prev: '.specials_flash_prev'
	},
	slide_effects: {
	},
	text_effects: {
		'line_by_line': function(event, tab_index, ele, tabs){
			var tabs = ecarlist.specials.s_tabs.tabs();
			tabs.stop();
			var ele = tabs.getCurrentPane();
			var $children = ele.find('.special_display_line_by_line').children();
			var i = 0;
			var inter = setInterval(function(){
				$children.eq(i).fadeIn('fast');
				i++;
				if ($children.length == i){
					clearInterval(inter);
					if (!($ec('.specials_flash').hasClass('specials_flash_paused'))){
						ecarlist.specials.restart_specials = setTimeout(function(){
							tabs.play();
							if (tabs.getPanes().length > 1){
								ecarlist.specials.reset_effects = setTimeout(function(){
									$children.hide();
								}, 1000);
							}
						}, 3000);
					}
				}
			}, 150);
		}
	},
	onBeforeClick: function(event, tab_index, tabs){
		clearTimeout(ecarlist.specials.reset_effects);
		clearTimeout(ecarlist.specials.restart_specials);
		var conf = tabs.getConf();
		if (typeof(this.conf_e[tab_index]) === 'undefined' || typeof(this.conf_e[tab_index].slide_effect) === 'undefined'){
			conf.effect = ecarlist.specials.conf.effect;
			return;
		}

		var slide_effect = this.conf_e[tab_index].slide_effect,
			func;
		
		if ($ec.isFunction(slide_effect)){
			$ec.tools.tabs.addEffect('custom', slide_effect);
			conf.effect = 'custom';
		} else if ($ec.isFunction(this.slide_effects[slide_effect])){
			conf.effect = slide_effect;
		}
		return true;
	},
	onClick: function(event, tab_index){
		if (typeof(this.conf_e[tab_index]) === 'undefined' || typeof(this.conf_e[tab_index].text_effect) === 'undefined'){
			return;
		}

		var click_func = this.conf_e[tab_index].text_effect;
		
		if ($ec.isFunction(click_func)){
			click_func(event, tab_index);
		} else if ($ec.isFunction(this.text_effects[click_func])){
			this.text_effects[click_func](event, tab_index);
		}
	},
	onPause: function(event){
		clearTimeout(ecarlist.specials.restart_specials);
		clearTimeout(ecarlist.specials.reset_effects);
	},
	controlsHide: null,
	controlsShow: null,
	controlsEnter: function(){
		clearTimeout(ecarlist.specials.controlsHide);
		ecarlist.specials.controlsShow = setTimeout(function(){
			$ec('.specials_flash_controls').stop().fadeTo('fast', 1);
		}, 250);
	},
	controlsLeave: function(){
		clearTimeout(ecarlist.specials.controlsShow);
		ecarlist.specials.controlsShow = setTimeout(function(){
			$ec('.specials_flash_controls').stop().fadeTo('fast', 0);
		}, 250);
	},
	restart_specials: null,
	reset_effects: null,
	pauseButton: function(){
		var tabs = ecarlist.specials.s_tabs.tabs();
		if ($ec(this).hasClass('specials_flash_paused')){
			tabs.play();
			$ec(this).removeClass('specials_flash_paused');
		} else {
			tabs.stop();
			clearTimeout(ecarlist.specials.restart_specials);
			clearTimeout(ecarlist.specials.reset_effects);
			$ec(this).addClass('specials_flash_paused');
		}
		return false;
	},
	init: function(tab_conf, slide_conf, effect_conf){

		var t_conf = $ec.extend({}, this.conf);
		t_conf = $ec.extend(t_conf, tab_conf);

		var s_conf = $ec.extend({}, this.conf_s);
		s_conf = $ec.extend(s_conf, slide_conf);

		this.conf_e = $ec.extend({}, effect_conf);

		for (e in this.slide_effects){
			$ec.tools.tabs.addEffect(e, this.slide_effects[e]);
		};
	
		ecarlist.specials.s_tabs = $ec(".specials_flash_tabs").tabs(".specials_flash_item", t_conf).slideshow(s_conf);
		if ($ec(".specials_flash_item").length > 1){
			$ec('.specials_flash_container').mouseenter(this.controlsEnter);
			$ec('.specials_flash_controls').mouseenter(this.controlsEnter);
			$ec('.specials_flash_container').mouseleave(this.controlsLeave);
			$ec('.specials_flash_controls').mouseleave(this.controlsLeave);
		}

		$ec('.specials_flash_pause').click(this.pauseButton);
		
		var images = {};
		var special_images = $ec('.specials_flash_item');
		var i = 0;
		var preload_interval = setInterval(function(){
			img_src = $ec(special_images[i]).css('background-image').replace('url(','').replace(')','');
			images[i] = $ec('<img/>');
			images[i].src = img_src;
			i++;
			if (i >= special_images.length){
				clearInterval(preload_interval);
			}
		}, 1000);
	}
};

