var gSafiSymADataVersion	= "3.5.3";
var gSafiWebVersion			= "3.5.3";
var gSafiSymADataTwoVersion	= "3.5.3";
var SymADataWebURL = "https://www-secure.symantec.com/techsupp/asa/ctrl/SymADataWeb.msi";
var SymAdvChatURL = "https://www-secure.symantec.com/techsupp/asa/ctrl/Symantec_Advanced_Chat.msi";
var SymControl = "";

if (document.URL.match(".*version=3") &&
	document.URL.match(".*/home_homeoffice/support/special/ocs/2.5/noflash.*")) {
	window.location = "/norton/support/special/ced/labrador.jsp" + window.location.search;
}

function safi_simpleRemoteControlInstalled() {
	var version = 0;
	var status = false;
	try
	{
		objCtrl = document.createElement('object');
		document.appendChild(objCtrl);
		objCtrl.style.display='none';
		objCtrl.classid="clsid:44990600-3C9D-426D-81DF-AAB636FA4345";
		objCtrl.id="ssrc";
		version = objCtrl.moduleversion;
		if (typeof version != 'undefined' && version != 'null' && version != "") {
			status = true;
		}
	} catch(e) {
		if (e.number  == -2147024156)
		{
			status = true;
		} else {
			status = false;
		}
	}
	return(status);
}

function versionGreater(ver1, ver2) {
	var verArr1 = ver1.split(".");
	var verArr2 = ver2.split(".");
	while ((0 < verArr1.length)&&(0 < verArr2.length)) {
		elem1 = verArr1.shift();
		elem2 = verArr2.shift();
		if (elem1 != elem2)
		{
			if (elem1 > elem2) return(1);
			if (elem1 < elem2) return(-1);

		}
	}
	if (verArr1.length > verArr2.length) return(1);
	if (verArr1.length < verArr2.length) return(-1);
	return(0);
}

function createControls(dID){
	try{
		var objCtrl = document.createElement('object');
		dID.appendChild(objCtrl);
		objCtrl.style.display='none';
		objCtrl.classid="clsid:44990301-3C9D-426D-81DF-AAB636FA4345";
		objCtrl.id="srCtl";
		objCtrl = document.createElement('object');
		dID.appendChild(objCtrl);
		objCtrl.style.display='none';
		objCtrl.classid="clsid:44990200-3C9D-426D-81DF-AAB636FA4345";
		objCtrl.id="siCtl";
		objCtrl = document.createElement('object');
		dID.appendChild(objCtrl);
		objCtrl.style.display='none';
		objCtrl.classid="clsid:F5CF5C57-A375-471e-B47E-ECA097CBB75C";
		objCtrl.id="objSymAData";
		objCtrl = document.createElement('object');
		dID.appendChild(objCtrl);
		objCtrl.style.display='none';
		objCtrl.classid="clsid:53AD31AB-D23E-40D2-9A84-C8B097212C2E";
		objCtrl.id="objSymLTCHK";
		objCtrl = document.createElement('object');
		dID.appendChild(objCtrl);
		objCtrl.style.display='none';
		objCtrl.classid="clsid:C61744D3-34C7-4211-8175-2F07C486B0D9";
		objCtrl.id="objSymSub";
	}catch(e){}
}
function createSymControl(dID){
	var arrIDs = new Array("symctrl","srCtl","siCtl","objSymAData","objSymLTCHK","objSymSub");
	for(var id in arrIDs){
		try{
			var obj = document.getElementById(arrIDs[id]);
			if(obj != undefined){
				dID.removeChild(obj);
			}
		}catch(e){}
	}

    try
    {
		var objCtrl = document.createElement('object');
		dID.appendChild(objCtrl);
		objCtrl.style.display='none';
        objCtrl.classid="clsid:5189CEDF-00E7-4BF8-86F3-B8EF935A45E9";
        objCtrl.id="symctrl2009";
        objCtrl.Initialize("OCS","2.5","PROD");
        SymControl = "2009";
    }
    catch(e)
    {
        try{
			var objCtrl = document.createElement('object');
			dID.appendChild(objCtrl);
			objCtrl.style.display='none';
            objCtrl.classid="clsid:A78CA9D6-780A-4eb7-B725-62F35A23892F";
            objCtrl.id="symctrl";
            SymControl = "";
        }catch(e){
        }
    }
}

function safi_PackgeNeeded() {
	var verWebPackage		= "0.0";
	var verDataPackage		= "0.0";
	var verDataTwoPackage	= "0.0";
	var symctrl = document.getElementById("symctrl");

	try { verWebPackage = symctrl.getPackageVersion("SOFTWARE\\Symantec Technical Support\\SymADataWeb")	 } catch(e) { }
	try { verDataPackage = symctrl.getPackageVersion("SOFTWARE\\Symantec Technical Support\\SymAData")		 } catch(e) {  }
	try { verDataTwoPackage = symctrl.getPackageVersion("SOFTWARE\\Symantec Technical Support\\SymAData2")		 } catch(e) {  }
	
    try
    {
        //alert(gSafiSymADataVersion+" : "+ verWebPackage);
        // Has an old (or no) version of SymAData.msi and symADataWeb.msi
        if ((versionGreater(gSafiSymADataVersion, verDataPackage) == 1) && (versionGreater(gSafiSymADataTwoVersion, verDataTwoPackage) == 1)) {
            return("symadataweb");
        }
        //Has a good version of SymAData.msi, but no RemoteControl
        if (versionGreater(gSafiWebVersion, verWebPackage) == -1) {
            //alert("chat");
            return("chat");
        }
    }
    catch(e)
    {
		//alert(e.message);
        return("");
    }
	return("");
}



function safi_isControlAvailable(arrControlNames) {
	var package_version = "3.5.3";
	var flNotAvailable = false;
	var objTemp = null;
	var objActX = document.getElementById("symctrl");
	if (arrControlNames == undefined || arrControlNames.length < 1) {
		arrControlNames = new Array("SymAData");
	}
	try {
		// Check package version number first then check controls
		if (safi_PackgeNeeded() != "") {
			throw(222);
		}
		for (var ix=0;ix<arrControlNames.length;ix++) {
			var strGuid = "";
			var strVersion = "";
			var strCheckType = "";
			var strHive = "";
			var strKey = "";
			//alert(arrControlNames[ix]);
			switch(arrControlNames[ix]) {
				case "siCtl":
					strGuid = "{44990200-3C9D-426D-81DF-AAB636FA4345}";
					strVersion = "6.9.2894.0";
					strCheckType = "control";
					break;
				case "srCtl":
					strGuid = "{44990301-3C9D-426D-81DF-AAB636FA4345}";
					strVersion = "6.9.2894.0";
					strCheckType = "control";
					break;
				case "SymAData":
					strGuid = "{F5CF5C57-A375-471e-B47E-ECA097CBB75C}";
					strVersion = "2.9.0.1";
					strCheckType = "control";
					break;
				case "sprtctlln":
					strGuid = "{44990500-3c9d-426d-81df-aab636fa4345}";
					strVersion = "6.9.2894.0";
					strCheckType = "control";
					break;
				case "tgconfctl":
					strGuid = "{44990b00-3c9d-426d-81df-aab636fa4345}";
					strVersion = "6.9.2894.0";
					strCheckType = "control";
					break;
				case "ssrc":
					strVersion = "6.9.2894.0";
					strHive = "HKEY_CLASSES_ROOT";
					strKey = "CLSID\\{44990650-3c9d-426d-81df-aab636fa4345}\\LocalServer32";
					strCheckType = "exe";
					break;
			}
			//alert(arrControlNames[ix]);
			switch(strCheckType){
				case "control":
					//alert(objActX.isValidControl(strGuid,strVersion));
					if(objActX.isValidControl(strGuid,strVersion) == "false") {
                        if(arrControlNames[ix] == "SymAData")
                        {
							//alert("secondary check");
                            if(objActX.isValidControl(strGuid,"2009.0.0.0") == "false")
                                throw(222);
							//alert("passed secondary");
                        }
					}
					break;
				case "exe":
					//alert(objActX.isValidExe(strHive, strKey,strVersion));
					if(objActX.isValidExe(strHive, strKey, strVersion) == "false") {
						throw(222);
					}
					break;
			}
		}
	} catch(err) {
		//alert(err.description);
		flNotAvailable = true;
	}
	objTemp = null;
	return !flNotAvailable;
}
var safi_curTimeoutLength = 0;
var safi_timeoutInterval = 3000;
function safi_isTimeoutMaxed() {
	var flResults = false;
	var maxTimeoutLength = 720000;
	if(safi_curTimeoutLength > maxTimeoutLength){
		flResults = true;
	}else{
		flResults = false;
		safi_curTimeoutLength += safi_timeoutInterval;
	}
	return flResults;
}
function safi_hasControls(strVersion) {
	var divControls = document.getElementById("dControls");
	createSymControl(divControls);

    if(SymControl == "2009")
        return true;
    else
    {
	    var flControls = safi_isControlAvailable(["srCtl","SymAData", "siCtl", "ssrc", "sprtctlln", "tgconfctl"]);
	    // At some point we should be checking the specific version of the controls -- CGE
	    return(flControls);
    }
}
function safi_doControlCheck_Loop(pass_callback, fail_callback){
	var divControls = document.getElementById("dControls");
	createSymControl(divControls);
	var flControls = safi_isControlAvailable(["srCtl","SymAData", "siCtl", "ssrc"]);
	if (flControls){
		setTimeout(pass_callback,3000);
	} else {
		if (!safi_isTimeoutMaxed()) {
			setTimeout("safi_doControlCheck_Loop('" + pass_callback + "','" + fail_callback + "')",3000);
		} else {
			setTimeout(fail_callback,3000);
		}
	}
}
function getDownloadURL(){
	createSymControl(document.getElementById("dControls"));
	var strResults = safi_PackgeNeeded();

	if(strResults == "chat")
		return SymAdvChatURL;
	else if(strResults == "symadataweb")
		return SymADataWebURL;
    
    return SymADataWebURL;
}

function flashMovie(){
	return document.getElementById("ocs");
}

function flashGetDownloadURL(){
	var strResults = getDownloadURL();
	try{
		flashMovie().setDownloadURL(strResults);
	}catch(e){}
}
