 /**
  * Function Trim
  * @param {string} s
  * @return {string}
  */
 function Trim(s) {
   var retVal = "";
   var start = 0;
   while ((start < s.length) && (s.charAt(start) == ' ')) { ++start; }
   var end = s.length;
   while ((end > 0) && (s.charAt(end - 1) == ' ')) { --end; }
   return s.substring(start, end);
 }
 
 /**
  * Function: WhatOS
  * @return {string}
  */
 function WhatOS()
 {
	// This script sets OSName variable as follows:
	// "Windows"    for all versions of Windows
	// "MacOS"      for all versions of Macintosh OS
	// "Linux"      for all versions of Linux
	// "UNIX"       for all other UNIX flavors
	// "Unknown OS" indicates failure to detect the OS

	var OSName="Unknown OS";
	if (navigator.appVersion.indexOf("Win")!=-1) OSName="Windows";
	if (navigator.appVersion.indexOf("Mac")!=-1) OSName="MacOS";
	if (navigator.appVersion.indexOf("X11")!=-1) OSName="UNIX";
	if (navigator.appVersion.indexOf("Linux")!=-1) OSName="Linux";
	return OSName;
 }

 /**
  * Function: WhatBrowser
  * @param {string} ua
  */
 function WhatBrowser(ua) {
   // set up defaults
	
   this.browser = "Unknown";
   this.platform = "Unknown";
   this.version = "";
   this.majorver = "";
   this.minorver = "";

   uaLen = ua.length;

   var preparens = "";
   var parenthesized = "";

   i = ua.indexOf("(");
   if (i >= 0) {
     preparens = Trim(ua.substring(0,i));
         parenthesized = ua.substring(i+1, uaLen);
         j = parenthesized.indexOf(")");
         if (j >= 0) {
           parenthesized = parenthesized.substring(0, j);
         }
   }
   else {
     preparens = ua;
   }

   var browVer = preparens;

   var tokens = parenthesized.split(";");
   var token = "";
   for (var i=0; i < tokens.length; i++) {
     token = Trim(tokens[i]);
     if (token == "compatible") {
     }
     else if (token.indexOf("MSIE") >= 0) {
       browVer = token;
     }
     else if (token.indexOf("Opera") >= 0) {
       browVer = token;
     }
     else if ((token.indexOf("X11") >= 0) ||
             (token.indexOf("SunOS") >= 0) ||
 			(token.indexOf("Linux") >= 0)) {
       this.platform = "Unix";
     }
     else if (token.indexOf("Win") >= 0) {
       this.platform = token;
     }
     else if ((token.indexOf("Mac") >= 0) || (token.indexOf("PPC") >= 0)) {
       this.platform = token;
     }
   }

   var msieIndex = browVer.indexOf("MSIE");
   if (msieIndex >= 0) {
     browVer = browVer.substring(msieIndex, browVer.length);
   }

   var leftover = "";
   if (browVer.substring(0, "Mozilla".length) == "Mozilla") {
     this.browser = "Netscape";
     leftover = browVer.substring("Mozilla".length+1, browVer.length);
   }
   else if (browVer.substring(0, "Lynx".length) == "Lynx") {
     this.browser = "Lynx";
     leftover = browVer.substring("Lynx".length+1, browVer.length);
   }
   else if (browVer.substring(0, "MSIE".length) == "MSIE") {
     this.browser = "IE";
     leftover = browVer.substring("MSIE".length+1, browVer.length);
   }
   else if (browVer.substring(0, "Microsoft Internet Explorer".length)
            == "Microsoft Internet Explorer") {
     this.browser = "IE"
     leftover = browVer.substring("Microsoft Internet Explorer".length+1, browVer.length);
   }
   else if (browVer.substring(0, "Opera".length) == "Opera") {
     this.browser = "Opera"
     leftover = browVer.substring("Opera".length+1, browVer.length);
   }

   leftover = Trim(leftover);

   // Try obtaining version info out of the rest
   i = leftover.indexOf(" ");
   if (i >= 0) {
     this.version = leftover.substring(0, i);
   }
   else
   {
     this.version = leftover;
   }
   j = this.version.indexOf(".");
   if (j >= 0) {
     this.majorver = this.version.substring(0,j);
     this.minorver = this.version.substring(j+1, this.version.length);
   }
   else {
     this.majorver = this.version;
   }
 } // end of function WhatBrowser

/*
 * WMPObject embed
 * Based on Geoff Stearns QTObject embed
 * http://blog.deconcept.com/2005/01/26/web-standards-compliant-javascript-quicktime-detect-and-embed/
 *
 * by Ben Powell (http://www.benpowell.co.uk/)
 *
 * v1.0.1 - 26-09-2007
 *
 * Embeds a Windows Media movie to the page, includes plugin detection
 *
 * Usage:
 *
 *	myWMPObject = new WMPObject("path/to/movie.wmv", "movid", "width", "height");
 *	myWMPObject.altTxt = "Upgrade your Windows Media Player!";    // optional

 *  myWMPObject.addParam("AutoPlay", "False");              // optional
 *	myWMPObject.write();
 *	myWMPObject.write("myContainerDivTag");
 *
 */

WMPObject = function(mov, id, w, h) 
{
	this.imgAlert      = "alert.gif";
	this.urlPlugin     = null;
	this.playerActiveX = null;
	this.plugin  	   = null;
	this.mov   		   = mov;
	this.id   		   = id;
	this.width 		   = w;
	this.height		   = h;
	this.redirect	   = "";
	this.sq      	   = document.location.search.split("?")[1] || "";
	//this.altTxt = "<span><a href='http://www.microsoft.com/windows/windowsmedia/download/'>Scarica il Windows Media Player</a></span>";
	//this.bypassTxt = "";//"<p>Already have Windows Media Player? <a href='?detectwmp=false&"+ this.sq +"'>Click here.</a></p>";
	this.params = new Object();
	this.doDetect = getQueryParamValue('detectwmp');
}

WMPObject.prototype.addParam = function(name, value)
{
	this.params[name] = value;
}

WMPObject.prototype.getParams = function()
{
	return this.params;
}

WMPObject.prototype.getParam = function(name)
{
	return this.params[name];
}

WMPObject.prototype.getParamTags = function()
{
    var paramTags = "";
    for (var param in this.getParams()) {
        paramTags += '<param name="' + param + '" value="' + this.getParam(param) + '" />';
    }
    if (paramTags == "") {
        paramTags = null;
    }
    return paramTags;
}

WMPObject.prototype.getHTML = function()
{	
	var os = WhatOS();
  	var wmpHTML = "";
  	var type = "";
	
  	// MacOS - Safari and Firefox
  	if (os == 'MacOS'){ 

  		// not ie
		if (BrowserDetect.browser == 'Safari' || BrowserDetect.browser == 'Firefox'){
			type = "application/x-mplayer2"
		}else{
			type = "application/x-ms-wmd";
		}

        wmpHTML += '<embed type="'+type+'" pluginspage="http://www.microsoft.com/windows/mediaplayer/download/default.asp" src="'
        + this.mov + '" width="' + this.width + '" height="' + this.height + '" id="' + this.id + '"';
        for (var param in this.getParams()) {
            wmpHTML += ' ' + param + '="' + this.getParam(param) + '"';
        }
        wmpHTML += '></embed>';
    
    // Windows - Firefox and Chrome
    }else if (os == 'Windows' && (BrowserDetect.browser == 'Firefox' || BrowserDetect.browser == 'Chrome')){
    	

		type = "application/x-mplayer2"

        wmpHTML += '<embed type="'+type+'" pluginspage="http://www.microsoft.com/windows/mediaplayer/download/default.asp" src="'
        + this.mov + '" width="' + this.width + '" height="' + this.height + '" id="' + this.id + '"';
        for (var param in this.getParams()) {
            wmpHTML += ' ' + param + '="' + this.getParam(param) + '"';
        }
        wmpHTML += '></embed>';
		

        
    }else{
    	// pc ie
        wmpHTML += '<object classid="CLSID:22D6F312-B0F6-11D0-94AB-0080C74C7E95" width="' + this.width + '" height="' + this.height + '" id="' + this.id + '">';
        this.addParam("src", this.mov);
        if (this.getParamTags() != null) {
            wmpHTML += this.getParamTags();
        }
        wmpHTML += '</object>';
        
    }

    return wmpHTML;
}

WMPObject.prototype.getVariablePairs = function()
{
    var variablePairs = new Array();
    for (var name in this.getVariables()) {
        variablePairs.push(name + "=" + escape(this.getVariable(name)));
    }
    if (variablePairs.length > 0) {
        return variablePairs.join("&");
    }
    else {
        return null;
    }
}

WMPObject.prototype.testPlugin = function(){
	
	try{
		if(window.ActiveXObject)
		{
		  hasActiveX = true;
		  this.playerActiveX = new ActiveXObject("WMPlayer.OCX.7");
		}
		else if (window.GeckoActiveXObject)
		{
		  hasActiveX = true;
		  this.playerActiveX = new GeckoActiveXObject("WMPlayer.OCX.7");
		}
	}catch(oError){}	
	
	try{
		if(navigator.mimeTypes)
		  this.plugin = navigator.mimeTypes['application/x-mplayer2'].enabledPlugin;
	}
	catch (oError){}
}

WMPObject.prototype.write = function(elementId)
{
	var os = WhatOS();
 	var bd = new WhatBrowser(navigator.userAgent);
	var hasActiveX = false;
	var player;
	var versionString;
	var imgalert;
	// Text Alert
	var url;
	var altTxt;
	var onclick = '';
	
	// test window media video plugin
	this.testPlugin();

	if ((this.plugin || this.playerActiveX)){
	
		/*if (os == 'Windows'){
			onclick = "onClick=\"window.location='"+url+"'\"";
		}*/
		//document.write("<table cellspacing=0 cellpadding=0 width=\"99%\"><tr><td  style=\"background: url("+imgalert+");\" "+onclick+" onMouseOver=\"this.style.cursor='pointer'\">");
		document.write("<table cellspacing=0 cellpadding=0 width=\"99%\"><tr><td  style=\"background: url("+imgalert+");\" "+" >");
		document.write(this.getHTML());
		document.write("</td></tr></table>");
	}else{
		// show error message box for download plugin
		if (os == 'MacOS'){ 
			this.urlPlugin = 'http://www.microsoft.com/windows/windowsmedia/player/wmcomponents.mspx';
		}else if (os == 'Windows'){ 
			this.urlPlugin = 'http://www.microsoft.com/windows/windowsmedia/download/';
		}
		
		altTxt   = "<span><center><a href='"+this.urlPlugin+"'>Scarica il Windows Media Player</a></center></span>";
		
		document.write("<table height=\"484\" width=\"644\"><tr><td style=\"background: url("+this.imgAlert+");\" onClick=\"window.location='"+this.urlPlugin+"'\" valign=\"bottom\" onMouseOver=\"this.style.cursor='pointer'\">");
		document.write(altTxt);
		document.write("<br/><br/></td></tr></table>");
	}
	
	return;
}

WMPObject.prototype.write2 = function(elementId)
{
	var os = WhatOS();
 	var bd = new WhatBrowser(navigator.userAgent);
	var hasActiveX = false;
	var player;
	var versionString;
	var imgalert;
	// Text Alert
	var url;
	var altTxt;

	//if (showalert=='si')
		//alert('Your OS: ' + os);

	// Se ho un Mac non uso il Plug Detect
	if (os=='MacOS')
	{
			imgalert = 'alert.gif'
			//url = 'http://www.microsoft.com/windows/windowsmedia/player/wmcomponents.mspx';
			url = 'http://www.microsoft.com/mac/downloads.mspx?pid=Mactopia_WMP&fid=1E974157-5031-4AC6-840A-6E07547B6AEB#viewer';

			if (bd.browser == "Netscape")
			{
				document.write("<table cellspacing=0 cellpadding=0 width=\"99%\"><tr><td>");
				document.write(this.getHTML());
				document.write("</td></tr></table>");
			}
			else
			{
				document.write("<table cellspacing=0 cellpadding=0 width=\"99%\"><tr><td  style=\"background: url("+imgalert+");\" onClick=\"window.location='"+url+"'\" onMouseOver=\"this.style.cursor='pointer'\">");
				document.write(this.getHTML());
				document.write("</td></tr></table>");
			}

			return;
	}

	try
	{
		if(window.ActiveXObject)
		{
		  hasActiveX = true;
		  player = new ActiveXObject("WMPlayer.OCX.7");
		}
		else if (window.GeckoActiveXObject)
		{
		  hasActiveX = true;
		  player = new GeckoActiveXObject("WMPlayer.OCX.7");
		}
	}
	catch(oError) {	}

	// ALL OTHER BROWSER
	imgalert = 'alert.gif';

	if (player)
  		versionString = player.versionInfo;

	// VERSION IE PLUGIN BROWSER
	if (bd.browser == "IE")
	{
		// IE BROWSER
		imgalert = 'alertIE.gif';
		url = "http://www.microsoft.com/windows/windowsmedia/download/";
		// IE ALERT
		altTxt = "<span><center><a href='"+url+"'>Scarica il Windows Media Player</a></center></span>";
		if (os=='MacOS')
		{
			url = "http://www.microsoft.com/windows/windowsmedia/player/wmcomponents.mspx";
			altTxt = "<span><center><a href='"+url+"'>Scarica il Windows Media Player</a></center></span>";
		}
		//if (hasActiveX)
		//alert("Active attivato versione WMP "+versionString);
	}
	else if (bd.browser == "Netscape")
	{
		url = "http://port25.technet.com/pages/windows-media-player-firefox-plugin-download.aspx";
		altTxt = "<span><center><a href='"+url+"'>Scarica il Windows Media Player</a></center></span>";
		// NETSCAPE TXT ALERT
		if (os=='MacOS')
		{
			url = "http://www.microsoft.com/windows/windowsmedia/player/wmcomponents.mspx";
			altTxt = "<span><center><a href='"+url+"'>Scarica il Windows Media Player</a></center></span>";
		}
		//altTxt = "<span><a href='http://port25.technet.com/videos/downloads/wmpfirefoxplugin.exe'>Scarica il Windows Media Player</a></span>";
		//for Safari -> http://www.microsoft.com/windows/windowsmedia/player/wmcomponents.mspx ???
	}
	else
	{//if (bd.browser == "Opera") {
		// OPERA TXT ALERT
		url = "http://www.microsoft.com/downloads/details.aspx?FamilyID=99655624-ca38-49b7-a701-93f5f0e501dd&displaylang=en";
		altTxt = "<span><center><a href='"+url+"'>Scarica il Windows Media Player</a></center></span>";
		if (os=='MacOS')
		{
			url = "http://www.microsoft.com/windows/windowsmedia/player/wmcomponents.mspx";
			altTxt = "<span><center><a href='"+url+"'>Scarica il Windows Media Player</a></center></span>";
		}
	}

	var strx = bd.browser;
	if (hasActiveX)
		strx += "\nActiveX presente ";
	else
		strx += "\nActiveX NON presente ";

	// Special check for netscape
	if (bd.browser == "Netscape") {
		if (navigator.mimeTypes)
				plugin = navigator.mimeTypes['application/x-mplayer2'].enabledPlugin;
		//if (showalert=='si')
			//alert("The Windows Media Plugin "+ (plugin ? "is" : "is not") +" installed. \n");
	}
	
	if (isWMPInstalled()){
		document.write("<table cellspacing=0 cellpadding=0 width=\"+this.width+\"><tr><td style=\"background: url("+imgalert+");\" onClick=\"window.location='"+url+"'\" onMouseOver=\"this.style.cursor='pointer'\">");
		document.write(this.getHTML());
		document.write("</td></tr></table>");
	}else{
		strx += "\nPlugin WMP NON presente ";
		document.write("<table height=\"480\" width=\"640\"><tr><td style=\"background: url("+imgalert+");\" onClick=\"window.location='"+url+"'\" valign=\"bottom\" onMouseOver=\"this.style.cursor='pointer'\">");
		document.write(altTxt);
		document.write("<br/><br/></td></tr></table>");
	}

}

/**
 * Function: isWMPInstalled
 * @return {}
 */
function isWMPInstalled() {
	var wmpInstalled = false;
	wmpObj = false;
	if (navigator.plugins && navigator.plugins.length) {
		for (var i=0; i < navigator.plugins.length; i++ ) {
         var plugin = navigator.plugins[i];
         if (plugin.name.indexOf("Windows Media Player") > -1) {
			wmpInstalled = true;
         }
      }
	} else {
		execScript('on error resume next: wmpObj = IsObject(CreateObject("MediaPlayer.MediaPlayer.1"))','VBScript');
		wmpInstalled = wmpObj;
	}
	return wmpInstalled;
}

/**
 * Function: getQueryParamValue
 * get value of querystring param
 * @param {} param
 * @return {}
 */
function getQueryParamValue(param) {
	var q = document.location.search;
	var detectIndex = q.indexOf(param);
	var endIndex = (q.indexOf("&", detectIndex) != -1) ? q.indexOf("&", detectIndex) : q.length;
	if(q.length > 1 && detectIndex != -1) {
		return q.substring(q.indexOf("=", detectIndex)+1, endIndex);
	} else {
		return "";
	}
}

/**
 * Class BrowserDetect
 * @type class 
 */
var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{
			string: navigator.userAgent,
			subString: "Chrome",
			identity: "Chrome"
		},
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari",
			versionSearch: "Version"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			   string: navigator.userAgent,
			   subString: "iPhone",
			   identity: "iPhone/iPod"
	    },
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};

BrowserDetect.init();