sakai.Index = {

	logInScreen : false,
	isLoggingIn : false,
	redirecturl : "/portal.html",

	doInit : function(){

			$(".loginfield").keydown(function(event){
				if (event.keyCode == 13){
					sakai.Index.performLogIn();	
					$("#login_fields").hide();
					$("#login_busy").show();
				}
			});

			var qs = new Querystring();
			var red = qs.get("url", "false");
			if (red != "false"){
				document.getElementById("Index_login_raven").href = "/authn/login?url=" + sdata.util.URL.encode(red);
				sakai.Index.redirecturl = sdata.util.URL.decode(red);
			}
			sdata.widgets.WidgetPreference.get("loggedIn", sakai.Index.decideLoggedIn);
		

	},

	continueAnyway : function(){
		document.getElementById('portalOuterContainer').style.display = 'block';
		document.getElementById('unsupportedBrowser').style.display = "none";
	},

	checkBrowser : function(){
		BrowserDetect.init();
		var browser = BrowserDetect.browser.toLowerCase();
		var version = BrowserDetect.version;
		if (browser == "firefox" && version >= 2) {
			return true;
		} else if (browser == "explorer" && version >= 6){
			return true;
		} else if (browser == "safari" && version >= 3){
			return true;
		} else if (browser == "opera" && version >= 9){
			return true;
		} else if (browser == "chrome"){
			return true;
		}
		return false;
	},

	decideLoggedIn : function(response, exists){
		if (exists == false) {
			if (response != "401" && response != "403" && response != "error"){
				document.location = sakai.Index.redirecturl;
			} else {
				var res = sakai.Index.checkBrowser();
				if (res){
					document.getElementById('portalOuterContainer').style.display = 'block';
					$("#email").focus();
				} else {
					document.getElementById('unsupportedBrowser').style.display = "block";
				}
			}
		} else {
			document.location = sakai.Index.redirecturl;
		}

	},

	logInOnTop : function(){
		sakai.Index.logInScreen = true;
		document.getElementById('logInContainer').style.display = 'block';
		document.getElementById('logInContainer2').style.display = 'block';
		document.getElementById('email').focus();
		History.addBEvent("login");
	},

	cancelLogInOnTop : function(){
		sakai.Index.logInScreen = false;
		document.getElementById('logInContainer').style.display = 'none';
		document.getElementById('logInContainer2').style.display = 'none';
		History.addBEvent("nologin"); 
	},

	logInOnTop2 : function(){
		sakai.Index.logInScreen = true;
		document.getElementById('logInContainer').style.display = 'block';
		document.getElementById('logInContainer2').style.display = 'block';
		document.getElementById('email').focus();
	},

	cancelLogInOnTop2 : function(){
		sakai.Index.logInScreen = false;
		document.getElementById('logInContainer').style.display = 'none';
		document.getElementById('logInContainer2').style.display = 'none';
	},

	performLogIn : function(){

		sakai.Index.isLoggingIn = true;
		$(".index_bold").css("color","#000000");
		document.getElementById("failed").style.display = "none";
		document.getElementById("loader").style.display = "block";

		var url= "/portal/xlogin";
		var requestbody = {"eid" : document.getElementById('email').value, "pw" : document.getElementById('pass').value , "submit" : "Login"};
	
		sdata.Ajax.request({
			url :url,
			httpMethod : "POST",
			onSuccess : function(data) {
				sakai.Index.checkLogInSuccess(data,true);
			},
			onFail : function(status) {
				sakai.Index.checkLogInSuccess(status,false);
			},
			postData : requestbody,
			contentType : "application/x-www-form-urlencoded"
		});

	},

	retryLogin : function(){
		var url= "/portal/xlogin";
		var requestbody = {"eid" : document.getElementById('email').value, "pw" : document.getElementById('pass').value , "submit" : "Login"};
	
		sdata.Ajax.request({
			url :url,
			httpMethod : "POST",
			onSuccess : function(data) {
				sakai.Index.checkLogInSuccess(data,true);
			},
			onFail : function(status) {
				sakai.Index.checkLogInSuccess(status,false);
			},
			postData : requestbody,
			contentType : "application/x-www-form-urlencoded"
		});
	},

	checkLogInSuccess : function(response, exists){
		sdata.widgets.WidgetPreference.get("loggedIn", sakai.Index.decideLoggedIn2);
		if (sakai.Index.isLoggingIn){
			setTimeout("sakai.Index.retryLogin()",1000);
		}
	},

	decideLoggedIn2 : function(response, exists){

		if (exists == false) {
			if (response != "401" && response != "403" && response != "error"){
				document.location = sakai.Index.redirecturl;
			} else {
				document.getElementById("failed").style.display = "block";
				document.getElementById("loader").style.display = "none";
				sakai.Index.isLoggingIn = false;

				$("#login_fields").show();
				$("#login_busy").hide();
				$(".index_bold").css("color","#FF0000");

			}
		} else {
			document.location = sakai.Index.redirecturl;
		}

	}

}

var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{
			string: navigator.userAgent,
			subString: "Chrome",
			identity: "Chrome"
		},
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};

sakai.Index.doInit();
