var top_level = t;
var browserName=navigator.appName;

function createAJAXObject() {
	var types = [
				 'Microsoft.XMLHTTP',
				 'MSXML2.XMLHTTP.5.0',
				 'MSXML2.XMLHTTP.4.0',
				 'MSXML2.XMLHTTP.3.0',
				 'MSXML2.XMLHTTP'
				];
	
	for (var i = 0; i < types.length; i++) {
		try {
			return new ActiveXObject(types[i]);
		} catch(e) {}
	}
	
	try {
		return new XMLHttpRequest();
	} catch(e) { }
	
	return false;
}

function btnHov(loc){
	if(loc.className == 'frmBtn') { loc.className = 'frmBtn btnHov'; }
		else { loc.className = 'frmBtn'; }
}

function gotoPageURL(ID) {
	this.location.href = document.getElementById('a' + ID).href;
}

function admin() {
	if (browserName == 'Microsoft Internet Explorer') {
		var top_offset = 20;
		var left_offset = 60;
	}
		else {
			var top_offset = 5;
			var left_offset = 90;
		}
	if (document.getElementById('signin').style.display != 'block') {
		var a = getAnchorPosition('admin');
		document.getElementById('signin').style.top = a.y + top_offset + 'px';	
		document.getElementById('signin').style.left = a.x - left_offset + 'px';	
		document.getElementById('signin').style.display = 'block';
		
		document.getElementById('signin').innerHTML = '<form action="" name="signinFrm" method="post" onsubmit="return login();"><span class="n_text"><b>Please sign in below</b><span id="signin_error" class="error_text"></span><br />Username<br /><input type="text" name="user" id="user" class="input" style="width:100%;" /><br />Password<br /><input type="password" name="pass" class="input" style="width:100%;" /><div align="center" style="padding-top:5px;"><input name="closeBtn" type="button" class="frmBtn" onmouseover="btnHov(this)" onmouseout="btnHov(this)" onClick="admin();" value="Cancel" /> <input name="submitBtn" type="submit" class="frmBtn" onmouseover="btnHov(this)" onmouseout="btnHov(this)" value="Sign In" /></div></div></span></form>';
		document.getElementById('user').focus();
	}
		else {
			document.getElementById('signin').style.display = 'none';
			document.getElementById('signin').innerHTML = '';
		}
}

function logout() {
	var parameters = 'AJAX_INC=admin/login&action=out';
	var http = createAJAXObject();
	http.open('POST', top_level);
	http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	http.setRequestHeader('Content-length', parameters.length);
	http.send(parameters);
	
	http.onreadystatechange = function handlePopup() {
		if ((http.readyState == 4) && (http.status == 200)) { 
			var response = http.responseText;
				window.location.href = top_level + 'main/';
		}
	}
}

function login() {
	var form = document.signinFrm;
	var allowedUsername = /^[a-z0-9\_\-]+$/i;
	var allowedPassword = /^[a-z0-9\!\@\#\$\%\^\&\*\_\-\=\+\?]+$/i;
	
	if ((form.user.value.substr(0,1) == ' ') || (form.pass.value.substr(0,1) == ' ') ||
		(!form.user.value) || (!form.pass.value) || (allowedUsername.test(form.user.value) === false) || (allowedPassword.test(form.pass.value) === false)) {
		document.getElementById('signin_error').innerHTML = '<br />Invalid credentials';
		return false;
	}
	
	var param = 'user=' + encode64(form.user.value) + '&pass=' + encode64(form.pass.value);
	
	form.user.disabled = true;
	form.pass.disabled = true;
	form.closeBtn.disabled = true;
	form.submitBtn.disabled = true;

	var parameters = 'AJAX_INC=admin/login&action=in&' + param;
	var http = createAJAXObject();
	http.open('POST', top_level);
	http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	http.setRequestHeader('Content-length', parameters.length);
	http.send(parameters);
	
	http.onreadystatechange = function handlePopup() {
		if ((http.readyState == 4) && (http.status == 200)) { 
			var response = http.responseText;
			if (response == 'false') {
				form.user.disabled = false;
				form.pass.disabled = false;
				form.closeBtn.disabled = false;
				form.submitBtn.disabled = false;
				document.getElementById('signin_error').innerHTML = '<br />Invalid credentials';
			}
				else if (response == 'true'){
					window.location.replace(window.location.pathname);
				}
					else {
						form.user.disabled = false;
						form.pass.disabled = false;
						form.closeBtn.disabled = false;
						form.submitBtn.disabled = false;
						alert(response);	
					}
		}
	}
	return false;
}

var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
function encode64(input) {
   var output = "";
   var chr1, chr2, chr3;
   var enc1, enc2, enc3, enc4;
   var i = 0;

   do {
      chr1 = input.charCodeAt(i++);
      chr2 = input.charCodeAt(i++);
      chr3 = input.charCodeAt(i++);

      enc1 = chr1 >> 2;
      enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
      enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
      enc4 = chr3 & 63;

      if (isNaN(chr2)) {
         enc3 = enc4 = 64;
      } else if (isNaN(chr3)) {
         enc4 = 64;
      }

      output = output + keyStr.charAt(enc1) + keyStr.charAt(enc2) + 
         keyStr.charAt(enc3) + keyStr.charAt(enc4);
   } while (i < input.length);
   
   return output;
}