// Kribas Hannes
// V 0.3
// 08-01-2006

/*
 *
 * Kontrollib, ega brauser liiga vana pole ning annab alert boxiga m2rku
 *
 * Vajab ka Cookie.js'i.
 */
 /* N2ide:
 		<script src="Cookie.js" type="text/javascript"></script>
		<script src="BrowserCheck.js" type="text/javascript"></script>
	</head>
 
    var brauser = new BrowserCheck ();
    brauser.add_minimum_browser_allowed ("Opera", 8.5);
    brauser.add_minimum_browser_allowed ("Firefox", 1);
    brauser.add_minimum_browser_allowed ("Mozilla", 1.7);
    brauser.add_minimum_browser_allowed ("Netscape Navigator", 8 );
    brauser.add_minimum_browser_allowed ("Internet Explorer", 6);
    brauser.set_custom_error("Kasutatate vanemat brauserit, mistõttu leht ei pruugi adekvaatne välja näha.");
    brauser.init();
 */
function BrowserCheck ()
{
	this.strDetect = navigator.userAgent.toLowerCase();
	this.strBrowserName;
	this.intBrowserVersion;
	this.arrMinimumBrowsersAllowed = new Array();
	this.intPlace;         // brauseri nime asukoht strDetect'is
	this.strTheString;     // brauseri nimi strDetect'is 
	this.arrErrors = new Array();
	this.arrErrors[0] = "Teie brauser on liiga vana!";
	
	this.get_browser_name = get_browser_name;
	this.get_browser_version = get_browser_version;
	this.add_minimum_browser_allowed = add_minimum_browser_allowed;
	this.check_it = check_it;
	this.alert_if_browser_old = alert_if_browser_old;
	this.set_custom_error = set_custom_error;
	this.init = init;
	
	this.strBrowserName = this.get_browser_name(this.strDetect);
	this.intBrowserVersion = this.get_browser_version(this.strDetect);
}

function init ()
{
	this.alert_if_browser_old();
}

function get_browser_name()
{
	if (this.check_it('konqueror')) return "Konqueror";
	else if (this.check_it('safari')) return "Safari";
	else if (this.check_it('omniweb')) return "OmniWeb";
	else if (this.check_it('msie')) return "Internet Explorer";
	else if (this.check_it('opera')) return "Opera";
	else if (this.check_it('firefox')) return "Firefox";
	else if (this.check_it('netscape')) return "Netscape Navigator";
	else if (this.check_it('mozilla')) return "Mozilla";
	else if (this.check_it('webtv')) return "WebTV";
	else if (this.check_it('icab')) return "iCab";


	else return false;
}
/**
 * V2ljastab brauseri versiooni
 *
 * Kuna mul on vaja t2is- ning komakohaga arve (hea v6rrelda suuremat/v2iksemat),
 * siis ei saa ma v6rrelda Mozilla versiooni a la 1.7.7 jne.
 * Seega l6ikan lihtsalt l6pu 2ra, et j22ks esimene komakoht.
 */
function get_browser_version (strUserAgent)
{
	var strOutput="";
	var i=0;
	var strChar;
	var intCharAt;
	var intPointCounter=0; // Siin ma kontrollin, ega mitu punkti arvus on. Kui rohkem
							// Kui rohkem kui 1, siis v2ljastan arvu ja edasi stringi ei uuri
	
	while(1)
	{
		intCharAt = this.intPlace + this.strTheString.length+i;
		strChar = strUserAgent.charAt(intCharAt);
		// kontrollime versiooni l6ppu stringis
		if ( strChar==";" | strChar==" " | strChar==")" | strChar=="(" | strUserAgent.length==intCharAt ) return parseFloat (strOutput);
		else if ( strChar=="." ) 
		{
			if ( ++intPointCounter==2 ) return parseFloat (strOutput);
			strOutput = strOutput + strChar;
		}
		else strOutput = strOutput + strChar;
		i++; 
	}
	
	return false;
}

function check_it(strBrowserName)
{
	if (strBrowserName == "mozilla")
	{
		this.intPlace = this.strDetect.indexOf("rv:");
		this.strTheString = "rv:";
	}
	else
	{
		this.intPlace = this.strDetect.indexOf(strBrowserName) + 1;
		this.strTheString = strBrowserName;
	}
	return this.intPlace;
}

function add_minimum_browser_allowed (strBrowserName, intBrowserVersion)
{
	var arrMinimumBrowserAllowed = new Array();

	arrMinimumBrowserAllowed[0] = strBrowserName;
	arrMinimumBrowserAllowed[1] = intBrowserVersion;
	
	this.arrMinimumBrowsersAllowed[this.arrMinimumBrowsersAllowed.length] = arrMinimumBrowserAllowed;
	return true;
}


function alert_if_browser_old ()
{
	for (i=0;i<this.arrMinimumBrowsersAllowed.length;i++)
	{
		if (this.arrMinimumBrowsersAllowed[i][0] == this.strBrowserName)
		{
			if (this.arrMinimumBrowsersAllowed[i][1] > this.intBrowserVersion && getCookie("intDoAlert")!="0")
			{
				expiredays = 31;
				var ExpireDate = new Date ();
				ExpireDate.setTime(ExpireDate.getTime() + (expiredays * 24 * 3600 * 1000));
				setCookie("intDoAlert", "0", ExpireDate);
				alert (this.arrErrors[0]);
			}
		}
	}
}

function set_custom_error (strError)
{
	if (this.arrErrors[0] = strError )
		return true
	else
		false;
}

