function div_open(name, vertical){ var div; div = document.getElementById(name); if(div.style.display == 'none' && (div.getAttribute("state") == null || div.getAttribute("state") == "closed")){ // make it visible //div.style.display = 'block'; var pic; pic = document.getElementById('btn_' + name); if (vertical == undefined) { Effect.BlindDown(name); Set_Cookie(name, 'block', '', '/', '', '' ); pic.setAttribute("src",'http://learn.forskills.co.uk/pix/images/25/minimise.png'); } else { Effect.BlindRight(name); Set_Cookie(name, 'block', '', '/', '', '' ); pic.setAttribute("src",'http://learn.forskills.co.uk/pix/images/25/left.png'); } }else if((div.getAttribute("state") == null || div.getAttribute("state") == "open")){ //make it invisible //div.style.display = 'none'; var pic; pic = document.getElementById('btn_' + name); if (vertical == undefined) { Effect.BlindUp(name); Set_Cookie(name, 'none', '', '/', '', '' ); pic.setAttribute("src",'http://learn.forskills.co.uk/pix/images/25/maximise.png'); } else { Effect.BlindLeft(name); Set_Cookie(name, 'none', '', '/', '', '' ); pic.setAttribute("src",'http://learn.forskills.co.uk/pix/images/25/right.png'); } } } function tab_open(name, id){ var div; var checkname; var actualcheckname; checkname = 'tab_'+name+'_'; actualcheckname = 'tab_'+name+'_'+id; var divs = document.getElementsByTagName('div'); for (var i = 0; i < divs.length; i++) { var div = divs[i]; var checkpart = div.id.substr(0,checkname.length); if (div.id.substr(0,checkname.length) == checkname){ if (id==0) { if (div.style.display == 'none') { Effect.BlindDown(div.id); } } else { if (div.id!=actualcheckname && div.style.display != 'none') { Effect.BlindUp(div.id); } } } } div = document.getElementById(actualcheckname); if (div.style.display == 'none') { Effect.BlindDown(div.id); } checkname = 'link_tab_'+name+'_'; actualcheckname = 'link_tab_'+name+'_'+id; var tds = document.getElementsByTagName('td'); for (var i = 0; i < tds.length; i++) { var td = tds[i]; var checkpart = td.id.substr(0,checkname.length); if (td.id.substr(0,checkname.length) == checkname){ if (td.id!=actualcheckname) { td.className = 'active'; } else { td.className = 'selected'; } } } } function parent_reload(){ window.parent.location.reload(true); } function parent_shadowbox_close(){ window.parent.Shadowbox.close(); } function popup_parent_reload(){ window.opener.location.reload(true); } function popup_parent_shadowbox_close(){ window.opener.Shadowbox.close(); } function showloadingmessageold(message){ Shadowbox.init({ players: ['html'] }); Shadowbox.open({ content: '
', player: 'html', title: 'Loading - Please wait...'});; } function showloadingmessage(message){ Shadowbox.init({ players: ['html'] }); Shadowbox.open({ content: '
', player: 'html', title: 'Loading - Please wait...'});; } function showloadingmessagenew(message){ AC_FL_RunContent( 'codebase','http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0','width','200','height','200','title','Loading Movie','src','http://learn.forskills.co.uk/pix/loadingMov','quality','high','pluginspage','http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash','movie','http://learn.forskills.co.uk/pix/loadingMov' ); Shadowbox.init({ players: ['html'] }); Shadowbox.open({ content: '
', player: 'html', title: 'Loading - Please wait...'});; } function hideloadingmessage(){ Shadowbox.close(); } function Set_Cookie( name, value, expires, path, domain, secure ) { // set time, its in milliseconds var today = new Date(); today.setTime( today.getTime() ); /* if the expires variable is set, make the correct expires time, the current script below will set it for x number of days, to make it for hours, delete * 24, for minutes, delete * 60 * 24 */ if ( expires ) { expires = expires * 1000 * 60 * 60 * 24; } var expires_date = new Date( today.getTime() + (expires) ); document.cookie = name + "=" +escape( value ) + ( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) + ( ( path ) ? ";path=" + path : "" ) + ( ( domain ) ? ";domain=" + domain : "" ) + ( ( secure ) ? ";secure" : "" ); }function Get_Cookie( check_name ) { // first well split this cookie up into name/value pairs // note: document.cookie only returns name=value, not the other components var a_all_cookies = document.cookie.split( ';' ); var a_temp_cookie = ''; var cookie_name = ''; var cookie_value = ''; var b_cookie_found = false; // set boolean t/f default f for ( i = 0; i < a_all_cookies.length; i++ ) { // now well split apart each name=value pair a_temp_cookie = a_all_cookies[i].split( '=' ); // and trim left/right whitespace while were at it cookie_name = a_temp_cookie[0].replace(/^\s+|\s+$/g, ''); // if the extracted name matches passed check_name if ( cookie_name == check_name ) { b_cookie_found = true; // we need to handle case where cookie has no value but exists (no = sign, that is): if ( a_temp_cookie.length > 1 ) { cookie_value = unescape( a_temp_cookie[1].replace(/^\s+|\s+$/g, '') ); } // note that in cases where cookie is initialized but no value, null is returned return cookie_value; break; } a_temp_cookie = null; cookie_name = ''; } if ( !b_cookie_found ) { return null; } }Shadowbox.loadSkin('classic', 'http://learn.forskills.co.uk/lib/shadowbox/skin'); Shadowbox.loadLanguage('en', 'http://learn.forskills.co.uk/lib/shadowbox/lang'); Shadowbox.loadPlayer(['flv', 'html', 'iframe', 'img', 'qt', 'swf', 'wmp'], 'http://learn.forskills.co.uk/lib/shadowbox/player'); window.onload = Shadowbox.init; var xmlHttp = false; try { xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e2) { xmlHttp = false; } } if (!xmlHttp && typeof XMLHttpRequest != 'undefined') { xmlHttp = new XMLHttpRequest(); } var updateStrength = function(pw,defml,defms) { var msg = document.getElementById('psContainer'); var title = 'Password Strength Indicator ' + "\n"; var strength = getStrength(pw); var minLength = 0; var minStrength = 14 * 0; if(defml != null){ minLength = defml; } if(defms != null){ minStrength = 14 * defms; } if(minLength > 0){ title = title + 'Minimum Allowed Length is ' + minLength + ' chars ' + "\n"; } if(minStrength > 0){ var strMinStrength = ''; if(minStrength > 41){ strMinStrength = 'Strong'; }else if(minStrength > 27){ strMinStrength = 'Good'; }else if(minStrength > 13){ strMinStrength = 'Fair'; } title = title + 'Minimum Allowed Strength is ' + strMinStrength + "\n"; } msg.title = title; var width = (102/32)*strength; if(width > 150){ width = 150; } new Effect.Morph('psStrength', {style:'width:'+width+'px', duration:'0.4'}); var elem = ''; if((pw.length < minLength || strength < minStrength) && pw != 'changeme'){ if(elem = document.collect('type','submit')){ if(elem.length > 0){ var pwimg = document.getElementById('psImage'); pwimg.innerHTML = ''; elem[0].disabled = true; } } }else{ if(elem = document.collect('type','submit')){ if(elem.length > 0){ var pwimg = document.getElementById('psImage'); pwimg.innerHTML = ''; elem[0].disabled = false; } } } } var getStrength = function(passwd) { intScore = 0; if (passwd.match(/[a-z]/)) // [verified] at least one lower case letter { intScore = (intScore+1) } if (passwd.match(/[A-Z]/)) // [verified] at least one upper case letter { intScore = (intScore+7) } // NUMBERS if (passwd.match(/\d+/)) // [verified] at least one number { intScore = (intScore+3) } if (passwd.match(/(\d.*\d.*\d)/)) // [verified] at least three numbers { intScore = (intScore+7) } // SPECIAL CHAR if (passwd.match(/[!,@#$%^&*?_~]/)) // [verified] at least one special character { intScore = (intScore+10) } if (passwd.match(/([!,@#$%^&*?_~].*[!,@#$%^&*?_~])/)) // [verified] at least two special characters { intScore = (intScore+10) } // COMBOS if (passwd.match(/[a-z]/) && passwd.match(/[A-Z]/)) // [verified] both upper and lower case { intScore = (intScore+6) } if (passwd.match(/\d/) && passwd.match(/\D/)) // [verified] both letters and numbers { intScore = (intScore+8) } // [Verified] Upper Letters, Lower Letters, numbers and special characters if (passwd.match(/[a-z]/) && passwd.match(/[A-Z]/) && passwd.match(/\d/) && passwd.match(/[!,@#$%^&*?_~]/)) { intScore = (intScore+5) } return intScore; } document.collect= function(att,val,loose){ var C,i= 0,A= [],tem,temp; var pa= this.nodeType? this : document; C= pa.getElementsByTagName('*'); while((tem= C[i++])!= undefined){ temp= tem.getAttribute(att) || tem[att]; if(temp){ if(!val || temp== val) A.push(tem); else if(loose=== true && temp.search(val)> -1) A.push(tem); } } return A; } function ofc_ready() { return true; } function open_flash_chart_data() { return Object.toJSON(singleChartData); } function findSWF(movieName) { if (navigator.appName.indexOf("Microsoft")!= -1) { return window[movieName]; } else { return document[movieName]; } } // Ultimate client-side JavaScript client sniff. Version 3.03 // (C) Netscape Communications 1999. Permission granted to reuse and distribute. // Revised 17 May 99 to add is.nav5up and is.ie5up (see below). // Revised 21 Nov 00 to add is.gecko and is.ie5_5 Also Changed is.nav5 and is.nav5up to is.nav6 and is.nav6up // Revised 22 Feb 01 to correct Javascript Detection for IE 5.x, Opera 4, // correct Opera 5 detection // add support for winME and win2k // synch with browser-type-oo.js // Revised 26 Mar 01 to correct Opera detection // Revised 02 Oct 01 to add IE6 detection // Everything you always wanted to know about your JavaScript client // but were afraid to ask ... "Is" is the constructor function for "is" object, // which has properties indicating: // (1) browser vendor: // is.nav, is.ie, is.opera, is.hotjava, is.webtv, is.TVNavigator, is.AOLTV // (2) browser version number: // is.major (integer indicating major version number: 2, 3, 4 ...) // is.minor (float indicating full version number: 2.02, 3.01, 4.04 ...) // (3) browser vendor AND major version number // is.nav2, is.nav3, is.nav4, is.nav4up, is.nav6, is.nav6up, is.gecko, is.ie3, // is.ie4, is.ie4up, is.ie5, is.ie5up, is.ie5_5, is.ie5_5up, is.ie6, is.ie6up, is.hotjava3, is.hotjava3up // (4) JavaScript version number: // is.js (float indicating full JavaScript version number: 1, 1.1, 1.2 ...) // (5) OS platform and version: // is.win, is.win16, is.win32, is.win31, is.win95, is.winnt, is.win98, is.winme, is.win2k // is.os2 // is.mac, is.mac68k, is.macppc // is.unix // is.sun, is.sun4, is.sun5, is.suni86 // is.irix, is.irix5, is.irix6 // is.hpux, is.hpux9, is.hpux10 // is.aix, is.aix1, is.aix2, is.aix3, is.aix4 // is.linux, is.sco, is.unixware, is.mpras, is.reliant // is.dec, is.sinix, is.freebsd, is.bsd // is.vms // // See http://www.it97.de/JavaScript/JS_tutorial/bstat/navobj.html and // http://www.it97.de/JavaScript/JS_tutorial/bstat/Browseraol.html // for detailed lists of userAgent strings. // // Note: you don't want your Nav4 or IE4 code to "turn off" or // stop working when Nav5 and IE5 (or later) are released, so // in conditional code forks, use is.nav4up ("Nav4 or greater") // and is.ie4up ("IE4 or greater") instead of is.nav4 or is.ie4 // to check version in code which you want to work on future // versions. function Is () { // convert all characters to lowercase to simplify testing var agt=navigator.userAgent.toLowerCase(); // *** BROWSER VERSION *** // Note: On IE5, these return 4, so use is.ie5up to detect IE5. this.major = parseInt(navigator.appVersion); this.minor = parseFloat(navigator.appVersion); // Note: Opera and WebTV spoof Navigator. We do strict client detection. // If you want to allow spoofing, take out the tests for opera and webtv. this.nav = ((agt.indexOf('mozilla')!=-1) && (agt.indexOf('spoofer')==-1) && (agt.indexOf('compatible') == -1) && (agt.indexOf('opera')==-1) && (agt.indexOf('webtv')==-1) && (agt.indexOf('hotjava')==-1)); this.nav2 = (this.nav && (this.major == 2)); this.nav3 = (this.nav && (this.major == 3)); this.nav4 = (this.nav && (this.major == 4)); this.nav4up = (this.nav && (this.major >= 4)); this.navonly = (this.nav && ((agt.indexOf(";nav") != -1) || (agt.indexOf("; nav") != -1)) ); this.nav6 = (this.nav && (this.major == 5)); this.nav6up = (this.nav && (this.major >= 5)); this.gecko = (agt.indexOf('gecko') != -1); this.ie = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1)); this.ie3 = (this.ie && (this.major < 4)); this.ie4 = (this.ie && (this.major == 4) && (agt.indexOf("msie 4")!=-1) ); this.ie4up = (this.ie && (this.major >= 4)); this.ie5 = (this.ie && (this.major == 4) && (agt.indexOf("msie 5.0")!=-1) ); this.ie5_5 = (this.ie && (this.major == 4) && (agt.indexOf("msie 5.5") !=-1)); this.ie5up = (this.ie && !this.ie3 && !this.ie4); this.ie5_5up =(this.ie && !this.ie3 && !this.ie4 && !this.ie5); this.ie6 = (this.ie && (this.major == 4) && (agt.indexOf("msie 6.")!=-1) ); this.ie6up = (this.ie && !this.ie3 && !this.ie4 && !this.ie5 && !this.ie5_5); // KNOWN BUG: On AOL4, returns false if IE3 is embedded browser // or if this is the first browser window opened. Thus the // variables is.aol, is.aol3, and is.aol4 aren't 100% reliable. this.aol = (agt.indexOf("aol") != -1); this.aol3 = (this.aol && this.ie3); this.aol4 = (this.aol && this.ie4); this.aol5 = (agt.indexOf("aol 5") != -1); this.aol6 = (agt.indexOf("aol 6") != -1); this.opera = (agt.indexOf("opera") != -1); this.opera2 = (agt.indexOf("opera 2") != -1 || agt.indexOf("opera/2") != -1); this.opera3 = (agt.indexOf("opera 3") != -1 || agt.indexOf("opera/3") != -1); this.opera4 = (agt.indexOf("opera 4") != -1 || agt.indexOf("opera/4") != -1); this.opera5 = (agt.indexOf("opera 5") != -1 || agt.indexOf("opera/5") != -1); this.opera5up = (this.opera && !this.opera2 && !this.opera3 && !this.opera4); this.webtv = (agt.indexOf("webtv") != -1); this.TVNavigator = ((agt.indexOf("navio") != -1) || (agt.indexOf("navio_aoltv") != -1)); this.AOLTV = this.TVNavigator; this.hotjava = (agt.indexOf("hotjava") != -1); this.hotjava3 = (this.hotjava && (this.major == 3)); this.hotjava3up = (this.hotjava && (this.major >= 3)); // *** JAVASCRIPT VERSION CHECK *** if (this.nav2 || this.ie3) this.js = 1.0; else if (this.nav3) this.js = 1.1; else if (this.opera5up) this.js = 1.3; else if (this.opera) this.js = 1.1; else if ((this.nav4 && (this.minor <= 4.05)) || this.ie4) this.js = 1.2; else if ((this.nav4 && (this.minor > 4.05)) || this.ie5) this.js = 1.3; else if (this.hotjava3up) this.js = 1.4; else if (this.nav6 || this.gecko) this.js = 1.5; // NOTE: In the future, update this code when newer versions of JS // are released. For now, we try to provide some upward compatibility // so that future versions of Nav and IE will show they are at // *least* JS 1.x capable. Always check for JS version compatibility // with > or >=. else if (this.nav6up) this.js = 1.5; // note ie5up on mac is 1.4 else if (this.ie5up) this.js = 1.3 // HACK: no idea for other browsers; always check for JS version with > or >= else this.js = 0.0; // *** PLATFORM *** this.win = ( (agt.indexOf("win")!=-1) || (agt.indexOf("16bit")!=-1) ); // NOTE: On Opera 3.0, the userAgent string includes "Windows 95/NT4" on all // Win32, so you can't distinguish between Win95 and WinNT. this.win95 = ((agt.indexOf("win95")!=-1) || (agt.indexOf("windows 95")!=-1)); // is this a 16 bit compiled version? this.win16 = ((agt.indexOf("win16")!=-1) || (agt.indexOf("16bit")!=-1) || (agt.indexOf("windows 3.1")!=-1) || (agt.indexOf("windows 16-bit")!=-1) ); this.win31 = ((agt.indexOf("windows 3.1")!=-1) || (agt.indexOf("win16")!=-1) || (agt.indexOf("windows 16-bit")!=-1)); // NOTE: Reliable detection of Win98 may not be possible. It appears that: // - On Nav 4.x and before you'll get plain "Windows" in userAgent. // - On Mercury client, the 32-bit version will return "Win98", but // the 16-bit version running on Win98 will still return "Win95". this.win98 = ((agt.indexOf("win98")!=-1) || (agt.indexOf("windows 98")!=-1)); this.winnt = ((agt.indexOf("winnt")!=-1) || (agt.indexOf("windows nt")!=-1)); this.win32 = (this.win95 || this.winnt || this.win98 || ((this.major >= 4) && (navigator.platform == "Win32")) || (agt.indexOf("win32")!=-1) || (agt.indexOf("32bit")!=-1)); this.winme = ((agt.indexOf("win 9x 4.90")!=-1)); this.win2k = ((agt.indexOf("windows nt 5.0")!=-1)); this.os2 = ((agt.indexOf("os/2")!=-1) || (navigator.appVersion.indexOf("OS/2")!=-1) || (agt.indexOf("ibm-webexplorer")!=-1)); this.mac = (agt.indexOf("mac")!=-1); // hack ie5 js version for mac if (this.mac && this.ie5up) this.js = 1.4; this.mac68k = (this.mac && ((agt.indexOf("68k")!=-1) || (agt.indexOf("68000")!=-1))); this.macppc = (this.mac && ((agt.indexOf("ppc")!=-1) || (agt.indexOf("powerpc")!=-1))); this.sun = (agt.indexOf("sunos")!=-1); this.sun4 = (agt.indexOf("sunos 4")!=-1); this.sun5 = (agt.indexOf("sunos 5")!=-1); this.suni86= (this.sun && (agt.indexOf("i86")!=-1)); this.irix = (agt.indexOf("irix") !=-1); // SGI this.irix5 = (agt.indexOf("irix 5") !=-1); this.irix6 = ((agt.indexOf("irix 6") !=-1) || (agt.indexOf("irix6") !=-1)); this.hpux = (agt.indexOf("hp-ux")!=-1); this.hpux9 = (this.hpux && (agt.indexOf("09.")!=-1)); this.hpux10= (this.hpux && (agt.indexOf("10.")!=-1)); this.aix = (agt.indexOf("aix") !=-1); // IBM this.aix1 = (agt.indexOf("aix 1") !=-1); this.aix2 = (agt.indexOf("aix 2") !=-1); this.aix3 = (agt.indexOf("aix 3") !=-1); this.aix4 = (agt.indexOf("aix 4") !=-1); this.linux = (agt.indexOf("inux")!=-1); this.sco = (agt.indexOf("sco")!=-1) || (agt.indexOf("unix_sv")!=-1); this.unixware = (agt.indexOf("unix_system_v")!=-1); this.mpras = (agt.indexOf("ncr")!=-1); this.reliant = (agt.indexOf("reliantunix")!=-1); this.dec = ((agt.indexOf("dec")!=-1) || (agt.indexOf("osf1")!=-1) || (agt.indexOf("dec_alpha")!=-1) || (agt.indexOf("alphaserver")!=-1) || (agt.indexOf("ultrix")!=-1) || (agt.indexOf("alphastation")!=-1)); this.sinix = (agt.indexOf("sinix")!=-1); this.freebsd = (agt.indexOf("freebsd")!=-1); this.bsd = (agt.indexOf("bsd")!=-1); this.unix = ((agt.indexOf("x11")!=-1) || this.sun || this.irix || this.hpux || this.sco ||this.unixware || this.mpras || this.reliant || this.dec || this.sinix || this.aix || this.linux || this.bsd || this.freebsd); this.vms = ((agt.indexOf("vax")!=-1) || (agt.indexOf("openvms")!=-1)); } var is; var isIE3Mac = false; // this section is designed specifically for IE3 for the Mac if ((navigator.appVersion.indexOf("Mac")!=-1) && (navigator.userAgent.indexOf("MSIE")!=-1) && (parseInt(navigator.appVersion)==3)) isIE3Mac = true; else is = new Is(); // This is the part where I set up the three adapters. // Please choose the one you need and discard others. // I did this because I observed that in some frameworks (especially ExtJS), // using the standard DOM modifiers breaks up the framework's inner workings. OFC = {} OFC.prototype = { name: "Prototype", version: function(src) { return $(src).get_version() }, rasterize: function (src, dst) { $(dst).replace(new Element("img", {src: Control.OFC.image(src)})) }, image: function(src) {return "data:image/png;base64," + $(src).get_img_binary()}, popup: function(src) { var img_win = window.open('', 'Charts: Export as Image') with(img_win.document) { write("Charts: Export as Image<\/title><\/head><body><img src='" + OFC.prototype.image(src) + "' /><\/body><\/html>") } } } // Using an object as namespaces is JS Best Practice. I like the Control.XXX style. if (!Control) {var Control = {OFC: OFC.prototype}} // By default, right-clicking on OFC and choosing "save image locally" calls this function. // You are free to change the code in OFC and call my wrapper (Control.OFC.your_favorite_save_method) //function save_image() { OFC.prototype.version('mymovie') }