
/**
 * width/height: This is the width of the content INSIDE each tab
 */
function Slider(id, opt) {
	var obj = $('#' + id);
	
	if(!opt) opt = {};
	if(!opt.width) opt.width = obj.width();//100;
	if(!opt.height) opt.height = obj.height();//100;
	if(!opt.tabWidth) opt.tabWidth = 0;
	if(!opt.initTabId) opt.initTabId = 0;
	
	this.slides = [];	
	this.id = id;
	this.opt = opt;
	this._timeoutId;
	this._activeSlide;
	this._mouseOver = false;
	
	obj.addClass('a-space-slider');
}
Slider.VIDEO_FLASH = 'video_flash';
Slider.VIDEO_HTML = 'video_html';

Slider.prototype.addSlide = function(obj) {
	obj.slider = this;
	obj.id = this.slides.length;
	this.slides.push(obj);
}
Slider.prototype.getVideoDisplayFormat = function() {
	var v = document.createElement('video');
	var f = v.play;
	delete v;
	
	if(f && !$.browser.mozilla && !$.browser.opera) return Slider.VIDEO_HTML;
	return Slider.VIDEO_FLASH;
}
Slider.prototype.isImage = function(str) {
	var ext = str.substr(str.lastIndexOf('.') + 1);
	switch(ext) {
		case 'jpg':
		case 'png':
		case 'gif':
			return true;
		break;
	}
	
	return false;
}
Slider.prototype.nextSlide = function() {
	var o = this.slides[this._activeSlide.id + 1];
	if(!o) o = this.slides[0];
	this.setActivateSlide(o);
}
Slider.prototype.setActivateSlide = function(obj) {
	var time = Slide.DEFAULT_TIME;
	if(obj.opt) if(obj.opt.time) time = obj.opt.time;
	this._activeSlide = obj;
	obj.activate();
	var ptr = this;
	if(this._timeoutId >= 0) clearTimeout(this._timeoutId);
	if(!this._mouseOver) this._timeoutId = setTimeout(function() {ptr.nextSlide()}, time * 1000);
}
Slider.prototype.render = function() {
	this.opt.width = this.opt.width - (this.slides.length - 1) * this.opt.tabWidth;
	
	var str = '';
	
	for (i = 0; i < this.slides.length; ++i) {
		var oddEven = 'even';
		if((i + 2) % 2) oddEven = 'odd';
		var obj = this.slides[i];
		str += '<li id="'+this.id+'-slide-'+obj.id+'" class="'+oddEven+'" style="left: '+(obj.id * this.opt.tabWidth)+'px">';
		str += '    <div class="tab">';
		str += '		<div class="arrows"></div>';
		//old code that would use fancy vertical css
		
		if(this.isImage(obj.label) == true) {
			str += '	<img src="'+obj.label+'" />';
		} else {
      if(obj.opt && obj.opt.tabImage)
      str += '<img src="' + obj.opt.tabImage + '" />';
			/*if(($.browser.msie) && ($.browser.version < 9)) {
				if(obj.opt) if(obj.opt.tabImage) str += ' <div class="op-fix"><span style="background:url('+obj.opt.tabImage+') no-repeat; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\''+obj.opt.tabImage+'\', sizingMethod=\'scale\'); display:block; width:39px; height:250px;"></span></div>';
			} else {
				str += '    <p>'+obj.label+'</p>';
			}*/
		}		
		
		str += '    </div>';
		var style = '';
		//if(obj.opt) if(obj.opt.width) style = ' style="width:'+obj.opt.width+'px;"';
		str += '    <div class="content"'+style+'>';
		
		/**
		 * set up an A tag for the video (if desired)
		 */
		if(obj.opt) {
			if(obj.opt.link) {
				var t = '';
				if(obj.opt.link.target)  t = 'target="'+obj.opt.link.target+'"';
				if(obj.opt.link.href) str += '<a class="vid-link" href="'+obj.opt.link.href+'" '+t+'></a>';
			}
		}
		
		var pos = obj.content.lastIndexOf('.') + 1;
		if(obj.isVideo()) {
			if(this.getVideoDisplayFormat() == Slider.VIDEO_HTML) {
				str += '<video preload="load" type="video/mp4" width="'+(this.opt.width - this.opt.tabWidth)+'" height="'+this.opt.height+'" src="'+obj.getVideo().src+'" poster="images" tabindex="0">Your browser does not support the video tag.</video>';
			} else {
				str += '<div id="slider-vid-'+obj.id+'"></div>';
			}
		} else {
			str += obj.content;
		}
		if(obj.description) {		
			str += '		<div class="info">';
			str += '			<div class="collapse">';
			str += '				<div><img src="/images/jom4/a-space/arrow-down.png" width="7" height="4" /></div>';
			str += '			</div>';
			str += '			<div class="info-bg"></div>';
			str += '			<p>'+obj.description+'</p>';
			str += '		</div>';
		}
		str += '    </div>';
		str += '</li>';
	}
	
	var ptr = this;
	$('#' + this.id).html(str);
	var o = $('#' + this.id + ' li .content');
	o.css({left: $(o.parent().children('.tab')[0]).width() + 'px'});
	
	for(i = 0; i < this.slides.length; ++i) {
		if($('#'+ptr.id+' #slider-vid-'+i)[0]) {
			swfobject.embedSWF("player.swf", "slider-vid-"+i, ptr.opt.width - ptr.opt.tabWidth, ptr.opt.height, "9.0.0", "./js/swfobject/expressInstall.swf", {movie_url:ptr.slides[i].getVideo().src}, {wmode:"opaque"});
		}
	}
	
	$('ul#' + this.id + ' li .tab').click(function() {
		var hyphen = $(this).parent().attr('id').lastIndexOf('-');
		var sid = Number($(this).parent().attr('id').substr(hyphen + 1));
		ptr.setActivateSlide(ptr.slides[sid]);
	});
	
	$('#' + this.id).mouseover(function() {
		ptr._mouseOver = true;
		clearTimeout(ptr._timeoutId);
	});
	
	$('#' + this.id).mouseout(function() {
		var obj = ptr._activeSlide;
		var time = Slide.DEFAULT_TIME;
		if(obj) if (obj.opt) if(obj.opt.time) time = obj.opt.time;
		ptr._mouseOver = false;
		ptr._timeoutId = setTimeout(function() {ptr.nextSlide()}, time * 1000);
		
	});
	
	this.setActivateSlide(this.slides[0]);
	
}

function Slide(label, content, description, opt) {
	//constructor
	this.slider = null;
	this.id = null;
	this.label = label;
	this.content = content;
	this.opt = opt;	
	this.description = description;
}
Slide.DEFAULT_TIME = 10;
Slide.LEFT = 'left';
Slide.RIGHT = 'right';
Slide.prototype.close = function(side) {
	var obj = $('#'+this.slider.id+'-slide-' + this.id);
	obj.children('.tab').removeClass('hot');
	obj.children('.content').children('.info').stop(true, false).animate({'top': 0}, 'slow');
	
	var ptr = this;
	var fin = function() {
		if(ptr.id != ptr.slider._activeSlide.id) {
			if(ptr.getVideo().element) {
				try {
					if(ptr.getVideo().element.vPause) {
						ptr.getVideo().element.vPause();
						ptr.getVideo().element.vCurrentTime(0);
					} else {
						ptr.getVideo().element.currentTime = 0;
						ptr.getVideo().element.pause();
					}
				} catch(e) {
					// video element not made yet
				}
			}
		}
	}
	
	switch(side) {
		case Slide.LEFT:
			obj.stop(true, false).animate({'left': (this.id * this.slider.opt.tabWidth) + 'px'}, 'slow', null, fin);
		break;
		case Slide.RIGHT:
			obj.stop(true, false).animate({'left': (this.slider.opt.width + (this.slider.opt.tabWidth * (this.slider.slides.length - 2)) + (i - (this.slider.slides.length - 1)) * this.slider.opt.tabWidth) + 'px'}, 'slow');
		break;
	}
	
}
Slide.prototype.isVideo = function () {
	return (this.content.toLowerCase().indexOf('<video') > -1);
	return false;
}
Slide.prototype.getVideo = function() {
	var obj = {};
	
	obj.src = this.content.replace(/<video.*src="(.*)".*\/>/i, '$1');
	
	var ptr = this;
	if($('#'+this.slider.id+'-slide-' + this.id + ' .content video').length) {
		obj.element = $('#'+this.slider.id+'-slide-' + this.id + ' .content video')[0];
	} else if($('#'+this.slider.id+'-slide-' + this.id + ' .content object').length) {
		obj.element = $('#'+this.slider.id+'-slide-' + this.id + ' #slider-vid-0')[0];
	}
	
	return obj;
}
Slide.prototype.playVideo = function() {
	var ptr = this;
	var retry = function() {
		setTimeout(function(){ptr.playVideo()}, 200);
	}
	
	try {
		if(this.getVideo().element.vPlay) {
			this.getVideo().element.vPlay();
		} else if(this.getVideo().element.play) {
			this.getVideo().element.play();
		} else {
			retry();
		}
	} catch(e) {
		retry();
	}
}
Slide.prototype.activate = function() {
	var toggle = false;
	
	for(i = 0; i < this.id + 1; ++i) {
		this.slider.slides[i].close(Slide.LEFT);
	}
	for(i = this.id + 1; i < this.slider.slides.length; ++i) {
		this.slider.slides[i].close(Slide.RIGHT);
	}
	
	var obj = $('#' + this.slider.id + '-slide-' + this.id);
	obj.children('.tab').addClass('hot');
	obj.children('.content').children('.info').stop(true, false).animate({top:'-69px'}, 'slow');
	
	$('.content .info').click(function() {
		if(toggle == false) {
			toggle = true;
			$(this).children('.collapse').children('div').children('img').attr('src', '/images/jom4/a-space/arrow-up.png')
			var t = 0 - $(this).stop(true, false).children('.collapse').children('div').height();
			if($.browser.msie && ($.browser.version < 9)) t -= 1;
			if($.browser.msie && ($.browser.version < 8)) t -= 3;
			$(this).stop(true, false).animate({top:t + 'px'});
		} else if (toggle == true) {
			toggle = false;
			$(this).children('.collapse').children('div').children('img').attr('src', '/images/jom4/a-space/arrow-down.png')
			$(this).stop(true, false).animate({top:'-69px'});	
		}
	});
	
	if(this.isVideo()) {
		this.playVideo();
	}
}
