var UA = function()
{
	var sUA = navigator.userAgent.toLowerCase();
	var oReturn =  {
		bIsWebKit : sUA.indexOf("applewebkit") > -1,
		bIsSafari : sUA.indexOf("safari") > -1,
		bIsKonq: navigator.product != null && navigator.product.toLowerCase().indexOf("konqueror") > -1,
		bIsOpera : sUA.indexOf("opera") > -1,
		bIsXML : document.contentType != null && document.contentType.indexOf("xml") > -1,
		bHasTransparencySupport : true,
		bUseDOM : true,
		nFlashVersion : null,
		nOperaVersion : null,
		nGeckoBuildDate : null,
		nWebKitVersion : null
	};

	oReturn.bIsKHTML = oReturn.bIsWebKit || oReturn.bIsKonq;
	oReturn.bIsGecko = !oReturn.bIsWebKit && navigator.product != null && navigator.product.toLowerCase() == "gecko";
	if(oReturn.bIsGecko){ oReturn.nGeckoBuildDate = new Number(sUA.match(/.*gecko\/(\d{8}).*/)[1]) };
	oReturn.bIsIE = sUA.indexOf("msie") > -1 && !oReturn.bIsOpera && !oReturn.bIsKHTML && !oReturn.bIsGecko;
	oReturn.bIsIEMac = oReturn.bIsIE && sUA.match(/.*mac.*/) != null;
	if(oReturn.bIsOpera){ oReturn.nOperaVersion = new Number(sUA.match(/.*opera(\s|\/)(\d+\.\d+)/)[2]) };
	if(oReturn.bIsIE || (oReturn.bIsOpera && oReturn.nOperaVersion < 7.6)){ oReturn.bUseDOM = false };
	if(oReturn.bIsWebKit){ oReturn.nWebKitVersion = new Number(sUA.match(/.*applewebkit\/(\d+).*/)[1]) };
	if(window.hasFlash && (!oReturn.bIsIE || oReturn.bIsIEMac)){
		var flashDescription = (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]).description;
		oReturn.nFlashVersion = parseInt(flashDescription.charAt(flashDescription.indexOf(".") - 1));
	};
	if(sUA.match(/.*(windows|mac).*/) == null ||
	oReturn.bIsIEMac || oReturn.bIsKonq ||
	(oReturn.bIsOpera && oReturn.nOperaVersion < 7.6) ||
	(oReturn.bIsSafari && oReturn.nFlashVersion < 7) ||
	(!oReturn.bIsSafari && oReturn.bIsWebKit && oReturn.nWebKitVersion < 124) ||
	(oReturn.bIsGecko && oReturn.nGeckoBuildDate < 20020523)){
		oReturn.bHasTransparencySupport = false;
	};

	if(!oReturn.bIsIEMac && !oReturn.bIsGecko && document.createElementNS){
		try {
			document.createElementNS("http://www.w3.org/1999/xhtml", "i").innerHTML = "";
		} catch(e){
			oReturn.bIsXML = true;
		};
	};

	oReturn.bUseInnerHTMLHack = oReturn.bIsKonq || (oReturn.bIsWebKit && oReturn.nWebKitVersion < 312) || oReturn.bIsIE;

	return oReturn;
}();

var isIE  = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;

function AC_AddExtension(src, ext)
{
	if (src.indexOf('?') != -1)
		return src.replace(/\?/, ext+'?'); 
	else
		return src + ext;
}

function AC_createObjectParameter (nodeObject, sName, sValue)
{
	var node = document.createElement("param");

	node.setAttribute("name", sName);
	node.setAttribute("value", sValue);
	nodeObject.appendChild(node);
}

function AC_Generateobj(objAttrs, params, embedAttrs,gcm_myid) 
{
	if(!UA.bUseDOM)
	{
		var str = '';
		if ((isIE && isWin) || (isOpera && UA.nOperaVersion<9.8))
		{
			str += '<object ';
			for (var i in objAttrs)
				str += i + '="' + objAttrs[i] + '" ';
			str += '> ';
			for (var i in params)
				str += '<param name="' + i + '" value="' + params[i] + '"> ';
			str += '</object>';
		}
		else
		{
			str += '<embed ';
			for (var i in embedAttrs)
				str += i + '="' + embedAttrs[i] + '" ';
			str += '> </embed>';
		}
		document.write(str);
	}
	else
	{
		if ((isIE && isWin) || (isOpera && UA.nOperaVersion<9.8))
		{
			var nodeFlash = document.createElement("object");
			for (var i in objAttrs)
				nodeFlash.setAttribute(i,objAttrs[i]);
			for (var i in params)
				AC_createObjectParameter(nodeFlash,i,params[i]);
		}
		else
		{
			var nodeFlash = document.createElement("embed");
			for (var i in embedAttrs)
				nodeFlash.setAttribute(i,embedAttrs[i]);
		}
		myElement=document.getElementById(gcm_myid);
		myElement.appendChild(nodeFlash);
	}
}

function AC_FL_RunContent(){
	var ret = 
		AC_GetArgs
		(  arguments, ".mov", "movie", "clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B");

	AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs,ret.myElement);
}

function AC_GetArgs(args, ext, srcParamName, classid)
{
	var ret = new Object();
	ret.embedAttrs = new Object();
	ret.params = new Object();
	ret.objAttrs = new Object();
	ret.myElement= new Object();
	for (var i=0; i < args.length; i=i+2){
		var currArg = args[i].toLowerCase();    
		switch (currArg){	
			case "classid":
				break;
			case "pluginspage":
				ret.embedAttrs[args[i]] = args[i+1];
				break;
			case "onafterupdate":
			case "onbeforeupdate":
			case "onblur":
			case "oncellchange":
			case "onclick":
			case "ondblClick":
			case "ondrag":
			case "ondragend":
			case "ondragenter":
			case "ondragleave":
			case "ondragover":
			case "ondrop":
			case "onfinish":
			case "onfocus":
			case "onhelp":
			case "onmousedown":
			case "onmouseup":
			case "onmouseover":
			case "onmousemove":
			case "onmouseout":
			case "onkeypress":
			case "onkeydown":
			case "onkeyup":
			case "onload":
			case "onlosecapture":
			case "onpropertychange":
			case "onreadystatechange":
			case "onrowsdelete":
			case "onrowenter":
			case "onrowexit":
			case "onrowsinserted":
			case "onstart":
			case "onscroll":
			case "onbeforeeditfocus":
			case "onactivate":
			case "onbeforedeactivate":
			case "ondeactivate":
			case "type":
			case "codebase":
			case "id":
				ret.objAttrs[args[i]] = args[i+1];
				break;
			case "width":
			case "height":
			case "align":
			case "vspace": 
			case "hspace":
			case "class":
			case "title":
			case "accesskey":
			case "name":
			case "tabindex":
				ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i+1];
				break;
			case "gcm_myid":
				ret.myElement=args[i+1];
				break;
			case "paramsqt":
				var tmpparams=args[i+1];
				for (var i in tmpparams)
					ret.embedAttrs[i] = ret.params[i] = tmpparams[i];
				break;
			default:
				ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i+1];
		}
	}
	ret.objAttrs["classid"] = classid;
	return ret;
}

function insertQuicktime (myElement,myBasePath, myfile, mywidth, myheight,fullscreen,params)
{
			// if we've detected an acceptable version
		// embed the Flash Content SWF when all tests are passed
		AC_FL_RunContent(
			"name", "quicktime",
			"width", mywidth,
			"height", myheight,
			"id", "quicktime",
			"src",myfile,
			"controller","false",
			"cache","true",
			"scale","tofit",
			"codebase","http://www.apple.com/qtactivex/qtplugin.cab",
			"gcm_myid",myElement,
			"paramsqt",params
		);

}

