// csslink.js
//
// created  2003/8/30
// modified 2004/5/27

function TBrowserEnv() {
	this.name = '';
	this.ver = '';

	var user_agent = navigator.userAgent.toLowerCase();
	var ua_params = new Array();	
	var from = 0;
	var to = 0;

	while( from < user_agent.length) {
		if( user_agent.charAt( from) == '(') {
			to = user_agent.indexOf( ')', from);
		} else if( user_agent.charAt( from) == '[') {
			to = user_agent.indexOf( ']', from);
		} else {
			to = user_agent.indexOf( ' ', from);
		}
		to = ( to < 0) ? user_agent.length : to;
		to = ( user_agent.charAt( to) == ' ') ? to : to + 1;
		ua_params[ ua_params.length] = user_agent.substring( from, to);
		from = to + 1;
	}

	if( ua_params[0].indexOf( 'opera') >= 0) {
		this.name = 'opera';
		from = ua_params[0].indexOf( '/');
		this.ver = ua_params[0].substring( from + 1, ua_params[0].length);
	} else if( ua_params[1].indexOf( 'msie') >= 0) {
		this.name = 'msie';
		from = ua_params[1].indexOf( 'msie');
		this.ver = ua_params[1].substring( from + 5, ua_params[1].indexOf( ';', from));
	} else if( ua_params.length >= 4 && ua_params[ 3].indexOf( 'netscape') >= 0) {
		this.name = 'netscape';
		from = ua_params[ 3].indexOf( '/');
		this.ver = ua_params[ 3].substring( from + 1, ua_params[ 3].length);
	} else if( ua_params[ ua_params.length - 1].indexOf( 'safari') >= 0) {
		this.name = 'safari';
		from = ua_params[ ua_params.length - 1].indexOf( '/');
		var build_version = ua_params[ ua_params.length -1].substring( from + 1, ua_params[ ua_params.length -1].length);
		if( build_version <= 85) {
			this.ver = 1.0;
		} else {
			this.ver = 1.0;
		}
	} else if( ua_params[0].indexOf( 'mozilla') >= 0) {
		from = ua_params[0].indexOf( '/');
		this.ver = ua_params[0].substring( from + 1, ua_params[0].length);
		if( parseFloat( this.ver) < 5) {
			this.name = 'netscape';
		} else {
			this.name = 'unknown';
		}
	} else {
		this.name = 'unknown';
	}
}

function TEnv() {
	this.os = '';
	this.browser = new TBrowserEnv();

	var appVer = navigator.appVersion.toLowerCase();
	if( appVer.indexOf( 'mac') >= 0) {
		this.os = 'mac';
	} else if( appVer.indexOf( 'win') >= 0) {
		this.os = 'win';
	} else {
		this.os = 'win';
	}
}

function write_css_link( css_dir_path) {
	var env = new TEnv();
	var map, limit;
	var id = env.os + '_' + env.browser.name;

	if( typeof( document.csslink_map) == 'object') {
		map = document.csslink_map;
	} else {
		map = new Array( 'win_msie', 'win_netscape', 'win_opera', 'win_unknown', 'mac_msie', 'mac_netscape', 'mac_opera', 'mac_safari', 'mac_unknown');
		map[ 'win_msie'] = 'ie';
		map[ 'win_netscape'] = 'nn';
		map[ 'win_opera'] = 'ie6.css';
		map[ 'win_unknown'] = 'ie6.css';
		map[ 'mac_msie'] = 'ie';
		map[ 'mac_netscape'] = 'nn';
		map[ 'mac_opera'] = 'ie5.css';
		map[ 'mac_safari'] = 'safari.css';
		map[ 'mac_unknown'] = 'ie5.css';
	}
	if( typeof( document.csslink_limit) == 'object') {
		limit = document.csslink_limit;
	} else {
		limit = new Array( 'win_msie', 'win_netscape', 'win_opera', 'win_unknown', 'mac_msie', 'mac_netscape', 'mac_opera', 'mac_safari', 'mac_unknown');
		limit[ 'win_msie'] = 6;
		limit[ 'win_netscape'] = 7;
		limit[ 'win_opera'] = 7;
		limit[ 'win_unknown'] = 0;
		limit[ 'mac_msie'] = 5;
		limit[ 'mac_netscape'] = 7;
		limit[ 'mac_opera'] = 0;
		limit[ 'mac_safari'] = 0;
		limit[ 'mac_unknown'] = 0;
	}
	css_dir_path += '/' + env.os;
	css_dir_path += '/' + map[ id];
	if( !map[ id].match( /.+\.css/i)) {
		var ver = Math.floor( parseFloat( env.browser.ver));
		if( limit[ id] > 0) {
			ver = ( ver <= limit[ id]) ? ver : limit[ id];
		}
		css_dir_path += ver + '.css';
	}
	document.write("<link rel='stylesheet' href='" + css_dir_path + "' type='text/css'>");
}

