//	Main Login Javascript document
//	For Will Carder Agent Login Page

function WithContent(ss) {
	if(ss.length == 0) {
		return false;
	}
	return true;
}

//email validation
function check_email(e) {
	ok = "1234567890qwertyuiop[]asdfghjklzxcvbnm.@-_QWERTYUIOPASDFGHJKLZXCVBNM";

	for(i=0; i < e.length ;i++){
		if(ok.indexOf(e.charAt(i))<0){ 
			return (false);
		}	
	} 

	if (document.images) {
		re = /(@.*@)|(\.\.)|(^\.)|(^@)|(@$)|(\.$)|(@\.)/;
		re_two = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
		if (!e.match(re) && e.match(re_two)) {
			return (-1);		
		} 

	}

}

function setClass(id, cname) {
	document.getElementById( id ).className = cname;
}

function showWaitBar() {
	document.getElementById( "waitingBar" ).style.visibility = "visible";
}

function hideWaitBar() {
	document.getElementById( "waitingBar" ).style.visibility = "hidden";
}

function setStatus( msg ) {
	document.getElementById("formFooter").innerHTML = msg;
}

function shrinkDivHeight( id, px ) {
	var obj = document.getElementById( id );
	var curHeight = parseInt(obj.style.height);
	obj.style.height = (curHeight - px) + "px";
}

function loggedInAnim() {
	var obj = document.getElementById( "loginFormDiv" );
	
	obj.innerHTML = "&nbsp;"
	obj.style.height = "180px";
	
	var toId = window.setInterval('shrinkDivHeight("loginFormDiv",5);',20);
	window.setTimeout(function (a,b) { clearInterval(toId); },280);
}



function createRequestObject() {
    var retObj;
    var browser = navigator.appName;
    if (browser == "Microsoft Internet Explorer") {
        retObj = new ActiveXObject("Microsoft.XMLHTTP");
    } else {
        retObj = new XMLHttpRequest();
    }
    return retObj;
}

var http = createRequestObject();

function sendRequest( action ) {
    http.open('get', 'rpclogin.php?action='+action);
	
	action = null;
    http.onreadystatechange = handleLoginResponse;
    http.send(null);
}

function setLoggedInPage( page ) {
	http.open('get', page);
	
	http.onreadystatechange = loadLoginPage;
	http.send(null);
}

function handleLoginResponse() {
	if ( http.readyState == 4 ) {
		
		hideWaitBar();
		   
	   	var response = http.responseText;
        
		var responseItems = new Array();

        if (response.indexOf('|' != -1)) {
            responseItems = response.split('|');
			
			setStatus( "Status: " + responseItems[1] );
			
			if( (responseItems[0] == 1) || (responseItems[0] == 3) ) {
				/*login code*/
				setStatus( "Logged in." );
				loggedInAnim();
				setLoggedInPage("loginfo.php");
			}
			
			
        }
    }
}

function loadLoginPage() {
	if ( http.readyState == 4 ) {
		var response = http.responseText;
		document.getElementById( "loginFormDiv" ).innerHTML = response;
	}
}

function goLogin( frm ) {
	
	setStatus( "Status: Logging in . . ." );
	
	var m = new MD5();
	var emailaddress = frm.emailaddress.value;
	var password_hash = m.digest(frm.pword.value);
	frm.pword.value = '';
	var errors = 0;
	
	if(!WithContent(emailaddress)) {
		setClass('inputEmailAddress','inputStyle1Error');
		document.getElementById("emailNotice").innerHTML = "You must provide an email address to login.";
		document.getElementById("emailNotice").style.display = "block";
		setStatus( 'Status: <span style="color: #CC0000;">Your email address has an error.</span>' );
		errors++;
	}
	
	if(!check_email( emailaddress )) {
		setClass('inputEmailAddress','inputStyle1Error');
		document.getElementById("emailNotice").innerHTML = "Your email address should be in the form email@address.com.";
		setStatus( 'Status: <span style="color: #CC0000;">Your email address has an error.</span>' );
		errors++;
	}
	
	if(errors < 1) {
		showWaitBar();
		sendRequest( 'ajaxlogin&u=' +  emailaddress + "&p=" + password_hash + "&col=email");
	}
	
	return false;
}
