var is; var isIE3Mac = false; // this section is designed specifically for IE3 for the Mac 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); this.nav = ((agt.indexOf('mozilla')!=-1) && (agt.indexOf('spoofer')==-1) && (agt.indexOf('compatible') == -1) && (agt.indexOf('opera')==-1) && (agt.indexOf('webtv')==-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.nav5 = (this.nav && (this.major == 5)); this.nav5up = (this.nav && (this.major >= 5)); this.ie = (agt.indexOf("msie") != -1); this.ie3 = (this.ie && (this.major < 4)); this.ie4 = (this.ie && (this.major == 4) && (agt.indexOf("msie 5.0")==-1) ); this.ie4up = (this.ie && (this.major >= 4)); this.ie5 = (this.ie && (this.major == 4) && (agt.indexOf("msie 5.0")!=-1) ); this.ie5up = (this.ie && !this.ie3 && !this.ie4); this.ie55 = (this.ie && (this.major == 4) && (agt.indexOf("msie 5.5")!=-1) ); this.ie6 = (this.ie && (this.major == 4) && (agt.indexOf("msie 6.0")!=-1) ); this.ie7 = (this.ie && (this.major == 4) && (agt.indexOf("msie 7.0")!=-1) ); this.aol = (agt.indexOf("aol") != -1); this.aol3 = (this.aol && this.ie3); this.aol4 = (this.aol && this.ie4); this.opera = (agt.indexOf("opera") != -1); this.webtv = (agt.indexOf("webtv") != -1); this.pocketpc = (agt.indexOf("Windows CE") != -1); // Check if we are running Mozilla this.saf=(agt.indexOf('safari')!=-1); this.konq=(!this.saf && (agt.indexOf('konqueror')!=-1) ) ? true : false; this.moz=( (!this.saf && !this.konq ) && ( agt.indexOf('gecko')!=-1 ) ) ? true : false; var moz_brow; if (this.moz) { // regular expression pattern that will be used to extract main version/rv numbers pattern = /[(); \n]/; // moz type array, add to this if you need to moz_types = new Array('firebird', 'phoenix', 'firefox', 'galeon', 'k-meleon', 'camino', 'epiphany', 'netscape6', 'netscape', 'multizilla', 'gecko debian', 'rv'); rv_pos = agt.indexOf('rv');// find 'rv' position in nua string rv_full = agt.substr( rv_pos + 3, 6 );// cut out maximum size it can be, eg: 1.8a2, 1.0.0 etc // search for occurance of any of characters in pattern, if found get position of that character rv_slice = (rv_full.search( pattern ) != -1) ? rv_full.search(patter ) : ""; //check to make sure there was a result, if not do nothing // otherwise slice out the part that you want if there is a slice position (rv_slice) ? rv_full = rv_full.substr(0, rv_slice) : ""; // this is the working id number, 3 digits, you'd use this for // number comparison, like if nu >= 1.3 do something nu = rv_full.substr(0, 3); for (i = 0; i < moz_types.length; i++) { if (agt.indexOf(moz_types[i]) != -1) { this.moz_brow = moz_types[i]; break; } } if (this.moz_brow) { // if it was found in the array str_pos=agt.indexOf(moz_brow);// extract string position moz_brow_nu = agt.substr( (str_pos + this.moz_brow.length + 1 ) ,3);// slice out working number, 3 digit // if you got it, use it, else use nu moz_brow_nu = ( isNaN( moz_brow_nu ) ) ? moz_brow_nu = nu: moz_brow_nu; moz_brow_nu_sub = agt.substr( (str_pos + this.moz_brow.length + 1 ), 8); // this makes sure that it's only the id number sub_nu_slice = ( moz_brow_nu_sub.search( pattern ) != -1 ) ? moz_brow_nu_sub.search( pattern ) : ''; //check to make sure there was a result, if not do nothing (sub_nu_slice) ? moz_brow_nu_sub = moz_brow_nu_sub.substr(0, sub_nu_slice) : ""; } if ( this.moz_brow == 'netscape6') { this.moz_brow = 'netscape'; } else if ( this.moz_brow == 'rv' || this.moz_brow == '' ) { // default value if no other gecko name fit this.moz_brow = 'mozilla'; } if (!moz_brow_nu) { // use rv number if nothing else is available moz_brow_nu = nu; moz_brow_nu_sub = nu; } } // *** JAVASCRIPT VERSION CHECK *** // Useful to workaround Nav3 bug in which Nav3 // loads