var Base64 = {
	_keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",	 
	decode : function (input) {
		var output = "";
		var chr1, chr2, chr3;
		var enc1, enc2, enc3, enc4;
		var i = 0;
		input = input.replace(/[^A-Za-z0-9\+\/\=]/g, ""); 
		while (i < input.length) {
			enc1 = this._keyStr.indexOf(input.charAt(i++));
			enc2 = this._keyStr.indexOf(input.charAt(i++));
			enc3 = this._keyStr.indexOf(input.charAt(i++));
			enc4 = this._keyStr.indexOf(input.charAt(i++)); 
			chr1 = (enc1 << 2) | (enc2 >> 4);
			chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
			chr3 = ((enc3 & 3) << 6) | enc4;
			output = output + String.fromCharCode(chr1);
			if (enc3 != 64) {
				output = output + String.fromCharCode(chr2);
			}
			if (enc4 != 64) {
				output = output + String.fromCharCode(chr3);
			}
		}
		output = Base64._utf8_decode(output);
		return output;
 
	},	
	_utf8_decode : function (utftext) {
		var string = "";
		var i = 0;
		var c = c1 = c2 = 0;
		while ( i < utftext.length ) {
			c = utftext.charCodeAt(i);
			if (c < 128) {
				string += String.fromCharCode(c);
				i++;
			}
			else if((c > 191) && (c < 224)) {
				c2 = utftext.charCodeAt(i+1);
				string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
				i += 2;
			}
			else {
				c2 = utftext.charCodeAt(i+1);
				c3 = utftext.charCodeAt(i+2);
				string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
				i += 3;
			}
		}
		return string;
	}
}

var loginStatus = {
	cookieName : 'com.daimler.cs.cookie.sessionState',
	location : false,
	console : false,
	init : function() {
		if (window.console && window.console.log) {
			loginStatus.console = true;
		}
		var parts = document.URL.split('/');
		if (parts[3] != null) {
			loginStatus.location = parts[3].toLowerCase();
		}
		if (!window.cookieManager || !cookieManager.cookiesEnabled()) {
			return false;
		}
		var json = unescape(cookieManager.get(loginStatus.cookieName));
		if (json == 'null') {
			loginStatus.parseLoginArea();
			return false;
		}		
		userObject = JSON.parse(Base64.decode(json));		
		userObject.location = userObject.location.toLowerCase();
		if (loginStatus.console) {
			window.console.log('loginStatus: firstname = '
					+ userObject.firstname);
			window.console
					.log('loginStatus: lastname = ' + userObject.lastname);
			window.console
					.log('loginStatus: location = ' + userObject.location);
		}
		if (userObject.firstname == null || userObject.lastname == null
				|| userObject.location == null) {
			loginStatus.parseLoginArea();
			return false;
		}
		if (userObject.location != loginStatus.location) {
			loginStatus.parseLoginArea();
			return false;
		}
		loginStatus.parseInfoArea(userObject.firstname, userObject.lastname,
				(userObject.role == 'COMPANY' ? userObject.company : null));
	},
	parseLoginArea : function() {
		if (loginStatus.console) {
			window.console.log('loginStatus: parsing login area');
		}
		jQuery('#header .login').removeClass('away');
	},
	parseInfoArea : function(firstname, lastname, company) {
		var nameArea = jQuery('#header .info .name');
		var nameHTML = nameArea.html();
		var nameString = firstname + ' ' + lastname
				+ (company != null ? ' (' + company + ')' : '');
		nameHTML = nameHTML.replace(/{name}/gi, nameString);
		nameArea.html(nameHTML);
		jQuery('#header .info').removeClass('away');
		jQuery(
				'a[href=/portal/' + loginStatus.location
						+ '/page/community/feedback.faces]').attr(
				'href',
				'/portal/' + loginStatus.location
						+ '/page/feedback/feedback.faces');
	}
}
jQuery(document).ready(loginStatus.init);

