/*
	2009.03.18	gricke	
				approve
	2009.02.20	gricke
			
*/
function loadRestrictedAccessApp(appFile,passString){
	loadingMessage('/images/loading_3.gif',10);
	xmlhttpPost(baseUrl + 'Applications/RestrictedAccess/' + appFile + '.aspx' + passString,'httpReqResults');
	reDrawSifr();
}
// ~~~~~~~~~~~~~~~~~~ [ nav ] ~~~~~~~~~~~~~~~~~~~~~~~ 
function restrictedAccessNav(version){
	var HTMLDisp = '';
	if(version == 'loggedIn'){
		HTMLDisp = HTMLDisp + '<a href=\"' + logOutRedirect + '?logOut=true\">';
		HTMLDisp = HTMLDisp + 'Log Out';
		HTMLDisp = HTMLDisp + '</a>';
		HTMLDisp = HTMLDisp + ' | ';
		HTMLDisp = HTMLDisp + '<a href=\"' + logOutRedirect + '?accountInfo=true\">';
		HTMLDisp = HTMLDisp + 'Account Information';
		HTMLDisp = HTMLDisp + '</a>';
	}else if(version == 'loggedOut'){
		HTMLDisp = HTMLDisp + '<a href=\"#\" onClick=\"loadRestrictedAccessApp(\'forgotPassword\',\'\');\">';
		HTMLDisp = HTMLDisp + 'Forgot Password';
		HTMLDisp = HTMLDisp + '</a>';
		HTMLDisp = HTMLDisp + ' | ';
		HTMLDisp = HTMLDisp + '<a href=\"#\" onClick=\"loadRestrictedAccessApp(\'createAccount\',\'\');\">';
		HTMLDisp = HTMLDisp + 'Create Account';
		HTMLDisp = HTMLDisp + '</a>';
		HTMLDisp = HTMLDisp + ' | ';
		HTMLDisp = HTMLDisp + '<a href=\"#\" onClick=\"loadRestrictedAccessApp(\'login\',\'\');\">';
		HTMLDisp = HTMLDisp + 'Log In';
		HTMLDisp = HTMLDisp + '</a>';		
	}	
	if(document.getElementById('restrictedAccessNav')){
		document.getElementById('restrictedAccessNav').innerHTML = HTMLDisp;
	}

	if(document.getElementById('subnav') && version == 'loggedIn'){
		subNavDisplay('visible');
	}else{
		subNavDisplay('hidden');
	}
}
function restrictedAccessNavAdmin(){
	var HTMLDisp = '';

	HTMLDisp = HTMLDisp + '<a href=\"#\" onClick=\"loadRestrictedAccessApp(\'approveUser\',\'\');\">';
	HTMLDisp = HTMLDisp + 'Approve Users';
	HTMLDisp = HTMLDisp + '</a>';
	HTMLDisp = HTMLDisp + ' | ';
	HTMLDisp = HTMLDisp + '<a href=\"#\" onClick=\"loadRestrictedAccessApp(\'searchUser\',\'\');\">';
	HTMLDisp = HTMLDisp + 'Search Users';
	HTMLDisp = HTMLDisp + '</a>';
	HTMLDisp = HTMLDisp + ' | ';
	HTMLDisp = HTMLDisp + '<a href=\"#\" onClick=\"loadRestrictedAccessApp(\'editCreateUser\',\'\');\">';
	HTMLDisp = HTMLDisp + 'Edit/Create User';
	HTMLDisp = HTMLDisp + '</a>';
	HTMLDisp = HTMLDisp + ' | ';
	HTMLDisp = HTMLDisp + '<a href=\"#\" onClick=\"navBrowse();\">';
	HTMLDisp = HTMLDisp + 'Browse All';
	HTMLDisp = HTMLDisp + '</a>';

	if(document.getElementById('restrictedAccessNavAdmin')){
		document.getElementById('restrictedAccessNavAdmin').innerHTML = HTMLDisp;
	}
}
function subNavDisplay(which){
	document.getElementById('subnav').style.visibility = which;
}
function navBrowse(){
	/* use search all to be browse all */
	var queryString = '?searchVersion=browseAll';
	loadRestrictedAccessApp('searchUser',queryString);
}
// ~~~~~~~~~~~~~~~~~~ [ create account ] ~~~~~~~~~~~~~~~~~~~~~~~ 
function createAccInitial(){
	if(testing){
		document.createEdit.email.value = 'garyTest.ricke@orbisdesign.com';
		document.createEdit.phone.value = '111.222.3333';
		document.createEdit.userName.value = 'garyTest.ricke@orbisdesign.com';
		document.createEdit.password.value = 'asdf';
		document.createEdit.firstName.value = 'Gary test';
		document.createEdit.lastName.value = 'Ricke test';
		document.createEdit.organization.value = 'Orbis Web Design';
		document.createEdit.sq.value = 'two plus two';
		document.createEdit.sa.value = 'four';
	}
}
function submitCreateAccount(){
	var createEmail = document.createEdit.email.value;
	var createPhone = document.createEdit.phone.value;
	var createUserName = document.createEdit.userName.value;
	var createPassword = document.createEdit.password.value;
	var createFirstName = document.createEdit.firstName.value;
	var createLastName = document.createEdit.lastName.value;
	var createOrganization = document.createEdit.organization.value;
	var createSq = document.createEdit.sq.value;
	var createSa = document.createEdit.sa.value;
	var ValidateVars = '';
		ValidateVars = ValidateVars + 'emailvalidation=email=Email is required or does not appear in the proper format|';
		ValidateVars = ValidateVars + 'emptyvalidation=phone=Phone is required|';
		ValidateVars = ValidateVars + 'phoneValidation=phone=Please enter Phone Number as:\\n(000) 000-0000 \\n 000.000.0000 \\n 000-000-0000|';	
		ValidateVars = ValidateVars + 'emptyvalidation=userName=User name is required|';
		ValidateVars = ValidateVars + 'emptyvalidation=password=Password is required|';
		ValidateVars = ValidateVars + 'emptyvalidation=firstName=First Name is required|';
		ValidateVars = ValidateVars + 'emptyvalidation=lastName=Last Name is required|';
		ValidateVars = ValidateVars + 'emptyvalidation=organization=Organization is required|';
		ValidateVars = ValidateVars + 'emptyvalidation=sq=A secret question is required to help recover lost passwords|';
		ValidateVars = ValidateVars + 'emptyvalidation=sa=A secret answer is required to help recover lost passwords|';
		
	var sendData = 
		'email=' + createEmail + '|' + 
		'phone=' + createPhone + '|' + 
		'userName=' + createUserName + '|' + 
		'password=' + createPassword + '|' + 
		'firstName=' + createFirstName + '|' + 
		'lastName=' + createLastName + '|' + 
		'organization=' + createOrganization + '|' + 
		'sq=' + createSq + '|' + 
		'sa=' + createSa; 
	
	var canWeSend = formvalidation(ValidateVars,'createEdit');
	var queryString = '?createAccountData=' + sendData + '&runFunction=createUser';
	
	checkIfUserExists(createEmail);
	
	var isEmailInDatabase = document.createEdit.isInDatabase.value;

	if(canWeSend){
		if(isEmailInDatabase != 'true'){
			loadRestrictedAccessApp('createAccount',queryString);
		}else{
			alert('That Email address has already been used.');
		}	
	}	
}
function checkIfUserExists(emailEntered){
	$.get('/xml/include/userAccess.xml', function(d){
		var emailExists = false;
		
		$(d).find('user').each(function(){
			var $user = $(this); 
			var emailJq = $user.attr("email");
			if(emailJq == emailEntered){
				emailExists = true;
			}  	
		});

		if(emailExists){
			document.getElementById('errorMessageCreateAccnt').innerHTML = "<span class=\"errorMessage\">Email exists. Choose a different email address or try <a onclick=\"loadRestrictedAccessApp(\'forgotPassword\',\'\');\" href=\"#\">resetting your password</a>.</span>";
			document.createEdit.isInDatabase.value = 'true';
		}else{
			document.getElementById('errorMessageCreateAccnt').innerHTML = "";
			document.createEdit.isInDatabase.value = 'false';
		}
	});
}
function setUserNameFromEmail(){
	document.createEdit.userName.value = document.createEdit.email.value;
	document.getElementById("userNameOutput").innerHTML = document.createEdit.email.value;
}
// ~~~~~~~~~~~~~~~~~~ [ update account ] ~~~~~~~~~~~~~~~~~~~~~~~ 
function userEditAccount(version){
	/* version - which screen to show, user edit or admin edit */
	var level = document.userEdit.level.value;
	var email = document.userEdit.email.value;
	var editPhone = document.userEdit.editPhone.value;
	var userName = document.userEdit.userName.value;
	var editPassword = document.userEdit.editPassword.value;
	var editFirstName = document.userEdit.firstName.value;
	var editLastName = document.userEdit.lastName.value;
	var editOrganization = document.userEdit.organization.value;
	var approved = document.userEdit.approved.value;
	var active = document.userEdit.active.value;
	var editSq = document.userEdit.sq.value;
	var editSa = document.userEdit.sa.value;
	if(approved == undefined){
		for(var i = 0; i < document.userEdit.approved.length; i++) {
			if(document.userEdit.approved[i].checked == true){
				approved = document.userEdit.approved[i].value;
			}
		}
	}
	if(active == undefined){
		for(var i = 0; i < document.userEdit.active.length; i++) {
			if(document.userEdit.active[i].checked == true){
				active = document.userEdit.active[i].value;
			}
		}
	}	
	var sendData = 
		'level=' + level + '|' +
		'email=' + email + '|' +
		'phone=' + editPhone + '|' +
		'userName=' + userName + '|' +
		'password=' + editPassword + '|' +
		'firstName=' + editFirstName + '|' +
		'lastName=' + editLastName + '|' +
		'organization=' + editOrganization + '|' +
		'approved=' + approved + '|' +
		'active=' + active + '|' +
		'sq=' + editSq + '|' +
		'sa=' + editSa;
	
	var queryString = '?userEditAccountData=' + sendData + '&runFunction=userEditAccount' + '&user=' + email;
	loadRestrictedAccessApp(version,queryString);
}
// ~~~~~~~~~~~~~~~~~~ [ forgotPassword ] ~~~~~~~~~~~~~~~~~~~~~~~ 
function getSecQuestion(){
	var email = document.formUpdate.email.value;
	var sendData = '' + email;
	var queryString = '?forgotPasswordData=' + sendData + '&runFunction=forgotPasswordGetSq';
	loadRestrictedAccessApp('forgotPassword',queryString);
}
function getSecQuestionInitialize(){
	if(testing){
		document.formUpdate.email.value = 'garyTest.ricke@orbisdesign.com';
		if(document.formUpdate.sa){
			document.formUpdate.sa.value = 'four';
		}
	}
}
function sendSecAnswer(){
	var sa = document.formUpdate.sa.value;
	var email = document.formUpdate.email.value;
	var sendData = 'email=' + email + '|' + 'sa=' + sa;
	var queryString = '?forgotPasswordSendSa=' + sendData + '&runFunction=forgotPasswordCheckSa';
	loadRestrictedAccessApp('forgotPassword',queryString);
}
// ~~~~~~~~~~~~~~~~~~ [ login ] ~~~~~~~~~~~~~~~~~~~~~~~ 
function runLogIn(){
	var userName = document.loginForm.userName.value;
	var password = document.loginForm.password.value;
	var queryString = '?userName=' + userName + '&password=' + password;
	loadRestrictedAccessApp('login',queryString);
	document.getElementById('subnav').style.visibility = 'hidden';
}
function runRedirect(){
	  window.location.href = logInSuccessRedirect;
}
function resubmitForm(formName){
	var runFunction = document.loginForm.runFunction.value;
	var var1 = document.loginForm.var1.value;
	var var2 = document.loginForm.var2.value;
	var queryString = '?runFunction=' + runFunction + '&var1=' + var1 + '&var2=' + var2;
	loadRestrictedAccessApp('login',queryString);	
}
function logOut(formName){
	var runFunction = document.loginForm.runFunction.value;
	var var1 = logOutRedirect;
	var queryString = '?runFunction=' + runFunction + '&var1=' + var1;
	subNavDisplay('hidden');
	loadRestrictedAccessApp('login',queryString);	
}
function logOutQuick(){
	window.location.href = logOutRedirect;
}
function checkQueryFlag(){
	var queryFlag = getQueryVariable('FailedAccess');
	
	if(getQueryVariable('FailedAccess') == 'true'){
		document.getElementById('failedAccess').innerHTML = 'You\'ve tried to access a page which is restricted';
		document.getElementById('failedAccess').style.display = 'block';
	}
	if(getQueryVariable('logOut') == 'true'){
		logOut('loginForm');
	}
	if(getQueryVariable('accountInfo') == 'true'){
		loadingMessage('/images/loading_3.gif',10);
		xmlhttpPost(baseUrl + 'Applications/RestrictedAccess/userEditAccount.aspx','httpReqResults');
	}
}
// ~~~~~~~~~~~~~~~~~~ [ search ] ~~~~~~~~~~~~~~~~~~~~~~~ 
function runSearch(){
	var fieldEmail = document.searchUsers.searchEmail.value;
	var passString = '?searchEmail=' + fieldEmail;
	loadRestrictedAccessApp('searchUser',passString);
}
function displayResults(){
	document.getElementById('searchResultsArea').style.display = 'block';
	reDrawSifr();
}
// ~~~~~~~~~~~~~~~~~~ [ approve ] ~~~~~~~~~~~~~~~~~~~~~~~ 
function approveUser(){
	var InPutBx = document.approveForm.getElementsByTagName('input');
	var approvedUsers = '';
	var sendEmailsToUsers = document.approveForm.emailUserUponApproval.checked;
	for (i=0; i<InPutBx.length;i++) {
		if(InPutBx[i].type == 'checkbox' && InPutBx[i].name == 'approveThisUser' && InPutBx[i].checked == true){
			approvedUsers = approvedUsers + InPutBx[i].value;
		}
	}
	var queryString = '?approvedUsers=' + approvedUsers + '&sendEmailsToUsers=' + sendEmailsToUsers + '&runFunction=approveUsers';
	loadRestrictedAccessApp('approveUser',queryString);
}
function viewUser(userId){
	var HTMLDisp = '';
	$.get('/xml/include/userAccess.xml', function(d){
		var email_str = "";
		var phone_str = "";
		var userName_str = "";
		var password_str = "";
		var firstName_str = "";
		var lastName_str = "";
		var organization_str = "";
		var sq_str = "";
		var sa_str = "";
		
		$(d).find('user').each(function(){
			var $user = $(this); 
			var emailJq = $user.attr("email");
			if(emailJq == userId){
				email_str = $user.attr("email");
				phone_str = $user.attr("phone");
				userName_str = $user.attr("userName");
				password_str = $user.attr("password");
				firstName_str = $user.attr("firstName");
				lastName_str = $user.attr("lastName");
				organization_str = $user.attr("organization");
				sq_str = $user.attr("sq");
				sa_str = $user.attr("sa");
			}  	
		});
		
		HTMLDisp = HTMLDisp + '';
		HTMLDisp = HTMLDisp + '<h4>User details</h4>';
		HTMLDisp = HTMLDisp + email_str + '<br />';
		HTMLDisp = HTMLDisp + phone_str + '<br />';
		HTMLDisp = HTMLDisp + userName_str + '<br />';
		HTMLDisp = HTMLDisp + password_str + '<br />';
		HTMLDisp = HTMLDisp + firstName_str + '<br />';
		HTMLDisp = HTMLDisp + lastName_str + '<br />';
		HTMLDisp = HTMLDisp + organization_str + '<br />';
		HTMLDisp = HTMLDisp + sq_str + '<br />';
		HTMLDisp = HTMLDisp + sa_str + '<br />';
		
		if(document.getElementById('viewUserWindow')){
			document.getElementById('viewUserWindow').innerHTML = HTMLDisp;
			document.getElementById('viewUserWindow').style.display = 'block';
			reDrawSifr();
		}
	});
}
function removeUserWindow(){
	document.getElementById('viewUserWindow').style.display = 'none';
}
function editUser(userId){
	var queryString = '?user=' + userId;
	loadRestrictedAccessApp('editCreateUser',queryString);
}
// ~~~~~~~~~~~~ [ common functions ] ~~~~~~~~~~~~
function getQueryVariable(variable) {
	var query = window.location.search.substring(1);
	var vars = query.split("&");
	for (var i=0;i<vars.length;i++) {
		var pair = vars[i].split("=");
		if (pair[0] == variable) {
			return pair[1];
		}
  	}
	return "999";
}
function formvalidation(ValidateVars,thisform){
	var string = "";
	var els = document.forms[thisform].elements;
	for(var no=0;no<els.length;no++){
	    string+="Name: "+els[no].name + ", Value: "+els[no].value + "\n";
	}
	var ValidateVarsArray = ValidateVars.split('|');
	with (thisform)
	{
		for (var i=0;i<ValidateVarsArray.length-1;i++) {
			var ValidateVarPieces = ValidateVarsArray[i].split('=');
			if(typeof(eval('document.' + thisform + '.' + ValidateVarPieces[1])) != 'undefined'){			
				if(eval(ValidateVarPieces[0] + '(document.' + thisform + '.' + ValidateVarPieces[1] + ',"' + ValidateVarPieces[2] + '")')==false){
					eval('document.' + thisform + '.' + ValidateVarPieces[1]).focus();
					return false;
				}
			}else{
				alert('FormValidationVars ERROR: \r Trying to validate >>>' + ValidateVarPieces[1] + '<<< which is not in this form \r \r Check that the validation var is spelled correctly  \r Or \r Remove the validation check \r Or \r Add the form element that is missing');
				return false;
			}
		}
		return true;
	}	
}
