/* Browser Sniffer */

/* Setup globals */
var ua = navigator.userAgent;			// User Agent
var an = navigator.appName;				// Application Name
var av = navigator.appVersion;		// Application Version
var np = navigator.platform;			// Platform property

// browser properties array
var brProps = new Array();
cur = 0;
if (ua) { brProps[cur] = ua.toLowerCase(); cur += 1;}
if (an) { brProps[cur] = an.toLowerCase(); cur += 1;}
if (av) { brProps[cur] = av.toLowerCase(); cur += 1;}
if (np) { brProps[cur] = np.toLowerCase(); cur += 1;}

/*  

sniff():
Sniffer function.  Returns a string depending on which browser
a user is view the site with.  	

Return strings:

pc-ns-x : netscape versions, for pc
mac-ns-x : netscape versions, for mac
sun-ns-x : netscape versions, for sunOS
unix-ns-x : netscape versions, for unix/linux

pc-ie-x : internet explorer versions, for pc
mac-ie-x : internet explorer versions, for mac
unix-ie-x : internet explorer versions, for unix/linux

pc-gecko : gecko browsers, for pc
mac-gecko : gecko browsers, for mac
unix-gecko : gecko browsers, for unix/linux
sun-gecko	: gecko browsers, for sunOS

pc-opera : opera browsers, for pc
mac-opera : opera browsers, for mac
unix-opera : opera browsers, for unix/linux
sun-opera : opera browsers, for sunOS

webtv : webTV

*/
function sniff() {

	var rString = "";						// The return string
	var plat = "";							// Platform String

	// platform detection
	if (checkPattern("windows","win")) {
		plat = "win";
	} else if (checkPattern("macintosh","mac")) {
		plat = "mac";
	} else if (checkPattern("sun")) {
		plat = "solaris";
	} else if (checkPattern("unix","linux")) {
		plat = "unix/linux";
	} else if (checkPattern("webtv")) {
		plat = "webtv";
	} else {
		plat = "error";
	}

	// browser version for pc
	if (plat == "win") {
		if (checkPattern("netscape")) {
			
			// pc netscape version check
			if (checkPattern("4.7")) {
				rString = "pc-ns-4.7";
			} else if (checkPattern("4.0")) {
				rString = "pc-ns-4.0";
			} else if (checkPattern("3.")) {
				rString = "pc-ns-3.0";
			}	else if (checkPattern("gecko")) {
				rString = "pc-gecko";
			}
			
		} else if (checkPattern("msie")) {
		
			// pc internet explorer version check
			if (checkPattern("6.")) {
				rString = "pc-ie-6";
			} else if (checkPattern("opera")) {
				rString = "pc-opera";
			} else if (checkPattern("5.")) {
				rString = "pc-ie-5";
			} else if (checkPattern("4.5")) {
				rString = "pc-ie-4.5";
			} else if (checkPattern("4.0")) {
				rString = "pc-ie-4.0";
			}
			
		} else if (checkPattern("gecko")) {
			// gecko catcher for non-netscape versions
			rString = "pc-gecko";
		}
			
	} else if (plat == "mac") {
	
		if (checkPattern("netscape")) {
		
			// macintosh netscape version check		
			if (checkPattern("4.7")) {
				rString = "mac-ns-4.7";
			} else if (checkPattern("4.0")) {
				rString = "mac-ns-4.0";
			} else if (checkPattern("3.")) {
				rString = "mac-ns-3.0";
			} else if (checkPattern("gecko")) {
				rString = "mac-gecko";
			}
			
		} else if (checkPattern("msie")) {
		
			// macintosh internet explorer version check
			if (checkPattern("6.")) {
				rString = "mac-ie-6";
			} else if (checkPattern("opera")) {
				rString = "mac-opera";
			} else if (checkPattern("5.")) {
				rString = "mac-ie-5";
			} else if (checkPattern("4.5")) {
				rString = "mac-ie-4.5";
			} else if (checkPattern("4.0")) {
				rString = "mac-ie-4.0";
			}
		} else if (checkPattern("gecko")) {
			// gecko catcher for non-netscape versions
			rString = "mac-gecko";
		}
				
	} else if (plat == "solaris") {
	
		// netscape version check - sunOS
		if (checkPattern("netscape")) {
			if (checkPattern("4.7")) {
				rString = "sun-ns-4.7";
			} else if (checkPattern("4.0")) {
				rString = "sun-ns-4.0";
			} else if (checkPattern("3.")) {
				rString = "sun-ns-3.0";
			}	else if (checkPattern("gecko")) {
				rString = "sun-gecko";
			}	
		}
		
	} else if (plat == "unix/linux") {
		
		// unix/linux netscape version check
		if (checkPattern("netscape")) {
			if (checkPattern("4.7")) {
				rString = "unix-ns-4.7";
			} else if (checkPattern("4.0")) {
				rString = "unix-ns-4.0";
			} else if (checkPattern("3.")) {
				rString = "unix-ns-3.0";
			}	else if (checkPattern("gecko")) {
				rString = "unix-gecko";
			}	
		} else if (checkPattern("msie")) {
		
			// unix/linux internet explorer version check
			if (checkPattern("6.")) {
				rString = "unix-ie-6";
			} else if (checkPattern("opera")) {
				rString = "unix-opera";
			} else if (checkPattern("5.")) {
				rString = "unix-ie-5";
			} else if (checkPattern("4.5")) {
				rString = "unix-ie-4.5";
			} else if (checkPattern("4.0")) {
				rString = "unix-ie-4.0";
			}
		}
		
	} else if (plat == "webtv") {
		rString = "webtv"; 
	} else if (plat == "error") {
		rString = "error";
	}
	
	return rString;
	
}

/*

checkPattern():
checks a pattern, in lowercase, for a match in the browser properties
array.  Returns true if a match is found, otherwise it returns false.
				
*/
function checkPattern() {

	var max = brProps.length - 1;
	var numArgs = arguments.length;
	var numMatches = 0;
	
	for(i=0;i<max;i++) {
		for (x=0;x<numArgs;x++) {
			if (brProps[i].indexOf(arguments[x]) >= 0) {
				numMatches += 1;
			}
		}
	}
	if (numMatches > 0) {
		return true;
	} else {
		return false;
	}
	
	
}
