/////////////  PLUG-IN WIZZARD VARIABLES  //////////////////////////////////


////////// COMMON VARIABLES, CHECK THESE OUT ///////////
	// binary download address 
	// NOTE1! full address needed for NS 5!
	// NOTE2! https protocol is highly recomended, othervise high risk of errors debending client configuration!
var XSPLG_BINARY_URL = location.protocol + "//" + location.host + location.pathname.substring(0, (location.pathname.indexOf("plugin/")) ) + "client_bin/";

	// plugin version. (NOTE! this directory must be present under knee "client" directory )
var XSPLG_VERSION="1.0.1.1";
///////////////////// END //////////////////////////////

////////// HARD CODED VALUES, DO NOT MODIFY ////////////
	//xsign_version
var XSPLG_VERSION_FULL = "X-Sign Client " + XSPLG_VERSION;
	//xsign_name
var XSPLG_VERSION_NAME = "X-Sign Client";

  // Netscape client, mime type
  		//xsign_mimetype
	var XSPLG_NS_MIMETYPE="application/x-avaintec-xsign-digital-signature-plugin";
		//xsign_embed_file for netscape 4x
	var XSPLG_NS_EMPED_FILE = "n_sfdsig.jar"
		//xsign_xpi_file for mozilla
	var XSPLG_NS_XPI_FILE = "xsignclient.xpi"
	if (navigator.platform.toLowerCase().indexOf("linux")!= -1){XSPLG_NS_XPI_FILE = "xsignMozillaUnix.xpi"}
  
  // IE client, activex controll type
  		//xsign_activex_classid
	var XSPLG_IE_ACTIVEX_CLASSID = "CLSID:69C2F191-D74A-11D4-B0E2-0050DA2DE7D8";
		//xsign_activex_file
	var XSPLG_IE_ACTIVEX_FILE = "sfdsig.cab#version=-1,-1,-1,-1";
		//activex_name
	var XSPLG_IE_ACTIVEX_NAME = "Sfdsig.SFdsig_control";

	// common addressing and language setting
var XSPLG_INSTALL_PATH = location.pathname.substring(0, (location.pathname.indexOf("install/") + 8) );
var XSPLG_CALLER_PAGE = unescape(location.search.substring(1));
XSPLG_BINARY_URL += XSPLG_VERSION + "/";
///////////////////// END //////////////////////////////


////////////// THIS CAN BE CUSTOMIZED //////////////////
// return address when canceling installation
var XSPLG_CANCEL_URL = location.pathname.substring(0, (location.pathname.indexOf("plugin/") + 7));
///////////////////// END //////////////////////////////


var FORM_LANGUAGE;
if (XSPLG_CALLER_PAGE.indexOf("lang=fi")!= -1 || location.href.indexOf("_fi")!= -1){FORM_LANGUAGE = "fi";}
	// REMOVE COMMNETS WHEN SWEDISH INSTALL WIZARD IS AVAILABLE !!!
	//else if (XSPLG_CALLER_PAGE.indexOf("lang=se")!= -1){FORM_LANGUAGE = "se";}
	else{FORM_LANGUAGE = "en";}
	
if ((navigator.platform == "Win32") && (navigator.appName.indexOf("Microsoft Internet Explorer") != -1) && (parseInt(navigator.appVersion) >= 4)) {XSPLG_BR_VERSION = "ie";} 
	else if ((parseInt(navigator.appVersion) == 5 && navigator.appName.indexOf("Netscape")!= -1)) {XSPLG_BR_VERSION = "ns5";} 
	else if ((parseInt(navigator.appVersion) == 4 && navigator.appName.indexOf("Netscape")!= -1)) {XSPLG_BR_VERSION = "ns4";}

// language specified messages
	var XSPLG_LANG_FI = {
		'confirmation' : "Palvelu käyttää uudenpaa X-Sign versiota. Haluatko asentaa uuden X-Sign version?",
		'cancelConfirmation' : "Oletko varma? Et pysty käyttämään sähköisiä lomakkeita ilman X-Sign Clientia!" + top.document.URL + " - " + XSPLG_CALLER_PAGE}

	var XSPLG_LANG_EN = {
		'confirmation' : "A newer X-Sign version is available. Do you want to install new version?",
		'cancelConfirmation' : "Are you sure? You won't be able to use forms without the X-Sign browser add-on!"}
	
	var XSPLG_LANG_SE = {
		'confirmation' : "En nyare version av X-Sign finns tillgänglig. Vill du intallera den?",
		'cancelConfirmation' : "Är du säker? Du kan inte använda blanketter utan X-Sign klienten!"}
///////////////////// END PLUG-IN WIZZARD VARIABLES //////////////////////////////

	
// COMMON FUNTIONS
// The main function for checkin out x-sign client presencence
function xsplg_checkClient() {
	var my_pf=navigator.platform;
	var v_num=parseInt(navigator.appVersion);
	if (!((my_pf == "Win32") && (XSPLG_BR_VERSION == "ie") && (v_num >= 4))) {	
		var xsplg_ns = sniffXsign();
		if (xsplg_ns == (-3)){
			// not netscape
			xsplg_openUnsuported();
		} else if (xsplg_ns == (-2)){
			// not win32
			if (navigator.platform.toLowerCase().indexOf("linux")!= -1){
				// not win32, is linux
			} else {
				// not win32, not linux
				xsplg_openUnsuported();
			}
		} else if (xsplg_ns == (-1)) {
			// plugin not present
		} else if (xsplg_ns == (0)) {
			// old plugin version
		} else if (xsplg_ns == (1)) {
			// ok
		} 
	}
}
		
function sniffXsign() {
	if (navigator.appName.indexOf("Netscape") == -1) {
		return -3;
	}
		
	if (!((parseInt(navigator.appVersion) == 4) || (parseInt(navigator.appVersion) == 5))) {
		return -3;
	}

	if (navigator.platform != "Win32") {
		return -2;
	}
	
	var is_xsign = sniffPlugin();
			
	if (is_xsign == 0) {
		var update_plugin=confirm(this["xsplg_lang_" + FORM_LANGUAGE].confirmation);
		if (update_plugin) {
			return 1;
		} 
	}
	return is_xsign;
}

// This checks whether the newest version of X-Sign is present.
// Returns either true, false, or "expired".
function sniffPlugin() {
	var curr_plugin=new Object();
	var number_plugins=navigator.plugins.length;
	if ((number_plugins > 1) && navigator.mimeTypes && navigator.mimeTypes[XSPLG_NS_MIMETYPE] && navigator.mimeTypes[XSPLG_NS_MIMETYPE].enabledPlugin && navigator.mimeTypes[XSPLG_NS_MIMETYPE].suffixes.indexOf("sfdsig") != -1){
	//
	// Note this beaty!!!
	//
		var tmpPluginsDescription = "X-Sign Client 1.0.1.1"
		if (navigator.platform.toLowerCase().indexOf("linux") == -1){
		 	tmpPluginsDescription = navigator.plugins[XSPLG_VERSION_NAME].description;
		}
	//
	// Must be fixed in Linux plugin...
	//	
		return compareStrings(tmpPluginsDescription);
	}
	
	return -1;
} 			

function xsplg_writeObject() {
	document.write('<object classid="');
	document.write(XSPLG_IE_ACTIVEX_CLASSID);
	document.write('" codebase="');
	document.write(XSPLG_BINARY_URL + XSPLG_IE_ACTIVEX_FILE);
	document.writeln('" id="objCrypto"></object>');
} 

function xsplg_writeEmbed() {
	if (parseInt(navigator.appVersion) == 4)
		window.location= XSPLG_BINARY_URL + XSPLG_NS_EMPED_FILE;
	if (parseInt(navigator.appVersion) == 5){
		xsPresent = sniffXsign();
		if (xsPresent==(-1)){
			InstallTrigger.startSoftwareUpdate(XSPLG_BINARY_URL + XSPLG_NS_XPI_FILE);
		}else if (xsPresent == 1){
			xsplg_openSuccessPage();
		}
	}

}

function xsplg_cancelInst() {
	var my_reply=confirm(this["XSPLG_LANG_" + FORM_LANGUAGE.toUpperCase()].cancelConfirmation);
	if (my_reply) {
		window.open(XSPLG_CANCEL_URL , '_self');
	} else {return false;}
}

function xsplg_checkInstall() {
	navigator.plugins.refresh(false);
	var is_xsign=sniffPlugin();
	if (is_xsign == -1) {
		xsplg_openFailedPage();
	} else if (is_xsign == 1) {
		xsplg_openSuccessPage();
	} else if (is_xsign == 0){
		xsplg_openSuccessUpdPage();
	}
}


// Page addressing //////////////////////////
function xsplg_openStartPage() {
	var startPage = XSPLG_INSTALL_PATH + XSPLG_BR_VERSION + "/xSignInstallStart_" + FORM_LANGUAGE + ".html?" + XSPLG_CALLER_PAGE;
	window.location = startPage;
}

function xsplg_openInstallPage(param) {
	parameter = param ? "#" + param : "";
	var installPage = XSPLG_INSTALL_PATH + XSPLG_BR_VERSION + "/xSignInstall_" + FORM_LANGUAGE + ".html?" + XSPLG_CALLER_PAGE + parameter;
	if (navigator.platform.toLowerCase().indexOf("linux")!= -1){
		installPage = XSPLG_INSTALL_PATH + XSPLG_BR_VERSION + "/xSignInstall_linux_" + FORM_LANGUAGE + ".html?" + XSPLG_CALLER_PAGE + parameter;
	}
	window.location = installPage;
}

function xsplg_openLicencePage() {
	var licencePage = XSPLG_INSTALL_PATH + "xSignLicence_" + FORM_LANGUAGE + ".html?" + XSPLG_CALLER_PAGE;
	window.location = licencePage;
}

function xsplg_openFailedPage() {
	var failedPage = XSPLG_INSTALL_PATH + XSPLG_BR_VERSION + "/xSignInstallFail_" + FORM_LANGUAGE + ".html?" + XSPLG_CALLER_PAGE;
	window.location = failedPage;
}

// IE only
function xsplg_openFailedUpdPage(){
	var failedPage = XSPLG_INSTALL_PATH + XSPLG_BR_VERSION + "/xSignInstallFailUpd_" + FORM_LANGUAGE + ".html?" + XSPLG_CALLER_PAGE;
	window.location = failedPage;
}

// NS4 only
function xsplg_openSuccessUpdPage(){
	var failedPage = XSPLG_INSTALL_PATH + XSPLG_BR_VERSION + "/xSignInstallSuccessUpd_" + FORM_LANGUAGE + ".html?" + XSPLG_CALLER_PAGE;
	window.location = failedPage;
}

function xsplg_openSuccessPage() {
	var successPage = XSPLG_INSTALL_PATH + XSPLG_BR_VERSION + "/xSignInstallSuccess_" + FORM_LANGUAGE + ".html?" + XSPLG_CALLER_PAGE;
	window.location = successPage;
}

function xsplg_openHelpPage() {
	var helpPage = XSPLG_INSTALL_PATH + XSPLG_BR_VERSION + "/xSignInstallHelp_" + FORM_LANGUAGE + ".html?" + XSPLG_CALLER_PAGE;
	window.location = helpPage;
}

function xsplg_downloadActivexAsZip() {
	var helpPage = XSPLG_BINARY_URL + "xSignInstall.zip";
	window.location = helpPage;
}

function xsplg_openOriginal() {
	if (XSPLG_CALLER_PAGE.length < 10){
		XSPLG_CALLER_PAGE = XSPLG_CANCEL_URL;
	}
	window.open(XSPLG_CALLER_PAGE, "_top");
}

function xsplg_openUnsuported() {
	var url_info = XSPLG_INSTALL_PATH + "xSignUnsuported_" + FORM_LANGUAGE + ".html?" + XSPLG_CALLER_PAGE;
	window.location = url_info;
}
function xsplg_openInfo() {
	var url_info = XSPLG_INSTALL_PATH + "xSignPlatforms_" + FORM_LANGUAGE + ".html?" + XSPLG_CALLER_PAGE;
	window.location = url_info;
}

// compare given string to version
// Returns either true, false, or "expired".
function compareStrings(currentPluginDesc) 
{
		if (currentPluginDesc == XSPLG_VERSION_FULL){
			return 1;
		}
		
		var i=0;
	
		while( i < currentPluginDesc.length && i < XSPLG_VERSION_FULL.length)
		{
			if (XSPLG_VERSION_FULL.charAt(i) != currentPluginDesc.charAt(i))
			{
				if (XSPLG_VERSION_FULL.charAt(i) == ".") // 10 > 1. in the middle
				{
					return 1;
				} else if (currentPluginDesc.charAt(i) == ".") // 1 < 10 in the middle
				{
					return 0;
				} else if (currentPluginDesc.charAt(i) > XSPLG_VERSION_FULL.charAt(i)) // 9 > 8
				{ 
					if (XSPLG_VERSION_FULL.length == (i+1)) // 9x > 8 in the end
					{
						return 1;
					}
					else if (XSPLG_VERSION_FULL.charAt(i+1) == ".") // 9x > 8. in the middle
					{
						return 1;
					}
					else if (currentPluginDesc.length == (i+1)) // 9 < 8x in the end
					{
						return 0;
					}
					else if (currentPluginDesc.charAt(i+1) == ".") // 9. < 8x in the middle
					{
						return 0;
					}
					else return 1; // 9x > 8x in the middle or in the end
				} else { // 8 < 9
					if (currentPluginDesc.length == (i+1)) // 8 < 9x in the end
					{
						return 0;
					}
					else if (currentPluginDesc.charAt(i+1) == ".") // 8. < 9 in the middle
					{
						return 0;
					}
					else if (XSPLG_VERSION_FULL.length == (i+1)) // 8x > 9 in the end
					{
						return 1;
					}
					else if (XSPLG_VERSION_FULL.charAt(i+1) == ".") // 8x > 9. in the middle
					{
						return 1;
					}
					else return 0; // 8x < 9x in the middle or in the end
				}
			}
			else 
				i++;
		}
		
		if (XSPLG_VERSION_FULL.length > currentPluginDesc.length)
			return 0;
		else if (XSPLG_VERSION_FULL.length < currentPluginDesc.length)
			return 1;
		else return 2;
}



