//Main UI functions.

var serverScriptUrl = "ajaxphp/main_ajax.php";
var debug_switch = false;

//  BETA

function betaForgotten()
{
	var postData = new Array();		
	
	postData["username"] = $('HeaderUsername').value.trim();
	postData["password"] = $('HeaderPassword').value.trim();
	
	doCallbackPost(serverScriptUrl,"BetaForgotten",postData,"ShowLoader('BetaLoginBox',null)");
}

function createProfileBeta()
{
	var errorDIV = $("CreateErrorDIV");
	errorDIV.innerHTML = "";
	
	var username = $("txtUsername").value.trim();
	var email = $("txtEmail").value.trim().toLowerCase();
	var emailconfirm = $("txtEmailConfirm").value.trim().toLowerCase();
	var password = $("txtPassword").value.trim();
	var passwordconfirm = $("txtPasswordConfirm").value.trim();		
	
	var preferredusername = $("preferredusernamefield");			
	var emailfield = $("emailfield");
	var emailfield2 = $("emailfield2");
	var passwordfield = $("passwordfield");
	var passwordfield2 = $("passwordfield2");
	
	if(emailfield.className != "FormFieldGood" || 
		emailfield2.className != "FormFieldGood" ||
		passwordfield.className != "FormFieldGood" ||
		passwordfield2.className != "FormFieldGood" ||
		preferredusername.className != "FormFieldGood")
	{
		raiseError(errorDIV,"Please complete all fields.");		
		return;
	}
	
	if(email != emailconfirm)
	{
		raiseError(errorDIV,"The email addresses must match.");		
		return;
	}	
	if(password != passwordconfirm)
	{
		raiseError(errorDIV,"The passwords must match.");		
		return;
	}
	
	//Passed client validation, now server validation
	var postData = new Array();		
	
	postData["username"] = $('txtEmail').value.trim().toLowerCase();
	postData["preferredUsername"] = $('txtPreferredUsername').value.trim();
	postData["password"] = $('txtPassword').value.trim();
	postData["email"] = $('txtEmail').value.trim().toLowerCase();
	
	doCallbackPost(serverScriptUrl,"CreateProfileBeta",postData,"$('btnCreate').value = 'loading...';$('btnCreate').disabled =true;hideHelptext(); ShowLoaderZ('InnerSHK',null,200);");		
	
	return false;
}

function loginBeta()
{	
	var postData = new Array();		
	
	postData["username"] = $('HeaderUsername').value.trim();
	postData["password"] = $('HeaderPassword').value.trim();
	
	doCallbackPost(serverScriptUrl,"LoginBeta",postData,"ShowLoader('BetaLoginBox',null)");
}

function logoutBeta()
{	
	var postData = new Array();					//todo remove
	postData["username"] = "null";		
	progresswheel_theta = 1;
	
	doCallbackPost(serverScriptUrl,"LogoutBeta",postData,"ShowLoader('BetaLoginBox',null)");	
}

//

function CP_ChangePassword()
{
	var oldpassword = $("txtOldPassword");
	var newpassword = $("txtNewPassword");
	var confirmpassword = $("txtNewPasswordConfirm");
	
	if(!oldpassword || !newpassword || !confirmpassword || !oldpassword.value || !newpassword.value || !confirmpassword.value)
	{
		$("PasswordFeedbackDIV").className = "PasswordFeedbackBad";
		$("PasswordFeedbackDIV").innerHTML = "You must complete all three fields on this form.";
		return false;
	}
	else
	{
		if(newpassword.value.length <5 || newpassword.value.length >25)
		{
			$("PasswordFeedbackDIV").className = "PasswordFeedbackBad";
			$("PasswordFeedbackDIV").innerHTML = "Your new password must be between 5 and 25 characters long.";
			return false;
		}
		else
		{
			if(newpassword.value != confirmpassword.value)
			{
				$("PasswordFeedbackDIV").className = "PasswordFeedbackBad";
				$("PasswordFeedbackDIV").innerHTML = "You must confirm your new password. (i.e. the two new password fields must match)";
				return false;
			}
			else
			{
				var postData = new Array();
				postData["OldPassword"] = oldpassword.value;
				postData["NewPassword"] = newpassword.value;
				
				//alert(oldpassword.value);
				//alert(newpassword.value);
				
				doCallbackPost(serverScriptUrl,"DoChangePassword",postData,"ShowLoaderZ('lightboxContent',null,200)");
			}
		}
	}
}

function doForgottenPassword()
{
	var postData = new Array();
	
	var email = $('txtEmailAddress').value;
	postData["email"] = email;
	
	doCallbackPost(serverScriptUrl,"DoForgottenPassword",postData,null);
}

function ResendAuthenticationEmail()
{
	var postData = new Array();
	
	postData["spareDIV"] = "spareDIV";
	
	doCallbackPost(serverScriptUrl,"ResendAuthenticationEmail",postData,null);
}

function SwitchProfileSectionInLightbox(url,id,script)
{
	var postData = new Array();
	
	postData["section_url"] = url;
	postData["section_id"] = id;
	postData["section_script"] = script;
	postData["TargetElementID"] = "lightBoxDefaultInnerContent";
	postData["PostCallbackScript"] = "turnOnLightboxContent();";
	postData["WheelZBase"] = "200";

	hideHelptext();
	doCallbackPost(serverScriptUrl,"profileSwitchSection",postData,null);
}

function showTwitWidget(targetID)
{
	//alert(targetID);
	var e = $(targetID);
	if(!e)
		return false;
		
	new TWTR.Widget({
		version: 2,
		id: targetID,
		type: 'profile',
		rpp: 1,
		interval: 6000,
		width: 250,
		height: 150,
		theme: {
			shell: {
			background: '#444444',
			color: '#ffffff'
			},
			tweets: {
			background: '#000000',
			color: '#ffffff',
			links: '#4aed05'
			}
		},
		features: {
			scrollbar: false,
			loop: false,
			live: false,
			hashtags: true,
			timestamp: true,
			avatars: false,
			behavior: 'all'
		}
	}).render().setUser('shkingdoms').start();
}

function mailingListNo()
{
	var postData = new Array();
	postData["divID"] = "lightBoxDefaultInnerContent";
	postData["pageURL"] = "wizard_notonlist.php";	
	postData["wizardName"] = "NotOnListWizardStage";	
	postData["wizardStage"] = "3";	
	
	doCallbackPost(serverScriptUrl,"RefreshWizardFromPage",postData,"ShowLoaderZ('lightboxContent',null,200)");		
}

function mailingListYes()
{
	var postData = new Array();
	postData["divID"] = "lightBoxDefaultInnerContent";
	postData["pageURL"] = "wizard_notonlist.php";	
	postData["wizardName"] = "NotOnListWizardStage";
	postData["wizardStage"] = "2";
	
	doCallbackPost(serverScriptUrl,"AddToMailingList",postData,"ShowLoaderZ('lightboxContent',null,200)");		
}

function ShowNotOnListBox()
{
	ShowDarkBox();
	ShowLightBox(600,400,"Welcome","wizard_notonlist.php");
}

function ShowWelcomeBox()
{
	ShowDarkBox();
	ShowLightBox(400,270,"Welcome","wizard_welcome.php");
}

function StartCOA()
{
	ShowDarkBox();
	ShowLightBox(600,400,"Coat of Arms Wizard","wizard_arms.php");
}

function follow(followID)
{
	var postData = new Array();
	postData["followID"] = followID;
	
	var divname = "PeopleSearchResult" + followID;
	
	doCallbackPost(serverScriptUrl,"followUser",postData,"ShowLoaderZ('"+divname+"',null,200)");
}

function unfollow(followID)
{
	var postData = new Array();
	postData["followID"] = followID;
	
	var divname = "PeopleSearchResult" + followID;
	
	doCallbackPost(serverScriptUrl,"unfollowUser",postData,"ShowLoaderZ('"+divname+"',null,200)");
}

function DOB_DaysInMonthChange()
{
	year = $('DOB_YearDropdown').value;
	month = $('DOB_MonthDropdown').value;
	day = $('DOB_DayDropdown').value;
	
	//alert (day+" " +month+ " " + year);
	
	if(day <=28)
	{
		return false;
	}
	else
	{
		if(month == 0)
		{
			return false;
		}
		else
		{
			if(year ==0)
				year = 1980;
			
			maxdays = daysInMonth(month,year);
			
			//alert (day+" " +month+ " " + year + " " +maxdays);
			
			if(day > maxdays)
				$('DOB_DayDropdown').value = maxdays;
		}
	}
}

function SaveBirthday()
{
	hideHelptext();
	var postData = new Array();
	
	//alert($('DOB_DayDropdown').value);
	
	postData["DOB_day"] = $('DOB_DayDropdown').value;
	postData["DOB_month"] = $('DOB_MonthDropdown').value;
	postData["DOB_year"] = $('DOB_YearDropdown').value;
	
	doCallbackPost(serverScriptUrl,"saveBirthday",postData,"");
}

function pageGrid(direction,sessionName,gridTarget,pagerTarget,gridSource,pagerSource)
{
	//alert(direction+" "+sessionName+" "+gridTarget+" "+pagerTarget+" "+gridSource+" "+pagerSource);
	var postData = new Array();
	postData["direction"] = direction;
	postData["sessionName"] = sessionName;
	postData["gridTarget"] = gridTarget;
	postData["pagerTarget"] = pagerTarget;
	postData["gridSource"] = gridSource;
	postData["pagerSource"] = pagerSource;

	doCallbackPost(serverScriptUrl,"pageGrid",postData,"ShowLoaderZ('PeopleSearchResults',null,200)");
}

function SearchPlayers()
{
	var postData = new Array();		
	postData["searchstring"] = $("txtSearchPlayers").value;
	
	doCallbackPost(serverScriptUrl,"SearchPlayers",postData,"ShowLoaderZ('PeopleSearchResults',null,200)");
}

function goSignup()
{
	var postData = new Array();					//todo remove
	postData["username"] = "null";
	
	doCallbackPost(serverScriptUrl,"goSignup",postData,"ShowLoader('PersonalContainer',null)");
}

function goLogin()
{
	var postData = new Array();					//todo remove
	postData["username"] = "null";
	
	doCallbackPost(serverScriptUrl,"goLogin",postData,"ShowLoader('PersonalContainer',null)");
}

function ChangeUsername()
{
	var postData = new Array();
	postData["newusername"] = $("UsernameTextbox").value.trim();
	
	doCallbackPost(serverScriptUrl,"ChangeUsername",postData,"");
}

//Go to the next profile section, 
//	1.completing the current section (if not already complete)
//	2.loading the next section in the sequence and posting it back (load menu if on last section)
//	3.updating the progresswheel
function NextProfileSection()
{
	hideHelptext();
	var postData = new Array();					//todo remove
	postData["skip"] = "0";
	
	doCallbackPost(serverScriptUrl,"ProfileNext",postData,"");
}

//go to the next section without completing the current one
function SkipProfileSection()
{
	hideHelptext();
	var postData = new Array();					//todo remove
	postData["skip"] = "1";
	
	doCallbackPost(serverScriptUrl,"ProfileNext",postData,"");
}

//Handles the display of a username in large (special) font
//TODO: use (generated?) letter images.
function DisplayUsername()
{
	var disableButton = true;	
	var textbox = $("UsernameTextbox");
	var displaybox = $("FormattedUsername");
	var invalid = 0;			
	
	if(!textbox.value)
	{
		invalid = 1;	
		//alert("invalid!-NULL");
	}
	else
	{
		//alert("NOT-NULL " + textbox.value.trim());
		if(textbox.value.trim().length < 4 || textbox.value.trim().length > 20 )			
			invalid = 1;						
		else if(stringContains(textbox.value.trim(),"!@#$%^&*()+=[]\\\';,/{}|\":<>?"))		
			invalid =1;		
	}
	
	$("changeUsernameButton").disabled = disableButton;
	ShowLoaderZ('UsernameDisplay',null,200);
	
	if(textbox.value)
	{
		if(invalid == 1)
		{			
			//alert("invalid!");
			$('changeUsernameButton').value = "Loading";
			displaybox.innerHTML = '<img onload="$(\'changeUsernameButton\').disabled = true;$(\'changeUsernameButton\').value =\'Next\';HideLoader();" src="img/fontwrite.php?text='+textbox.value.trim()+'"/>';
			//var disableButton = false;	
		}
		else
		{
			//alert("valid!");
			$('changeUsernameButton').value = "Loading";
			displaybox.innerHTML = '<img onload="$(\'changeUsernameButton\').value =\'Next\';HideLoader();" src="img/fontwrite.php?text='+textbox.value.trim()+'"/>';			
			//disableButton = false;
		}
	}
	else
	{
		$('changeUsernameButton').value = "Loading";
		displaybox.innerHTML = '<img onload="$(\'changeUsernameButton\').disabled = true;$(\'changeUsernameButton\').value =\'Next\';HideLoader();" src="img/fontwrite.php?text=..."/>';			
	}
		
	if(invalid == 1)		
		setHelpboxValidMessage('Username Invalid.','red','UsernameformValidMessage');
	else
	{
		setHelpboxValidMessage('Username Valid.','green','UsernameformValidMessage');
		
		var postData = new Array();	
		postData["DesiredUsername"] = textbox.value.trim();
				
		doCallbackPost(serverScriptUrl,"CheckUsernameAvailability",postData,"$('changeUsernameButton').disabled = 'true';$('changeUsernameButton').value = 'Checking';");
	}
}

function profileSwitchSection(url,id,script)
{
	var postData = new Array();
	
	postData["section_url"] = url;
	postData["section_id"] = id;
	postData["section_script"] = script;

	hideHelptext();
	doCallbackPost(serverScriptUrl,"profileSwitchSection",postData,"");
}

function logout()
{	
	var postData = new Array();					//todo remove
	postData["username"] = "null";		
	progresswheel_theta = 1;
	
	doCallbackPost(serverScriptUrl,"Logout",postData,"ShowLoader('pageContainer',null)");	
}

function login()
{	
	var postData = new Array();		
	
	postData["username"] = $('HeaderUsername').value.trim();
	postData["password"] = $('HeaderPassword').value.trim();
	
	doCallbackPost(serverScriptUrl,"Login",postData,"ShowLoader('PersonalContainer',null)");
}

function createProfile()
{
	var errorDIV = $("CreateErrorDIV");
	errorDIV.innerHTML = "";
	
	var username = $("txtUsername").value.trim();
	var email = $("txtEmail").value.trim().toLowerCase();
	var emailconfirm = $("txtEmailConfirm").value.trim().toLowerCase();
	var password = $("txtPassword").value.trim();
	var passwordconfirm = $("txtPasswordConfirm").value.trim();		
	
	var preferredusername = $("preferredusernamefield");			
	var emailfield = $("emailfield");
	var emailfield2 = $("emailfield2");
	var passwordfield = $("passwordfield");
	var passwordfield2 = $("passwordfield2");
	
	if(emailfield.className != "FormFieldGood" || 
		emailfield2.className != "FormFieldGood" ||
		passwordfield.className != "FormFieldGood" ||
		passwordfield2.className != "FormFieldGood" ||
		preferredusername.className != "FormFieldGood")
	{
		raiseError(errorDIV,"Please complete all fields.");		
		return;
	}
	
	if(email != emailconfirm)
	{
		raiseError(errorDIV,"The email addresses must match.");		
		return;
	}	
	if(password != passwordconfirm)
	{
		raiseError(errorDIV,"The passwords must match.");		
		return;
	}
	
	//Passed client validation, now server validation
	var postData = new Array();		
	
	postData["username"] = $('txtEmail').value.trim().toLowerCase();
	postData["preferredUsername"] = $('txtPreferredUsername').value.trim();
	postData["password"] = $('txtPassword').value.trim();
	postData["email"] = $('txtEmail').value.trim().toLowerCase();
	
	doCallbackPost(serverScriptUrl,"CreateProfile",postData,"$('btnCreate').value = 'loading...';$('btnCreate').disabled =true; ShowLoader('PersonalContainer');");		
	
	return false;
}

function raiseError(e,message)
{
	e.innerHTML = message;
}

