/*
 * 浏览器判断
 * 
 * @author longweiguo
 * @version 20100428
 */

var UA = function() 
{
	var nav = navigator, ua = nav && nav.userAgent, loc = window.location, href = loc && loc.href, m,
	o = { 
		ie: 0, 
		opera: 0, 
		gecko: 0, 
		webkit: 0, 
		mobile: null, 
		air: 0, 
		caja: nav.cajaVersion, 
		secure: (href && (href.toLowerCase().indexOf("https") === 0)), 
		os: null 
	},
	numberfy = function(s) {
		var c = 0;
		return parseFloat(s.replace(/\./g, function() {
			return (c++ == 1) ? '' : '.';
		}));
	};

	if (ua) {
		if ((/windows|win32/i).test(ua)) {
			o.os = 'windows';
		} else if ((/macintosh/i).test(ua)) {
			o.os = 'macintosh';
		}

		if ((/KHTML/).test(ua)) {
			o.webkit=1;
		}
		
		m=ua.match(/AppleWebKit\/([^\s]*)/);
		if (m&&m[1]) {
			o.webkit=numberfy(m[1]);

			if (/ Mobile\//.test(ua)) {
				o.mobile = "Apple";
			} else {
				m=ua.match(/NokiaN[^\/]*|Android \d\.\d|webOS\/\d\.\d/);
				if (m) {
					o.mobile = m[0];
				}
			}

			m=ua.match(/AdobeAIR\/([^\s]*)/);
			if (m) {
				o.air = m[0];
			}
		}

		if (!o.webkit) {
			m=ua.match(/Opera[\s\/]([^\s]*)/);
			if (m&&m[1]) {
				o.opera=numberfy(m[1]);
				m=ua.match(/Opera Mini[^;]*/);
				if (m) {
					o.mobile = m[0];
				}
			} else {
				m=ua.match(/MSIE\s([^;]*)/);
				if (m&&m[1]) {
					o.ie=numberfy(m[1]);
				} else {
					m=ua.match(/Gecko\/([^\s]*)/);
					if (m) {
						o.gecko=1;
						m=ua.match(/rv:([^\s\)]*)/);
						if (m&&m[1]) {
							o.gecko=numberfy(m[1]);
						}
					}
				}
			}
		}
	}
	
	return o;
}();

