// sniffer.js  Ultimate client-side JavaScript client detection.
// (C) Netscape Communications 1999. Permission granted to reuse and distribute.
// Revised 08 March 2000 to focus on just Win/Mac & IE4+/Nav4+ issues.

// Creates "is_" variables indicating:
// (1) browser vendor:
//			is_nav, is_ie
// (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_nav3, is_nav4, is_nav4up, is_nav5, is_nav5up, is_ie3, is_ie4, is_ie4up
// (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_mac, is_mac68k, is_macppc
// Note: you don't want your Nav4 or IE4 code to "turn off" or stop working
// when Nav5 and IE5 (or later) are released, use is_nav4up ("Nav4 or greater")
// or is_ie4up ("IE4 or greater") instead of is_nav4 or is_ie4.

// 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.
var is_major = parseInt(navigator.appVersion);
var is_minor = parseFloat(navigator.appVersion);

var is_nav  = ((agt.indexOf('mozilla') != -1) && (agt.indexOf('spoofer') == -1)
						&& (agt.indexOf('compatible') == -1) && (agt.indexOf('opera') == -1)
						&& (agt.indexOf('webtv') == -1));
var is_nav2 = (is_nav && (is_major == 2));
var is_nav3 = (is_nav && (is_major == 3));
var is_nav4 = (is_nav && (is_major == 4));
var is_nav4up = (is_nav && (is_major >= 4));
var is_navonly = (is_nav && ((agt.indexOf(";nav") != -1) || 
						(agt.indexOf("; nav") != -1)) );
var is_nav5 = (is_nav && (is_major == 5));
var is_nav5up = (is_nav && (is_major >= 5));

var is_ie   = (agt.indexOf("msie") != -1);
var is_ie3  = (is_ie && (is_major < 4));
var is_ie4  = (is_ie && (is_major == 4) && (agt.indexOf("msie 5.0") == -1));
var is_ie4up  = (is_ie  && (is_major >= 4));
var is_ie5  = (is_ie && (is_major == 4) && (agt.indexOf("msie 5.0") != -1));
var is_ie5up  = (is_ie  && !is_ie3 && !is_ie4);

var is_opera = (agt.indexOf("opera") != -1);
var is_webtv = (agt.indexOf("webtv") != -1);

// *** JAVASCRIPT VERSION CHECK ***
var is_js;
if (is_nav2 || is_ie3) is_js = 1.0
else if (is_nav3 || is_opera) is_js = 1.1
else if ((is_nav4 && (is_minor <= 4.05)) || is_ie4) is_js = 1.2
else if ((is_nav4 && (is_minor > 4.05)) || is_ie5) is_js = 1.3
else if (is_nav5) is_js = 1.4
// NOTE: Always check for JS version compatibility with > or >=
else if (is_nav && (is_major > 5)) is_js = 1.4
else if (is_ie && (is_major > 5)) is_js = 1.3
// HACK: No idea for other browsers
else is_js = 0.0;

// *** PLATFORM ***
var is_win   = ((agt.indexOf("win") != -1) || (agt.indexOf("16bit") != -1) );
var is_win95 = ((agt.indexOf("win95") != -1) || (agt.indexOf("windows 95") != -1));
var is_win16 = ((agt.indexOf("win16") != -1) ||
						(agt.indexOf("16bit") != -1) || (agt.indexOf("windows 3.1") != -1) ||
						(agt.indexOf("windows 16-bit") != -1) );
var is_win31 = ((agt.indexOf("windows 3.1") != -1) || (agt.indexOf("win16") != -1) ||
						(agt.indexOf("windows 16-bit") != -1));
var is_win98 = ((agt.indexOf("win98") != -1) || (agt.indexOf("windows 98") != -1));
var is_winnt = ((agt.indexOf("winnt") != -1) || (agt.indexOf("windows nt") != -1));
var is_win32 = (is_win95 || is_winnt || is_win98 ||
						((is_major >= 4) && (navigator.platform == "Win32")) ||
						(agt.indexOf("win32") != -1) || (agt.indexOf("32bit") != -1));

var is_mac    = (agt.indexOf("mac") != -1);
var is_mac68k = (is_mac && ((agt.indexOf("68k") != -1) || (agt.indexOf("68000") != -1)));
var is_macppc = (is_mac && ((agt.indexOf("ppc") != -1) || (agt.indexOf("powerpc") != -1)));

//Autotab function
function autotab (formname, curr_field, char_count)
{
	var Val;	

    //PSI fix for defect ID : 4157    
    var isNN = (navigator.appName.indexOf("Netscape")!=-1);
	var theEvent = window.event || arguments.callee.caller.arguments[0];	
	Val = (isNN) ? theEvent.which : theEvent.keyCode;
	//END PSI fix for defect ID : 4157 

	//CHECKING FOR THE SHIFT KEY OR THE TAB KEY BEING PRESSED
	if (Val == 16 || Val == 9 || Val == 36 || Val == 37 || Val == 39 || Val == 46)
	{
	} 
	else 
	{
	   var ele_len = document.forms[formname].elements.length;  				//form length
	   var field_legnth = document.forms[formname].elements[curr_field.name].value.length;  //field element
							     					//field length or kepress input count

	   for (var z=0; z<ele_len; z++)
	       document.forms[formname].elements[z].name;

	   if (char_count == field_legnth)
	   {
	      for(var k=0; k<ele_len; k++)
		 if(curr_field.name == document.forms[formname].elements[k].name)
		 {
		    document.forms[formname].elements[k+1].focus();
		    return;
		 }
	   }
	}
}

