
var deployJava={
    debug:null,
    firefoxJavaVersion:null,
    myInterval:null,
    preInstallJREList:null,
    returnPage:null,
    brand:null,
    locale:null,
    installType:null,
    EAInstallEnabled:false,
    EarlyAccessURL:null,
    getJavaURL:'http://java.sun.com/webapps/getjava/BrowserRedirect?host=java.com',
    appleRedirectPage:'http://www.apple.com/support/downloads/',
    oldMimeType:'application/npruntime-scriptable-plugin;DeploymentToolkit',
    mimeType:'application/java-deployment-toolkit',
    launchButtonPNG:'http://java.sun.com/products/jfc/tsc/articles/swing2d/webstart.png',
    browserName:null,
    browserName2:null,
    getJREs:function(){
        var list=new Array();if(deployJava.isPluginInstalled()){
            var plugin=deployJava.getPlugin();var VMs=plugin.jvms;for(var i=0;i<VMs.getLength();i++){
                list[i]=VMs.get(i).version;
            }
        }else{
            var browser=deployJava.getBrowser();if(browser=='MSIE'){
                if(deployJava.testUsingActiveX('1.7.0')){
                    list[0]='1.7.0';
                }else if(deployJava.testUsingActiveX('1.6.0')){
                    list[0]='1.6.0';
                }else if(deployJava.testUsingActiveX('1.5.0')){
                    list[0]='1.5.0';
                }else if(deployJava.testUsingActiveX('1.4.2')){
                    list[0]='1.4.2';
                }else if(deployJava.testForMSVM()){
                    list[0]='1.1';
                }
            }else if(browser=='Netscape Family'){
                deployJava.getJPIVersionUsingMimeType();if(deployJava.firefoxJavaVersion!=null){
                    list[0]=deployJava.firefoxJavaVersion;
                }else if(deployJava.testUsingMimeTypes('1.7')){
                    list[0]='1.7.0';
                }else if(deployJava.testUsingMimeTypes('1.6')){
                    list[0]='1.6.0';
                }else if(deployJava.testUsingMimeTypes('1.5')){
                    list[0]='1.5.0';
                }else if(deployJava.testUsingMimeTypes('1.4.2')){
                    list[0]='1.4.2';
                }else if(deployJava.browserName2=='Safari'){
                    if(deployJava.testUsingPluginsArray('1.7.0')){
                        list[0]='1.7.0';
                    }else if(deployJava.testUsingPluginsArray('1.6')){
                        list[0]='1.6.0';
                    }else if(deployJava.testUsingPluginsArray('1.5')){
                        list[0]='1.5.0';
                    }else if(deployJava.testUsingPluginsArray('1.4.2')){
                        list[0]='1.4.2';
                    }
                }
            }
        }
        if(deployJava.debug){
            for(var i=0;i<list.length;++i){
                alert('We claim to have detected Java SE '+list[i]);
            }
        }
        return list;
    },
    installJRE:function(requestVersion){
        var ret=false;
        if(deployJava.isPluginInstalled()){
            if(deployJava.getPlugin().installJRE(requestVersion)){
                deployJava.refresh();if(deployJava.returnPage!=null){
                    document.location=deployJava.returnPage;
                }
                return true;
            }else{
                return false;
            }
        }else{
            return deployJava.installLatestJRE();
        }
    },
    installLatestJRE:function(){
        if(deployJava.isPluginInstalled()){
            if(deployJava.getPlugin().installLatestJRE()){
                deployJava.refresh();if(deployJava.returnPage!=null){
                    document.location=deployJava.returnPage;
                }
                return true;
            }else{
                return false;
            }
        }else{
            var browser=deployJava.getBrowser();var platform=navigator.platform.toLowerCase();if((deployJava.EAInstallEnabled=='true')&&(platform.indexOf('win')!=-1)&&(deployJava.EarlyAccessURL!=null)){
                deployJava.preInstallJREList=deployJava.getJREs();if(deployJava.returnPage!=null){
                    deployJava.myInterval=setInterval("deployJava.poll()",3000);
                }
                location.href=deployJava.EarlyAccessURL;return false;
            }else{
                if(browser=='MSIE'){
                    return deployJava.IEInstall();
                }else if((browser=='Netscape Family')&&(platform.indexOf('win32')!=-1)){
                    return deployJava.FFInstall();
                }else{
                    location.href=deployJava.getJavaURL+
                    ((deployJava.returnPage!=null)?('&returnPage='+deployJava.returnPage):'')+
                    ((deployJava.locale!=null)?('&locale='+deployJava.locale):'')+
                    ((deployJava.brand!=null)?('&brand='+deployJava.brand):'');
                }
                return false;
            }
        }
    },
    runApplet:function(attributes,parameters,minimumVersion){
        if(minimumVersion=='undefined'||minimumVersion==null){
            minimumVersion='1.1';
        }
        var regex="^(\\d+)(?:\\.(\\d+)(?:\\.(\\d+)(?:_(\\d+))?)?)?$";var matchData=minimumVersion.match(regex);if(deployJava.returnPage==null){
            deployJava.returnPage=document.location;
        }
        if(matchData!=null){
            var browser=deployJava.getBrowser();if((browser!='?')&&('Safari'!=deployJava.browserName2)){
                if(deployJava.versionCheck(minimumVersion+'+')){
                    deployJava.writeAppletTag(attributes,parameters);
                }else if(deployJava.installJRE(minimumVersion+'+')){
                    deployJava.refresh();location.href=document.location;deployJava.writeAppletTag(attributes,parameters);
                }
            }else{
                deployJava.writeAppletTag(attributes,parameters);
            }
        }else{
            if(deployJava.debug){
                alert('Invalid minimumVersion argument to runApplet():'+
                    minimumVersion);
            }
        }
    },
    writeAppletTag:function(attributes,parameters){
        var s='<'+'applet ';var codeAttribute=false;for(var attribute in attributes){
            s+=(' '+attribute+'="'+attributes[attribute]+'"');if(attribute=='code'){
                codeAttribute=true;
            }
        }
        if(!codeAttribute){
            s+=(' code="dummy"');
        }
        s+='>';document.write(s);if(parameters!='undefined'&&parameters!=null){
            var codebaseParam=false;for(var parameter in parameters){
                if(parameter=='codebase_lookup'){
                    codebaseParam=true;
                }
                s='<param name="'+parameter+'" value="'+
                parameters[parameter]+'">';document.write(s);
            }
            if(!codebaseParam){
                document.write('<param name="codebase_lookup" value="false">');
            }
        }
        document.write('<'+'/'+'applet'+'>');
    },
    versionCheck:function(versionPattern)

    {
        var index=0;var regex="^(\\d+)(?:\\.(\\d+)(?:\\.(\\d+)(?:_(\\d+))?)?)?(\\*|\\+)?$";var matchData=versionPattern.match(regex);if(matchData!=null){
            var familyMatch=true;var patternArray=new Array();for(var i=1;i<matchData.length;++i){
                if((typeof matchData[i]=='string')&&(matchData[i]!='')){
                    patternArray[index]=matchData[i];index++;
                }
            }
            if(patternArray[patternArray.length-1]=='+'){
                familyMatch=false;patternArray.length--;
            }else{
                if(patternArray[patternArray.length-1]=='*'){
                    patternArray.length--;
                }
            }
            var list=deployJava.getJREs();for(var i=0;i<list.length;++i){
                if(deployJava.compareVersionToPattern(list[i],patternArray,familyMatch)){
                    return true;
                }
            }
            return false;
        }else{
            alert('Invalid versionPattern passed to versionCheck: '+
                versionPattern);return false;
        }
    },
    isWebStartInstalled:function(minimumVersion){
        var browser=deployJava.getBrowser();if((browser=='?')||('Safari'==deployJava.browserName2)){
            return true;
        }
        if(minimumVersion=='undefined'||minimumVersion==null){
            minimumVersion='1.4.2';
        }
        var retval=false;var regex="^(\\d+)(?:\\.(\\d+)(?:\\.(\\d+)(?:_(\\d+))?)?)?$";var matchData=minimumVersion.match(regex);if(matchData!=null){
            retval=deployJava.versionCheck(minimumVersion+'+');
        }else{
            if(deployJava.debug){
                alert('Invalid minimumVersion argument to isWebStartInstalled(): '+minimumVersion);
            }
            retval=deployJava.versionCheck('1.4.2+');
        }
        return retval;
    },
    getJPIVersionUsingMimeType:function(){
        for(var i=0;i<navigator.mimeTypes.length;++i){
            var s=navigator.mimeTypes[i].type;var m=s.match(/^application\/x-java-applet;jpi-version=(.*)$/);if(m!=null){
                deployJava.firefoxJavaVersion=m[1];break;
            }
        }
    },
    launchWebStartApplication:function(jnlp){
        return false;
    },
    createWebStartLaunchButtonEx:function(jnlp,minimumVersion){
        if(deployJava.returnPage==null){
            deployJava.returnPage=jnlp;
        }
        var url='javascript:deployJava.launchWebStartApplication(\''+jnlp+'\');';document.write('<'+'a href="'+url+'" onMouseOver="window.status=\'\'; '+'return true;"><'+'img '+'src="'+deployJava.launchButtonPNG+'" '+'border="0" /><'+'/'+'a'+'>');
    },
    createWebStartLaunchButton:function(jnlp,minimumVersion){
        if(deployJava.returnPage==null){
            deployJava.returnPage=jnlp;
        }
        var url='javascript:'+'if (!deployJava.isWebStartInstalled(&quot;'+
        minimumVersion+'&quot;)) {'+'if (deployJava.installLatestJRE()) {'+'if (deployJava.launch(&quot;'+jnlp+'&quot;)) {}'+'}'+'} else {'+'if (deployJava.launch(&quot;'+jnlp+'&quot;)) {}'+'}';document.write('<'+'a href="'+url+'" onMouseOver="window.status=\'\'; '+'return true;"><'+'img '+'src="'+deployJava.launchButtonPNG+'" '+'border="0" /><'+'/'+'a'+'>');
    },
    launch:function(jnlp){
        document.location=jnlp;return true;
    },
    isPluginInstalled:function(){
        var plugin=deployJava.getPlugin();if(plugin&&plugin.jvms){
            return true;
        }else{
            return false;
        }
    },
    isAutoUpdateEnabled:function(){
        if(deployJava.isPluginInstalled()){
            return deployJava.getPlugin().isAutoUpdateEnabled();
        }
        return false;
    },
    setAutoUpdateEnabled:function(){
        if(deployJava.isPluginInstalled()){
            return deployJava.getPlugin().setAutoUpdateEnabled();
        }
        return false;
    },
    setInstallerType:function(type){
        deployJava.installType=type;if(deployJava.isPluginInstalled()){
            return deployJava.getPlugin().setInstallerType(type);
        }
        return false;
    },
    setAdditionalPackages:function(packageList){
        if(deployJava.isPluginInstalled()){
            return deployJava.getPlugin().setAdditionalPackages(packageList);
        }
        return false;
    },
    setEarlyAccess:function(enabled){
        deployJava.EAInstallEnabled=enabled;
    },
    isPlugin2:function(){
        if(deployJava.isPluginInstalled()){
            if(deployJava.versionCheck('1.6.0_10+')){
                try{
                    return deployJava.getPlugin().isPlugin2();
                }catch(err){}
            }
        }
        return false;
    },
    allowPlugin:function(){
        deployJava.getBrowser();var ret=('Chrome'!=deployJava.browserName2&&'Safari'!=deployJava.browserName2&&'Opera'!=deployJava.browserName2);return ret;
    },
    getPlugin:function(){
        deployJava.refresh();var ret=null;if(deployJava.allowPlugin()){
            ret=document.getElementById('deployJavaPlugin');
        }
        return ret;
    },
    compareVersionToPattern:function(version,patternArray,familyMatch){
        var regex="^(\\d+)(?:\\.(\\d+)(?:\\.(\\d+)(?:_(\\d+))?)?)?$";var matchData=version.match(regex);if(matchData!=null){
            var index=0;var result=new Array();for(var i=1;i<matchData.length;++i){
                if((typeof matchData[i]=='string')&&(matchData[i]!=''))

                {
                    result[index]=matchData[i];index++;
                }
            }
            var l=Math.min(result.length,patternArray.length);if(familyMatch){
                for(var i=0;i<l;++i){
                    if(result[i]!=patternArray[i])return false;
                }
                return true;
            }else{
                for(var i=0;i<l;++i){
                    if(result[i]<patternArray[i]){
                        return false;
                    }else if(result[i]>patternArray[i]){
                        return true;
                    }
                }
                return true;
            }
        }else{
            return false;
        }
    },
    getBrowser:function(){
        if(deployJava.browserName==null){
            var browser=navigator.userAgent.toLowerCase();if(deployJava.debug){
                alert('userAgent -> '+browser);
            }
            if(browser.indexOf('msie')!=-1){
                deployJava.browserName='MSIE';deployJava.browserName2='MSIE';
            }else if(browser.indexOf('firefox')!=-1){
                deployJava.browserName='Netscape Family';deployJava.browserName2='Firefox';
            }else if(browser.indexOf('chrome')!=-1){
                deployJava.browserName='Netscape Family';deployJava.browserName2='Chrome';
            }else if(browser.indexOf('safari')!=-1){
                deployJava.browserName='Netscape Family';deployJava.browserName2='Safari';
            }else if(browser.indexOf('mozilla')!=-1){
                deployJava.browserName='Netscape Family';deployJava.browserName2='Other';
            }else if(browser.indexOf('opera')!=-1){
                deployJava.browserName='Netscape Family';deployJava.browserName2='Opera';
            }else{
                deployJava.browserName='?';deployJava.browserName2='unknown';
            }
            if(deployJava.debug){
                alert('Detected browser name:'+deployJava.browserName+', '+deployJava.browserName2);
            }
        }
        return deployJava.browserName;
    },
    testUsingActiveX:function(version){
        var objectName='JavaWebStart.isInstalled.'+version+'.0';if(!ActiveXObject){
            if(deployJava.debug){
                alert('Browser claims to be IE, but no ActiveXObject object?');
            }
            return false;
        }
        try{
            return(new ActiveXObject(objectName)!=null);
        }catch(exception){
            return false;
        }
    },
    testForMSVM:function(){
        var clsid='{08B0E5C0-4FCB-11CF-AAA5-00401C608500}';if(typeof oClientCaps!='undefined'){
            var v=oClientCaps.getComponentVersion(clsid,"ComponentID");if((v=='')||(v=='5,0,5000,0')){
                return false;
            }else{
                return true;
            }
        }else{
            return false;
        }
    },
    testUsingMimeTypes:function(version){
        if(!navigator.mimeTypes){
            if(deployJava.debug){
                alert('Browser claims to be Netscape family, but no mimeTypes[] array?');
            }
            return false;
        }
        for(var i=0;i<navigator.mimeTypes.length;++i){
            s=navigator.mimeTypes[i].type;var m=s.match(/^application\/x-java-applet\x3Bversion=(1\.8|1\.7|1\.6|1\.5|1\.4\.2)$/);if(m!=null){
                if(deployJava.compareVersions(m[1],version)){
                    return true;
                }
            }
        }
        return false;
    },
    testUsingPluginsArray:function(version){
        if((!navigator.plugins)||(!navigator.plugins.length)){
            return false;
        }
        var platform=navigator.platform.toLowerCase();for(var i=0;i<navigator.plugins.length;++i){
            s=navigator.plugins[i].description;if(s.search(/^Java Switchable Plug-in (Cocoa)/)!=-1){
                if(deployJava.compareVersions("1.5.0",version)){
                    return true;
                }
            }else if(s.search(/^Java/)!=-1){
                if(platform.indexOf('win')!=-1){
                    if(deployJava.compareVersions("1.5.0",version)||deployJava.compareVersions("1.6.0",version)){
                        return true;
                    }
                }
            }
        }
        if(deployJava.compareVersions("1.5.0",version)){
            return true;
        }
        return false;
    },
    IEInstall:function(){
        location.href=deployJava.getJavaURL+
        ((deployJava.returnPage!=null)?('&returnPage='+deployJava.returnPage):'')+
        ((deployJava.locale!=null)?('&locale='+deployJava.locale):'')+
        ((deployJava.brand!=null)?('&brand='+deployJava.brand):'')+
        ((deployJava.installType!=null)?('&type='+deployJava.installType):'');return false;
    },
    done:function(name,result){},
    FFInstall:function(){
        location.href=deployJava.getJavaURL+
        ((deployJava.returnPage!=null)?('&returnPage='+deployJava.returnPage):'')+
        ((deployJava.locale!=null)?('&locale='+deployJava.locale):'')+
        ((deployJava.brand!=null)?('&brand='+deployJava.brand):'')+
        ((deployJava.installType!=null)?('&type='+deployJava.installType):'');return false;
    },
    compareVersions:function(installed,required){
        var a=installed.split('.');var b=required.split('.');for(var i=0;i<a.length;++i){
            a[i]=Number(a[i]);
        }
        for(var i=0;i<b.length;++i){
            b[i]=Number(b[i]);
        }
        if(a.length==2){
            a[2]=0;
        }
        if(a[0]>b[0])return true;if(a[0]<b[0])return false;if(a[1]>b[1])return true;if(a[1]<b[1])return false;if(a[2]>b[2])return true;if(a[2]<b[2])return false;return true;
    },
    enableAlerts:function(){
        deployJava.browserName=null;deployJava.debug=true;
    },
    poll:function(){
        deployJava.refresh();var postInstallJREList=deployJava.getJREs();if((deployJava.preInstallJREList.length==0)&&(postInstallJREList.length!=0)){
            clearInterval(deployJava.myInterval);if(deployJava.returnPage!=null){
                location.href=deployJava.returnPage;
            };
        }
        if((deployJava.preInstallJREList.length!=0)&&(postInstallJREList.length!=0)&&(deployJava.preInstallJREList[0]!=postInstallJREList[0])){
            clearInterval(deployJava.myInterval);if(deployJava.returnPage!=null){
                location.href=deployJava.returnPage;
            }
        }
    },
    writePluginTag:function(){
        var browser=deployJava.getBrowser();if(browser=='MSIE'){
            document.write('<'+'object classid="clsid:CAFEEFAC-DEC7-0000-0000-ABCDEFFEDCBA" '+'id="deployJavaPlugin" width="0" height="0">'+'<'+'/'+'object'+'>');
        }else if(browser=='Netscape Family'&&deployJava.allowPlugin()){
            deployJava.writeEmbedTag();
        }
    },
    refresh:function(){
        navigator.plugins.refresh(false);var browser=deployJava.getBrowser();if(browser=='Netscape Family'&&deployJava.allowPlugin()){
            var plugin=document.getElementById('deployJavaPlugin');if(plugin==null){
                deployJava.writeEmbedTag();
            }
        }
    },
    writeEmbedTag:function(){
        var written=false;if(navigator.mimeTypes!=null){
            for(var i=0;i<navigator.mimeTypes.length;i++){
                if(navigator.mimeTypes[i].type==deployJava.mimeType){
                    if(navigator.mimeTypes[i].enabledPlugin){
                        document.write('<'+'embed id="deployJavaPlugin" type="'+
                            deployJava.mimeType+'" hidden="true" />');written=true;
                    }
                }
            }
            if(!written)for(var i=0;i<navigator.mimeTypes.length;i++){
                if(navigator.mimeTypes[i].type==deployJava.oldMimeType){
                    if(navigator.mimeTypes[i].enabledPlugin){
                        document.write('<'+'embed id="deployJavaPlugin" type="'+
                            deployJava.oldMimeType+'" hidden="true" />');
                    }
                }
            }
        }
    },
    do_initialize:function(){
        deployJava.writePluginTag();if(deployJava.locale==null){
            var loc=null;if(loc==null)try{
                loc=navigator.userLanguage;
            }catch(err){}
            if(loc==null)try{
                loc=navigator.systemLanguage;
            }catch(err){}
            if(loc==null)try{
                loc=navigator.language;
            }catch(err){}
            if(loc!=null){
                loc.replace("-","_")
                deployJava.locale=loc;
            }
        }
    }
};deployJava.do_initialize();



