/**
 * @author Florian
 */
movReader = {
	_reader:null,
	init : function() {
		//movReader._createReader();
		var as = document.getElementsByTagName("a");
		for(var i=0;i<as.length;i++ ) {
			if( as[i].rel.indexOf("movReader") == 0 ) {
				var exp = as[i].rel.replace("movReader;","");
				eval( exp );// eval width and height
				if (typeof(width) == "number" || typeof(height) == "number") {
					as[i].href = "javascript:movReader.play('" + as[i].href + "'," + width + "," + height + " )";
				}
			}
		}
	},
	
	_createReader : function() {
		if (movReader._reader == null) {
			movReader._reader = document.createElement("div");
			movReader._reader.id = "movReaderDOMElement";
			movReader._reader.style.display = "none";
			movReader._reader.style.position = "fixed";
			movReader._reader.style.zIndex=100;
			document.body.appendChild(movReader._reader);
		}
	},
	
	play : function(p,w,h) {
		movReader._createReader();
		movReader._hideAllSWF();
		movReader._reader.style.display="block";
		movReader._reader.style.border="1px solid white";
		movReader._reader.style.backgroundColor="white";
		movReader._reader.style.cursor="pointer";
		movReader._reader.width = w;
		movReader._reader.height = h;
		movReader._reader.altW = 1;
		movReader._reader.altH = 1;
		var ratio=w/h;
		//ratio = ( ratio>=1 )?ratio:(1/ratio);// ensure ratio is 'positive' ratio
		movReader._reader.r=ratio;
		movReader._loop(p,w,h);	
		
	//	
		
	},	
		
	_hideAllSWF : function () {
		var swfs = document.getElementsByTagName("object");
		for( var i=0;i<swfs.length;i++ ) {
			swfs[i].style.display="none";
		}
	},
	
	_showAllSWF : function () {
		var swfs = document.getElementsByTagName("object");
		for( var i=0;i<swfs.length;i++ ) {
			swfs[i].style.display="block";
		}
	},
	
	_loop : function(p,w,h) {
		var time=.1;
		var toW,toH,fromW,fromH,opacity=0;
		toW=movReader._reader.width;
		toH=movReader._reader.height;
		fromW=movReader._reader.altW;
		fromH=movReader._reader.altH;
		var interval = setInterval(
			function(){	
				if( time<1 ) {			
					fromW = quad.easeIn(time,fromW,toW-fromW,1);
					fromH = quad.easeIn(time,fromH,toH-fromH,1);
					opacity = quad.easeIn(time,opacity,1-opacity,1);
					movReader._reader.style.opacity=opacity;				
					movReader._setReaderDOMElementSizeAndPosition(fromW,fromH);
					time+=.1;
				} else {
					// stop loop:
					clearInterval( interval );
					movReader._reader.style.backgroundColor="transparent";
					movReader._reader.innerHTML = movReader._getVideoObjectDOMElement(p,w,h);
					movReader._reader.style.height = (h+15+20)+"px";
					movReader._reader.style.border="none";
					document.body.setAttribute("onclick","movReader.hide(event)");
				}	
			},
			40
		);		
	},
	
	hide : function(e) {
		try {			
			var target = (e && e.target) || (event && event.srcElement);
			if (!movReader._isClickOnVideo(target)) {
				movReader.forceHide(e);				
			}
		} catch( er ) {
			// looking for movReader in another
			// place in the page and remove it
		}
	},
	
	forceHide : function(e) {
		document.body.removeChild(movReader._reader);
		movReader._reader = null;
		movReader._showAllSWF();
		if( e ) {e.stopPropagation()}
	},
	
	_isClickOnVideo : function(t) {
		while(t.parentNode){ 
			if(t==movReader._reader){ 
				return true 
			} 
			t=t.parentNode 
		} 
		return false;
	},
	
	_setReaderDOMElementSizeAndPosition : function(w,h) {
		//var w,h,t,l;
				
	//	movReader._reader.altW+=30*movReader._reader.r;
	//	movReader._reader.altH+=30;
	//	w=movReader._reader.altW;
	//	h=movReader._reader.altH;
		
		if (navigator.appName.indexOf("Microsoft")!=-1) {
			l = (document.body.offsetWidth-w)/2;
			t = (document.body.offsetHeight-h)/2;
		} else {
			t=(window.innerHeight-h)/2;
			l=(window.innerWidth-w)/2;
		}
		movReader._reader.style.top= Math.max(40,t)+"px";// minimum from top: 40px
		movReader._reader.style.left=Math.max(0,l)+"px";
		movReader._reader.style.width=w+"px";
		movReader._reader.style.height=h+"px";
	},
	
	_getVideoObjectDOMElement: function(p, w, h){
		var obj = "<object width=\"" + w + "\"";
		obj += "height=\"" + h + "\"";
		obj += "codebase=\"http://www.apple.com/qtactivex/qtplugin.cab#version=7,3,0,0\" classid=\"clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B\">";
		obj += "<param value=\"" + p + "\" name=\"src\"/><param value=\"true\" name=\"controller\"/>";
		obj += "<param value=\"true\" name=\"autoplay\"/><param value=\"white\" name=\"bgcolor\"/>";
		obj += "<embed width=\"" + w + "\" height=\"" + (h + 15) + "\" bgcolor=\"white\" autoplay=\"true\" controller=\"true\"";
		obj += " pluginspage=\"http://www.apple.com/quicktime/download/\" src=\"" + p + "\"/></object>";
		var closed = " <div style='text-align:right;height:30px;background-image: url(images/gradient.png);width:100%;background-repeat:repeat-x;'>";
		closed += "<a style='font-size:12px;' href='javascript:movReader.forceHide()'>";
//		closed += "<img src='close.png' width='20' height='20' /></a></div>";
	closed += "<img src='data:image/png;base64,"+getClosedEncodedImage()+"' width='20' height='20' style='margin:2px'/></a></div>";
		var container = "<div style='border:1px solid white;width:100%'>" + obj + "</div>";
		return container + closed;
	}	
}

var quad = {
	easeIn : function(t,b,c,d) {return c*(t/=d)*t + b;},
	easeOut : function(t,b,c,d) {return -c *(t/=d)*(t-2) + b;},
	easeInOut: function(t, b, c, d){
		if ((t /= d / 2) < 1) 
			return c / 2 * t * t + b;
		return -c / 2 * ((--t) * (t - 2) - 1) + b;
	}
}

function getClosedEncodedImage() {
	return "iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAADiwAAA4sBdcsX+wAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAOWSURBVEiJxZe9bipHFMd/rHcJjkGQKxxIZK2v7YbbQGQLp0jlgmZFYSnFoktBkcK8AG9gmYIXwEIukOAJjGiJZAUhIae9VP6oLgVSFiXy4t1lN0XWCGzwta+s8JemOWdmfjNz5uOMB/AAArACSMA3wLeAHwgAQbfsRaPRA6/X+14URa8kSSKAaZqWZVmGYRg3/X6/BVwCQ7f8DfwD3AH3gAmMAdvjAlcAL+BzgSHgO+CHUCiUDQaDvyiK4s3lcqvJZBJBEJiWbdt0u12q1arebDaN4XD4h6ZpdeAz8BeguQMYAYYLx+vCvgd2gCSg+P3+sizLWqVSMcfjsfNSjcdjp1KpmLIsa36/vwwobp87LsPvMlkDwq7jZ+AwHA63VFW903X9xcDH0nXdUVX1LhwOt4BDt+8dl7UG8A54747qMBKJfDo5Obn/auIjFYvF+0gk8smFJ13WO4AN4CdACYfDrUVQwzC+CFlUp1gs3rszV1zWBkAMOPD7/WVVVe/mNdQ0zclkMk6tVlsIrdVqTiaTcTRNm+tXVfXOjfmByyQJfJRlWZsXU03THFVVnUQi4SQSibnwWq028auqOheu67ojy7IGfASSK8CHUCh0dHx8/GF/f3/mnAyHQ46Ojuj1ehNbu90mEAgQj8cBqNfrlEqliX8wGNDpdEilUvh8voldFEUCgYB4cXGxNhqN/vQAv25ubp5dXV0Fp8/nPOi0CoUCwAx0WrFYjNPTU4LB4MRm2zbb29vD29vb3wRgT1EU7zTUNE3y+fxC6ANwERSg1+uRz+cxTXNiEwQBRVG8wJ4QjUYPcrnc6nQjSZJIp9MLO32p0uk0kiTN2HK53Go0Gj3wyLL8+fr6Ovr4GoSn8XuNCoUC2Wz2id22bba2tvqCKIreeVCAbDY7ieVbQOG/5RZF0Ss8vDKL9Fr4c9AHSZIkzp/q/yDBNE3ruQqvjXOpVKJerz9bxzRNS7Asy7Bt+02gL4Hbto1lWYZgGMZNt9t9M+iX4N1uF8MwboR+v9+qVqv6tNM0TRqNxldDH9RoNGYuEIBqtar3+/2WAFw2m82Z5ZYkiXK5TCwWW9hpoVB4drfHYjHK5fLMBWLbNs1m0wAuV4AfPR7Pxvr6+tbu7u5kl/t8PlKpFJ1Oh8Fg8ASazWaJx+MEAgHa7fYT6ON7GuDs7Mw6Pz//fTQatWBJzyIsMRFYWuqztGRvaentUhL6pX1hPCzp0/YvMWj37bES+tQAAAAASUVORK5CYII="; 
}
