var Videobox = {

	init: function (options) {
		// init default options
		this.options = Object.extend({
			resizeDuration: 400,	// Duration of height and width resizing (ms)
			initialWidth: 250,		// Initial width of the box (px)
			initialHeight: 250,		// Initial height of the box (px)
			defaultWidth: 520,		// Default width of the box (px)
			defaultHeight: 450,	// Default height of the box (px)
			animateCaption: false	// Enable/Disable caption animation
		}, options || {});

		this.anchors = [];
		$A($$('a')).each(function(el){
			if(el.rel && el.href && el.rel.test('^vidbox', 'i')) {
				el.onclick =this.click.pass(el, this);
				this.anchors.push(el);
				///el.href = '#' + el.href;
			}
        		}, this);

		
		this.overlay = new Element('div').setProperty('id', 'lbOverlay').injectInside(document.body);

		this.center = new Element('div').setProperty('id', 'lbCenter').setStyles({width: this.options.initialWidth+'px', height: this.options.initialHeight+'px', marginLeft: '-'+(this.options.initialWidth/2)+'px', display: 'none'}).injectInside(document.body);
		this.bottomContainer = new Element('div').setProperty('id', 'lbBottomContainer').setStyle('display', 'none').injectInside(document.body);		
		this.bottom = new Element('div').setProperty('id', 'lbBottom').injectInside(this.bottomContainer);
		new Element('a').setProperties({id: 'lbCloseLink', href: '#'}).injectInside(this.bottom).onclick = this.overlay.onclick = this.close.bind(this);
		this.caption = new Element('div').setProperty('id', 'lbCaption').injectInside(this.bottom);
		this.number = new Element('div').setProperty('id', 'lbNumber').injectInside(this.bottom);
		new Element('div').setStyle('clear', 'both').injectInside(this.bottom);
		
		var nextEffect = this.nextEffect.bind(this);
		this.fx = {
			overlay: this.overlay.effect('opacity', {duration: 300}).hide(),
			center: this.center.effects({duration: 300, transition: Fx.Transitions.sineInOut, onComplete: nextEffect})
			//bottom: this.bottom.effect('margin-top', {duration: 400})
		};

	},

	auto: function (findlink)
	{
		for (var i=0;i<this.anchors.length;i++)
		{
			
			var lookIn=this.anchors[i].rev.split('|');
			if (findlink==lookIn[0])
			{
				this.click(this.anchors[i]);	
			}
		}
		
	},
	
	click: function(link) {
     		return this.open (link.href, link.title, link.rel,link.rev);

	},
	open: function(sLinkHref, sLinkTitle, sLinkRel, sVideoLink) {
		this.href = sLinkHref;
		this.title = sLinkTitle;
		this.rel = sLinkRel;
		this.position();
		this.setup();
		this.video(sVideoLink);//this.href
		this.video(sVideoLink);//this.href
		this.top = Window.getScrollTop() + 50 + (Window.getHeight() / 15);
		this.center.setStyles({top: this.top+'px', display: ''});
		var platform = window.navigator.platform.toLowerCase();
		if ((platform.indexOf('mac') != -1) && (Window.gecko) )
		{this.fx.overlay.start(1);}
		else {this.fx.overlay.start(0.9);}
		this.step = 1;
		this.center.setStyle('background','transparent url(loading.gif) no-repeat center');
		var titleSplit=sVideoLink.split('|');
		
		this.caption.innerHTML = '<span class="title"><strong>'+titleSplit[1]+'</strong> '+titleSplit[2]+'</span><br />'+'<span class="info"><strong>'+titleSplit[3]+'</strong> '+titleSplit[4]+'</span>&nbsp;<span class="info"><strong>'+titleSplit[5]+'</strong> '+titleSplit[6]+'</span>';
		this.fx.center.start({'height': [this.options.contentsHeight]});
		hideSelectBoxes();
		hideFlash();

		return false;
	},

	setup: function(){
		var aDim = this.rel.match(/[0-9]+/g);
		this.options.contentsWidth = (aDim && (aDim[0] > 0)) ? aDim[0] : this.options.defaultWidth;
		this.options.contentsHeight = (aDim && (aDim[1] > 0)) ? aDim[1] : this.options.defaultHeight;

	},

	position: function(){
		//this.overlay.setStyles({top: window.getScrollTop()+'px', height: window.getScrollHeight()+'px'});
		this.overlay.setStyles({top: '0px', height: window.getScrollHeight()+'px'});
	},

	video: function(sLinkHref){
			var videoId = sLinkHref.split('|');
			this.videoID = videoId[0];
			this.so = new SWFObject("/swf/pttVideoPlayer00.swf?pttMovie=/video/"+this.videoID+".flv", "flvvideo", this.options.contentsWidth, this.options.contentsHeight, "0");
			this.so.addParam("wmode", "transparent");
			urchinTracker('/videoVisits/'+this.videoID);
	},

	nextEffect: function(){
		switch (this.step++){
		case 1:
			this.fx.center.start({'width': [this.options.contentsWidth], 'marginLeft': [this.options.contentsWidth/-2]});
			break;
			this.step++;
		case 2:
			this.center.setStyle('background','transparent');
			this.so.write(this.center);
			 //this.top + this.center.clientHeight
			this.bottomContainer.setStyles({top: (Window.getScrollTop() + (Window.getHeight() / 15))+'px', height: '0px', marginLeft: this.center.style.marginLeft, width: this.options.contentsWidth+'px',display: ''});
			if (this.options.animateCaption){
				this.fx.bottom.set(-this.bottom.offsetHeight);
				this.bottomContainer.style.height = '';
				this.fx.bottom.start(0);
				break;
			}
			this.bottomContainer.style.height = '';
			this.step++;
		}
	},

	close: function(){
		this.fx.overlay.start(0);
		this.center.style.display = this.bottomContainer.style.display = 'none';
		this.center.innerHTML = '';
		showSelectBoxes();
		showFlash();

		return false;
	}

};

function showSelectBoxes(){
	var selects = document.getElementsByTagName("select");
	for (i = 0; i != selects.length; i++) {
		selects[i].style.visibility = "visible";
	}
}

// ---------------------------------------------------

function hideSelectBoxes(){
	var selects = document.getElementsByTagName("select");
	for (i = 0; i != selects.length; i++) {
		selects[i].style.visibility = "hidden";
	}
}

// ---------------------------------------------------

function showFlash(){
	var flashObjects = document.getElementsByTagName("object");
	for (i = 0; i < flashObjects.length; i++) {
		flashObjects[i].style.visibility = "visible";
	}

	var flashEmbeds = document.getElementsByTagName("embed");
	for (i = 0; i < flashEmbeds.length; i++) {
		flashEmbeds[i].style.visibility = "visible";
	}
}

// ---------------------------------------------------

function hideFlash(){
	var flashObjects = document.getElementsByTagName("object");
	for (i = 0; i < flashObjects.length; i++) {
		flashObjects[i].style.visibility = "hidden";
	}

	var flashEmbeds = document.getElementsByTagName("embed");
	for (i = 0; i < flashEmbeds.length; i++) {
		flashEmbeds[i].style.visibility = "hidden";
	}

}

window.addEvent('domready', Videobox.init.bind(Videobox));