// CHECKNAV
//$(function() {
//	$('#myAccountTabs > ul').tabs({ fx: { opacity: 'toggle' } });
//});

// CREDENTIALS
var views = ['view', 'login', 'forgotpassword', 'updatepassword', 'forgotusername', 'updateusername'];

var hideViews = function () {
	var hide = 'visibility:hidden; display:none; height:0px;';
	for (var x in views) {
		if (document.getElementById(views[x])) {
			document.getElementById(views[x]).setAttribute('style', hide);
		}
	}
}

var hideMA = function(e) {
	$("#" + e).css({'visibility' : 'hidden', 'display' : 'none', 'height' : '0px'});
}

var showMA = function(e) {
	$("#" + e).css({'visibility' : 'visible', 'display' : 'inline', 'height' : 'auto'});
}
var shEditEmail = function(mode)
{
	if (mode){
		showMA('editEmail');
		hideMA('viewEmail');
	}else{
		showMA('viewEmail');
		hideMA('editEmail');
	}
}

var getViewMA = function (view, hideall) {
	if (!view) { return void(0); }	
	if (!hideall) hideViews();	
	if (typeof(view) == 'object') {		
		for (var y in view) {
			if (typeof(view[y]) == 'string') { getView(view[y], true); }
		}
		return;
	}
	var show = 'visibility:visible; display:normal; height:auto;';	
	for (var x in views) {
		if (document.getElementById(views[x])) {
			if (view == views[x]) {
				document.getElementById(views[x]).setAttribute('style', show);
			}
		}
	}
}

var validateMA = function(f, form)	{	
	if (form)
	{
		if (typeof(form) == 'string')
		{
			if (document.forms[form]) form = document.forms[form];
			else { validError(2, 'form'); return false; } 
		}
		else if (typeof(form) != 'object') { validError(2, 'form'); return false; }
	}
	else 
	{
		validError(2, 'form');
		return false; 
	}
	
	switch(f)	{
		case 'fp':
			if (!validateMA('username', form) || !validateMA('email', form)) return false;			
			break;
		case 'login':
			if (!validateMA('username', form) || !validateMA('password', form)) return false;			
			break;
		case 'email':
			if (form.email.value == '') { validError(1, 'email'); return false; }
			if (!isValidEmail(form.email.value)) { validError(2, 'email address', 'Please try again.'); return false; }
			if (form.confirmemail) {
				if (form.confirmemail.value == '') { validError(1, 'confirm email'); return false; }
				if (form.email.value != form.confirmemail.value) { validError(3, 'email addresses', 'Please try again.'); return false; }
			}			
			break;
		case 'firstname':
			if(form.firstname.value == '') { validError(null, null, 'Please complete the required fields (First name).'); return false; }
			break
		case 'lastname':
			if(form.lastname.value == '') { validError(null, null, 'Please complete the required fields (Last name).'); return false; }
			break;
		case 'username':	
			var fields = ['username', 'currentusername', 'newusername', 'confirmusername'];
			var field_labels = ['Username', 'Current Username', 'New Username', 'Confirm Username'];
			for(var x in fields)
			{			
				if (form[fields[x]])
				{
					if (form[fields[x]].value == '') { validError(1, field_labels[x]); return false; }
					if (!isValidUsername(form[fields[x]].value)) { validError(2, field_labels[x], '(Usernames must be between 5-20 characters; use only letters, numbers, or underscores. Please enter a different username).'); return false; }			
				}
			}
			if (form.confirmusername)	
			{					
				var un = null;
				if (form.username) { un = form.username.value; }
				else if (form.newusername) { un = form.newusername.value; }
				if (un != form.confirmusername.value) { validError(3, 'usernames'); return false; }
			}			
			break;
		case 'password':
			var fields = ['password', 'currentpassword', 'newpassword', 'confirmpassword'];
			var field_labels = ['Password', 'Current Password', 'New Password', 'Confirm Password'];
			for(var x in fields)
			{			
				if (form[fields[x]])
				{
					if (form[fields[x]].value == '') { validError(1, field_labels[x]); return false; }
					if (!isValidPassword(form[fields[x]].value)) { validError(2, field_labels[x], '(Passwords must be at least 5 characters long.)'); return false; }			
				}
			}
			if ( form.confirmpassword)	
			{		
				var pw = null;
				if (form.password) { pw = form.password.value; }
				else if (form.newpassword) { pw = form.newpassword.value; }
				if (pw != form.confirmpassword.value) { validError(3, 'passwords'); return false; }
			}
			break;
		case 'profile':			
			var v = true;
			if (!validateMA('email', form)) v = false; 
			if (!validateMA('firstname', form)) v = false;
			if (!validateMA('lastname', form)) v = false;
			if (v == false)
			{
				window.location.href="#top";
				return v;
			}
				
			break;
		case 'terms':			
			if (form.terms.checked != true) { validError(99, null, 'You must agree to the Terms and Conditions in order to proceed.'); return false; }
			break;
		case 'register_step2':
			if (!validateMA('terms', form)) v = false;
			if (!validateMA('password', form)) v = false;
			if (!validateMA('username', form)) v = false;
			if (!validateMA('lastname', form)) v = false;
			if (!validateMA('firstname', form)) v = false;		
			if (!v)
			{
				window.location.href="#top";
				return v;
			}
			break;
		
	}	
	return true;	
}
var isValidUsername = function (username) {
	var re = /^\S{5,20}/i;
	if (!username.match(re)) return false;
	return true;
}
var isValidEmail = function (email) {
	var re = /\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/i;
	if (!email.match(re)) return false;
	return true;
}
var isValidPassword = function (password) {
	/* min 6 characters, 1 num, 1 caps	*/
	/*var re = /^(?=\S*?[A-Z])(?=\S*?[a-z])(?=\S*?[0-9])\S{6,}$/i;*/
	var re = /^[^ \t\n]{5,}$/;
	if (!password.match(re)) return false;
	return true;
}
var validError = function(type, field, custom_message) {
	var m, sm=false, f;
	
	switch (type)	{
		case 1://missing required param
			f = (field) ? ' ('+field+')' : '';		 	
			m = 'Please complete the required fields'+f+'.';
			break;
		case 2://invalid
			m = 'The specified '+field+' is invalid.';
			if (custom_message) m += ' '+custom_message;
			break;
		case 3://do not match
			m = 'The '+field+' you entered do not match.';
			if (custom_message) m += ' '+custom_message;
			break;
		case 99://custom, do not use
		default: m = custom_message; break;			
	}

	if (document.getElementById('system-message'))
	{	
		var sm = document.getElementById('system-message');
		var p = document.createElement('p');
		p.id = 'system-error';
		sm.innerHTML = '';
		var ptag = document.createElement('p');
		sm.appendChild(ptag);
		var message	= document.createTextNode(m);
		ptag.appendChild(message);

		//IE set attribute hack
		if (window.ActiveXObject) {
			var p = sm.getElementsByTagName('p')[0];
			var strP = '<p id="system-error"></p>';
			var n = document.createElement(strP);
			sm.removeChild(p);
			sm.appendChild(n);
			n.appendChild(message);
		} else {
			ptag.id = 'system-error';
		}

	}
	else 
	{
		alert(m);
	}	
}

var saveMyaccount = function(type)
{
	var form, formname, fields, valid = false, data = '';
	switch (type)
	{
		case 'profile':
			formname = 'profileDetailsForm';
			if (validateMA('profile', formname))
			{				
				fields = ['prefix', 'firstname', 'middlename', 'lastname', 'email', 'confirmemail', 'instType', 'enrollment', 'position', 'save'];		
				var pr = document.forms[formname]['pr[]']; 
				for (var y in pr)
				{
					if (pr[y].checked) 
					{
						data += '&'+escape('pr[]')+'='+escape(pr[y].value);
					}
				}
				valid = true;
			}
			break;
		case 'changeusername':	
			formname = 'changeUsernameForm';		
			if (valid = validateMA('username', formname))
			{				
				fields = ['currentusername', 'newusername', 'confirmusername', 'save'];	
			}
			break;
		case 'changepassword':
			formname = 'changePasswordForm';
			if (valid = validateMA('password', formname))
			{
				fields = ['currentpassword', 'newpassword', 'confirmpassword', 'save'];
			}
			break;
	}
	if (valid && fields.length)
	{
		
		for (var x in fields)
		{		
			data += '&'+fields[x]+'='+escape(document.forms[formname][fields[x]].value);
		}
		$.ajax({
			type: "POST",
		   	url: "/myaccount/",
		   	data: 'ajax=true&action=save'+data,
		   	success: function(msg){
		   		eval(msg);	
		   		if (response.status == 'ok')
		   		{
		   			var m = '<p class="message">'+mod_unescape(response.message)+'</p>';
		   		}
		   		else 
		   		{
		   			var m = '<p class="error">'+mod_unescape(response.message)+'</p>';
		   		}
		   		$('#system-message').html(m);	
		   		window.location.href="#top";
		   	}
		});	
	}
}


var deleteActivity = function(id)
{
	if (id)
	{
		$.ajax({
			type: "POST",
		   	url: "/myaccount/",
		   	data: 'ajax=true&action=delete&delete=activity&id='+id,
		   	success: function(msg){
		   		eval(msg);	
		   		//if activity update is successful, page will be reloaded.
		   		var cls = "message";
		   		if (response.status != 'ok') cls = "error";		   					   		
		   		var m = '<p class="'+cls+'">'+mod_unescape(response.message)+'</p>';		   				   		
		   		$('#system-message').html(m);
		   		window.location.href = '/myaccount/activitylog';
		   		 
		   	}
		});
	}
}
