/* 
	Switch Media Video Box Launcher - http://switchmedia.asia
	Author: Luke Durham
*/


var _smg_vbox_baseurl = "http://plugins.switchmedia.asia/gadgets/vbox";
var indicator_img_path = _smg_vbox_baseurl + "/indicator.gif";
var indicator_img_html = "<img name=\"vbox_indicator\" src=\""+indicator_img_path+"\" alt=\"Loading...\" style=\"width:128px;height:128px;\"/>"; // don't remove the name

function getInnerHtml(width,height)
{
	return '<div><div id="inner" style="position:absolute; top:50%; width:'+width+'px; margin-top:-'+Math.floor(height/2)+'px;margin-left:0px"><div id="SMGguid"><h2>No Flash</h2></div></div></div>';
}
var opacity_level = 6; // how transparent our overlay bg is
var ibAttr = "rel"; 	// our attribute identifier for our vbox elements
	

var ___smg_urlLoader = new Image(); // create an preloader object

var ___smg_vBox_tmpID = 0;
var ___smgPlayer;
var ___smg_vbox_visible=false;

function init_vbox(force) {

	if(typeof force == "undefined" || !force)
	{
		// quit if this function has already been called
		if (arguments.callee.done) return;	
		// flag this function so we don't do the same thing twice
		arguments.callee.done = true;	
	}
	
	var elem_wrapper = "vbox";
	
	createVbox(document.getElementsByTagName("body")[0]); //create our vbox

	//	elements here start the look up from the start non <a> tags
	//var docRoot = (document.all) ? document.all : document.getElementsByTagName("*");
	
	// Or make sure we only check <a> tags
	var docRoot = document.getElementsByTagName("a");

	var e;

	for (var i = 0; i < docRoot.length - 1; i++) {
			e = docRoot[i];
			if(e.getAttribute(ibAttr)) {
				var t = e.getAttribute(ibAttr);
				
				if ((t.indexOf("vbox") != -1)  ||  t.toLowerCase() == "vbox") { // check if this element is a vbox element						

						if(typeof e.onclick == 'undefined' || e.onclick == null)	// avoid multiple onclick events.
						{	
							var params = parseQuery(t.substr(5,999));
							var _url;
							var rnd='';
							if(params['rnd'])
								rnd = params['rnd'];
								
							if(params['impurl'])
							{
								_url = params['impurl'];
								_url = _url.replace("{random}",rnd);
								_url = _url.replace("%7Brandom%7D",rnd);
								___smg_track_url(_url);
								
							}
							if(params['ximpurl'])
							{
								_url = params['ximpurl'];
								_url = _url.replace("{random}",rnd);
								_url = _url.replace("%7Brandom%7D",rnd);
								___smg_track_url(_url);
								
							}
								
							e.onclick = function() { // rather assign an onclick event
								var t = this.getAttribute(ibAttr);
								var params = parseQuery(t.substr(5,999));
								var url = this.href;
								if(this.target != "") {url = this.target} 
		
								var title = this.title;
	
								if(showVbox(url,title,params)) {
									showBG();
									window.onscroll = maintPos;
									window.onresize = maintPos;
								}
								return false;
							};
						}
				}
			}
	 }
}

function detectMacXFForIE6() {
  
  var userAgent = navigator.userAgent.toLowerCase();
  //alert(userAgent);
  if (userAgent.indexOf('mac') != -1 && userAgent.indexOf('firefox')!=-1) {
	return true;
  }
 // if (userAgent.indexOf('msie 6') != -1 ) {
 //   return true;
 // }
}

showBG = function() {
	var box_w = getElem('vbox_w');
	
	  var d = detectMacXFForIE6();
	  if (d) {
		//osx ff css opacity + flash wmode transparent doesn't work
		box_w.style.opacity = 1;
		box_w.style.filter = 'alpha(opacity=1)';
		box_w.style.backgroundImage= "url("+_smg_vbox_baseurl+"/grey.png)";
		box_w.style.backgroundRepeat="repeat";

	  } 
	  else {
		box_w.style.opacity = 0;
		box_w.style.filter = 'alpha(opacity=0)';
		setBGOpacity = setOpacity;
		box_w.style.backgroundColor = "#000";
		
		setOpacity('vbox_w',opacity_level);
		
		//for (var i=0;i<=opacity_level;i++) {setTimeout("setVboxOpacity('vbox_w',"+i+")",70*i);} // from quirksmode.org	    
	  }
		
	box_w.style.display = "";
	var pagesize = new getPageSize();
	var scrollPos = new getScrollPos();
	var ua = navigator.userAgent;
	
	if(ua.indexOf("MSIE ") != -1) {box_w.style.width = pagesize.width+'px';} 
	/*else {box_w.style.width = pagesize.width-20+'px';}*/ // scrollbars removed! Hurray!
	box_w.style.height = pagesize.height+scrollPos.scrollY+'px';

}



hideBG = function() {
	var box_w = getElem('vbox_w');
	box_w.style.display = "none";

}

var loadCancelled = false;
showIndicator = function() {
	var vbox_p = getElem('vbox_progress');
	vbox_p.style.display = "";
	posToCenter(vbox_p);
	vbox_p.onclick = function() {___smg_hide_vbox_open_link();hideIndicator();loadCancelled = true;}
}


hideIndicator = function() {
	var vbox_p = getElem('vbox_progress');
	vbox_p.style.display = "none";
	vbox_p.onclick = null;
}

createVbox = function(elem) {
	// a trick on just creating an vbox wrapper then doing an innerHTML on our root vbox element
	var strHTML = "<div id=\"vbox_w\" style=\"display:none;\" onclick=\"___smg_hide_vbox_open_link();return false;\"></div>";
	strHTML +=	"<div id=\"vbox_progress\" style=\"display:none;\">";
	strHTML +=  indicator_img_html;
	strHTML +=  "</div>";
	strHTML +=	"<div id=\"vbox_wrapper\" style=\"display:none;text-align:left;\">";
	strHTML +=	"<div id=\"vbox_content\"></div>";
	strHTML +=	"<div id=\"vbox_footer_wrapper\" onclick=\"___smg_hide_vbox_open_link();\"><div id=\"vbox_close\" style=\"float:right;\">";
	strHTML +=	"<a id=\"vbox_close_a\" href=\"javascript:void(null);\">click here to close&nbsp;&nbsp;&nbsp;X</a></div>";
	strHTML +=  "<div id=\"vbox_footer\">&nbsp;</div></div></div></div>";

	var vbox = document.createElement("div");
	vbox.setAttribute("id","vbox");
	vbox.style.display = '';
	vbox.innerHTML = strHTML;
	elem.insertBefore(vbox,elem.firstChild);
}

var vbox_w_height = 0;
showVbox = function(url,title,params) {
	
	var vbox = getElem('vbox_wrapper');
	var vbox_type = 0;
												
	// set title here
	var vbox_footer = getElem('vbox_footer');
	if(title != "") {vbox_footer.innerHTML = title;} else {vbox_footer.innerHTML = "&nbsp;";}
	
	var strHTML = "";

	vbox.style.display = "";
	vbox.style.visibility = "hidden";

	vbox.style.visibility = "visible";
	
	getElem('vbox_content').style.overflow = "auto";

	var rnd = '';
	if(params['rnd']) {rnd = params['rnd'];}
	
	var clickUrl = '';
	if(params['clickurl']) {clickUrl = params['clickurl'];}
	//clickUrl = clickUrl.replace("{random}",rnd);
	//clickUrl = clickUrl.replace("%7Brandom%7D",rnd);
	
	if(clickUrl!='')
	{
		___smg_urlLoader.src=clickUrl;
	//	alert(clickUrl);
	}
	
	// Do 3rd party click track - xclickurl
	clickUrl = '';
	if(params['xclickurl']) {clickUrl = params['xclickurl'];}
	//clickUrl = clickUrl.replace("{random}",rnd);
	//clickUrl = clickUrl.replace("%7Brandom%7D",rnd);
	
	if(clickUrl!='')
	{
		___smg_urlLoader.src=clickUrl;
	//	alert(clickUrl);
	}
	
	var siteID=0;
	if(params['siteID']) {siteID = parseInt(params['siteID']);}
	
	var videoID=0;
	if(params['videoID']) {videoID = parseInt(params['videoID']);}
	
	var aspect='';
	if(params['aspect']) {aspect = params['aspect'];}
	
	var profileID=0;
	if(params['profileID']) {profileID = parseInt(params['profileID']);}
	
	var width=512;
	if(params['width']) {width = parseInt(params['width']);}
	
	var height=418;
	if(params['height']) {height = parseInt(params['height']);}	
	
	if(aspect=='4:3')
		height = Math.floor(width*3/4)+30;
	else if(aspect=='16:9')
		height = Math.floor(width*9/16)+30;
		
	vbox.style.height = height-1+'px';
	vbox.style.width = width+'px';
	
	posToCenter(vbox); 	
	
	strHTML = getInnerHtml(width, height);
	
	___smgPlayer = new SMGPlayer(siteID,profileID);
	
	// use guid as element ID tag as this mechanism creates two fragments, one hidden.
	strHTML = strHTML.replace(/SMGguid/,___smgPlayer.GUID);
	
	setVBoxContent(strHTML);
	___smgPlayer.SetWmode('window');
	

	
	var ele = getElem('inner');

	ele.style.height=height;
	ele.style.marginTop=0-height/2;

	___smgPlayer.Write(videoID,width,height,___smgPlayer.GUID);

	vbox.style.opacity = 0;
	vbox.style.filter = 'alpha(opacity=0)';	
	var vbox_op_level = 10;
	
	setVboxOpacity = setOpacity;
	for (var i=0;i<=vbox_op_level;i++) {setTimeout("setVboxOpacity('vbox_wrapper',"+i+")",30*i);}

	if(vbox_type == 2 || vbox_type == 3) {
		vbox.onclick = null;getElem("vbox_close_a").onclick = function() {___smg_hide_vbox_open_link();}
	} else {vbox.onclick = ___smg_hide_vbox_open_link;getElem("vbox_close_a").onclick = null;}

	___smg_vbox_visible=true;
	return true;
}

setOpacity = function (elemid,value)	{
		var e = getElem(elemid);
		e.style.opacity = value/10;
		e.style.filter = 'alpha(opacity=' + value*10 + ')';
}

resizeImageToScreen = function(objImg) {
	
	var pagesize = new getPageSize();
	
	var x = pagesize.width - 100;
	var y = pagesize.height - 100;

	if(objImg.width > x) { 
		objImg.height = objImg.height * (x/objImg.width); 
		objImg.width = x; 
		if(objImg.height > y) { 
			objImg.width = objImg.width * (y/objImg.height); 
			objImg.height = y; 
		}
	} 

	else if(objImg.height > y) { 
		objImg.width = objImg.width * (y/objImg.height); 
		objImg.height = y; 
		if(objImg.width > x) { 
			objImg.height = objImg.height * (x/objImg.width); 
			objImg.width = x;
		}
	}

	return objImg;
}

maintPos = function() {
	
	var vbox = getElem('vbox_wrapper');
	var box_w = getElem('vbox_w');
	var pagesize = new getPageSize();
	var scrollPos = new getScrollPos();
	var ua = navigator.userAgent;

	if(ua.indexOf("MSIE ") != -1) {box_w.style.width = pagesize.width+'px';} 
	/*else {box_w.style.width = pagesize.width-20+'px';}*/

	if(ua.indexOf("Opera/9") != -1) {box_w.style.height = document.body.scrollHeight+'px';}
	else {box_w.style.height = pagesize.height+scrollPos.scrollY+'px';}
	
	// alternative 1
	//box_w.style.height = document.body.scrollHeight+50+'px';	
	
	posToCenter(vbox);
	
}

function ___smg_hide_vbox() {
	// get URL before closing.. otherwise there will be no player to get it from.
	if(___smg_vbox_visible)
	{
		hideBG();
		var vbox = getElem('vbox_wrapper');
		vbox.style.display = "none";
	
		clearVboxContent();
		___smg_vbox_visible=false;
		window.onscroll = null;
	}
}
function ___smg_hide_vbox_open_link()
{
	if(___smg_vbox_visible)
	{
		___smg_open_link();
		___smg_hide_vbox();
	}
}
function ___smg_open_link()
{
	var player = ___smgPlayer.GetPlayerElement();
	var url = '';
	if(player)
	{
		if(player.tvcButton_getCloseLinkUrl)
		{
			url = player.tvcButton_getCloseLinkUrl();
		}
	}
		
	if(url!='')
		window.open(url);
}

posToCenter = function(elem) {
	var scrollPos = new getScrollPos();
	var pageSize = new getPageSize();
	var emSize = new getElementSize(elem);
	
	var x = Math.round(pageSize.width/2) - (emSize.width /2) + scrollPos.scrollX;
	var y = Math.round(pageSize.height/2) - (emSize.height /2) + scrollPos.scrollY;	
	elem.style.left = x+'px';
	elem.style.top = y+'px';	
}

getScrollPos = function() {
	var docElem = document.documentElement;
	this.scrollX = self.pageXOffset || (docElem&&docElem.scrollLeft) || document.body.scrollLeft;
	this.scrollY = self.pageYOffset || (docElem&&docElem.scrollTop) || document.body.scrollTop;
}

getPageSize = function() {
	var docElem = document.documentElement
	this.width = self.innerWidth || (docElem&&docElem.clientWidth) || document.body.clientWidth;
	this.height = self.innerHeight || (docElem&&docElem.clientHeight) || document.body.clientHeight;
}

getElementSize = function(elem) {
	this.width = elem.offsetWidth ||  elem.style.pixelWidth;
	this.height = elem.offsetHeight || elem.style.pixelHeight;
}

setVBoxContent = function(str) {
	clearVboxContent();
	
	var e = getElem('vbox_content');
	//e.style.overflow = "auto";
	e.style.overflow = "visible";
	//e.style.verticalAlign = "middle";
	e.innerHTML = str;
	
}
clearVboxContent = function() {
	var e = getElem('vbox_content');
	e.innerHTML = "";

}


getElem = function(elemId) {
	return document.getElementById(elemId);	
}

// parseQuery code borrowed from thickbox, Thanks Cody!
// modified to support unencoded '=' charaters in parameter strings
parseQuery = function(query) {
   var Params = new Object ();
   if (!query) return Params; 
   var Pairs = query.split(/[;&]/);
   for ( var i = 0; i < Pairs.length; i++ ) {
	  var KeyVal = Pairs[i].split('=');
	  
	  if ( ! KeyVal  ) continue;
		
	  var key = unescape( KeyVal[0] );	
	  var val = unescape( KeyVal[1] );
	  // concatenate extra parts and restore delimiter	
	  for(j=2;j<KeyVal.length;j++)
	  {
	  	val = val+'='+unescape( KeyVal[j] );
	  }  
	  val = val.replace(/\+/g, ' ');
	  Params[key] = val;
   }
   
   return Params;
}

// hide vbox once ESC key pressed
function keyPressHandler(e) {
  var kC  = (window.event) ?    // MSIE or Firefox?
			 event.keyCode : e.keyCode;
  var Esc = (window.event) ?   
			27 : e.DOM_VK_ESCAPE // MSIE : Firefox
  if(kC==Esc)
	 //alert("Esc pressed")
	 ___smg_hide_vbox_open_link()
}
document.onkeypress = keyPressHandler;

/********************************************************
 Make this IE7 Compatible ;)
 http://ajaxian.com/archives/ajax-on-ie-7-check-native-first
*********************************************************/
createRequestObject = function() {
	var xmlhttp;
		/*@cc_on
	@if (@_jscript_version>= 5)
			try {xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
			} catch (e) {
			try {xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");}
					catch (E) {xmlhttp = false;}
			}
	@else
		xmlhttp = false;
	@end @*/
	if (!xmlhttp && typeof XMLHttpRequest != "undefined") {
			try {xmlhttp = new XMLHttpRequest();} catch (e) {xmlhttp = false;}
	}
	return xmlhttp;
}

var http = createRequestObject();

function addEvent(obj, evType, fn){ 
 
 if (/WebKit/i.test(navigator.userAgent)) { // for Safari
	var _timer = setInterval(function() {
		if (/loaded|complete/.test(document.readyState)) {
			init_vbox(); // call the onload handler
		}
	}, 10);
 } 
/* This has been commented out because on some pages it causes IE to go blank.
It may have something to do with modifying the DOM before it's closed.

else if (document.all && !window.opera){ // for IE
	document.write('<script type="text/javascript" id="contentloadtag" defer="defer" src="javascript:void(0)"><\/script>')
	  var contentloadtag=document.getElementById("contentloadtag")
	  contentloadtag.onreadystatechange=function(){
	    if (this.readyState=="complete")
	    {
	    	//alert('ready');
	      init_vbox();
	    }
	  }

   return true; 
 }
*/
 else if (obj.addEventListener){ 		 // for Mozilla
	 obj.addEventListener("DOMContentLoaded", fn, false); 
   return true; 
 } else if (obj.attachEvent){ 
   var r = obj.attachEvent("on"+evType, fn); 
   return r; 
 } else { 
   return false; 
 } 
}


function ___smg_close_vBox()
{
	
	___smg_hide_vbox();
}

function ___smg_track_url(url)
{

	//alert('tracking url: '+url);
	if(url!='')
	{
		___smg_urlLoader.src=url;	
	}
}
addEvent(window, 'load', init_vbox);
var ___smgPlayer;
var ___smg_vbox_loaded = true;
//alert('loaded');
