dojo.require("dojox.validate._base");

function yearDiff( datestr){
	dateObj1 = new Date();
	dateObj2 = new Date(datestr);
	return ((dateObj1.getYear()-dateObj2.getYear()))//years ;
}

function clearValidationErrors(indexPanel) {
	var prefix = (true===indexPanel?"index":"");
	var classes = ['']
	dojo.query();
}

function validateNewUser(indexPanel){
	var prefix = (true===indexPanel?"index":"");

	var  i = 0;
    errMsg = new Array();
    

    if(dojo.byId(prefix + 'newusername').value == "" || dojo.byId(prefix + 'newusername').value == dojo.byId("newusernameTpl").innerHTML + '*' || dojo.byId(prefix + 'newusername').value.length > 30){
        errMsg[i] = "username";
        i++;
	}
	if(dojo.byId(prefix + 'newpassword').value == ""){
		errMsg[i] ="pw" ;
		i++;
	}
	if(dojo.byId(prefix + 'newpassword').value !== dojo.byId(prefix + 'newconfirmpassword').value || dojo.byId(prefix + 'newconfirmpassword').value==""){
		errMsg[i] = "matchpw" ;
		i++;
	}
	if (dojo.byId(prefix + 'newemail').value == ""){
		errMsg[i] = 'emailempty';
		i++
	}
	if(!validateEmail(dojo.byId(prefix + 'newemail').value)){
		errMsg[i] = 'email';
		i++;
	}
	var newphone = dojo.byId(prefix + 'newphone').value;
	if(newphone == 'Mobile') newphone = '';
	if(newphone.length > 0 && !validateUKPhone(newphone)){
		errMsg[i] = 'phone';
		i++;
	}

	if(errMsg.length>0){
		displayErrors(errMsg, prefix.length > 0);
		return false;
    }
	
	contentArray = new Array();
	contentArray = {
		dest: dojox.dtl.filter.strings.addslashes(currentDestination),
		userId: dojo.byId(prefix + 'newusername').value,
		newconfirmpassword: dojo.byId(prefix + 'newconfirmpassword').value,
		newemail: dojo.byId(prefix + 'newemail').value,
		country: 'UK',
		defaultstandname: possessiveForm(dojo.byId(prefix + 'newusername').value) + " Free Agent for 3 page",
		defaultstanddesc: "Order your 3 SIM from me using the form on the right, then top-up by &pound;10 to get an extra &pound;2 credit.",
		phone: formatUKPhone(newphone),
		optin: (dojo.byId(prefix + 'newoptin').checked?1:0)
	}
	
	dojo.xhrPost({          
        url: "/authorize/create-user",
		content: contentArray,
		handleAs: "json",
        load: function(response){   
			switch(response.status){
				case 'OK':
					dojo.byId("mainLogin").style.display = "none";
					dojo.cookie("newuser", response.standpid);
					window.top.location.replace(currentDestination.length < 1?'/setup':currentDestination);
					break;
				case 'email_in_use':
					dojo.byId(prefix + 'registerError').innerHTML = "Sorry, that email address is already in use";
					break;
				default:
					dojo.byId(prefix + 'registerError').innerHTML = dojo.byId('badaccountcreateTpl').innerHTML;
					break;
			}
        },
        timeout: 30000
    });
	return true;
}

function displayErrors(msgArr, index){
	if(index){
		dojo.byId('indexregisterError').innerHTML = dojo.byId('badfieldsTpl').innerHTML;
		for (msg in errMsg) {
	 		switch (errMsg[msg]){
		 		case 'username':
					dojo.addClass('indexnewusername', 'registerErrorText');
					break;
				case 'pw':
					dojo.addClass('indexnewpassword', 'registerErrorText');
					dojo.addClass('indexnewpasswordtext', 'registerErrorText');
					break;
				case 'matchpw':
					dojo.addClass('indexnewpassword', 'registerErrorText');
					dojo.addClass('indexnewpasswordtext', 'registerErrorText');
					dojo.addClass('indexnewconfirmpassword', 'registerErrorText');
					dojo.addClass('indexnewconfirmpasswordtext', 'registerErrorText');
					if(errMsg.length == 1){
						dojo.byId('indexregisterError').innerHTML = dojo.byId('pwmismatchTpl').innerHTML;
					}
					break;
				case 'email':
					dojo.addClass('indexnewemail', 'registerErrorText');
					if(errMsg.length == 1){
						dojo.byId('indexregisterError').innerHTML = dojo.byId('bademailTpl').innerHTML;
					}
					break;
				case 'emailempty':
					dojo.addClass('indexnewemail', 'registerErrorText');
					break;
				case 'phone':
					dojo.addClass('indexnewphone', 'registerErrorText');
					break;
	 		}
		}
	}else{
		dojo.byId('registerError').innerHTML = dojo.byId('badfieldsTpl').innerHTML;
		dojo.byId('newbirthdateLabel').style.color = '#FFFFFF';
		dojo.byId('newidLabel').style.color = '#FFFFFF';
		dojo.byId('newpwLabel').style.color = '#FFFFFF';
		dojo.byId('newpwLabel').style.color = '#FFFFFF';
		dojo.byId('newconfirmpwLabel').style.color = '#FFFFFF';
		dojo.byId('newemailaddressLabel').style.color = '#FFFFFF';
		
		for (msg in errMsg) {
	 		switch (errMsg[msg]){
			case 'username':
				dojo.byId('newidLabel').style.color = 'red';
				break;
			case 'pw':
				dojo.byId('newpwLabel').style.color = 'red';
				break;
			case 'matchpw':
				dojo.byId('newpwLabel').style.color = 'red';
				dojo.byId('newconfirmpwLabel').style.color = 'red';
				if(errMsg.length == 1){
					dojo.byId('registerError').innerHTML = dojo.byId('pwmismatchTpl').innerHTML;
				}
				break;
			case 'email':
				dojo.byId('newemailaddressLabel').style.color = 'red';
				if(errMsg.length == 1){
					dojo.byId('registerError').innerHTML = dojo.byId('bademailTpl').innerHTML;
				}
				break;
			case 'emailempty':
				dojo.byId('newemailaddressLabel').style.color = 'red';
				break;
			case 'phone':
				dojo.byId('newphoneLabel').style.color = 'red';
				break;
			}
		}
	}
}

function validateUser(indexPanel){
	var prefix = (true===indexPanel?"index":"");
    var i = 0;
    errMsg = new Array();
	if (dojo.byId(prefix + 'username').value == ""){
		errMsg[i] = 'emailempty';
		i++
	}
	if(!validateEmail(dojo.byId(prefix + 'username').value)){
		errMsg[i] = 'email';
		i++;
	}
	if(dojo.byId(prefix + 'password').value == ""){
		errMsg[i] ="pw" ;
		i++;
	}
	if(errMsg.length>0){
		dojo.byId(prefix + 'loginError').innerHTML = dojo.byId('badloginTpl').innerHTML;
		return false;
    }else{
    	dojo.xhrPost(
				{          
					url: "/authorize/verify-user",
					content: {
						dest: dojox.dtl.filter.strings.addslashes(currentDestination),
						usern: dojo.byId(prefix + 'username').value,
						passw: dojo.byId(prefix + 'password').value
					},
					handleAs: "json",
					load: function(response){
						if(response.status=='OK'){
							dojo.byId("mainLogin").style.display = "none";
							window.top.location.replace(currentDestination.length < 1?'/setup':currentDestination);
						}else{
							var msgId = 'badloginTpl';
							if (response.status == 'suspended') msgId = 'suspendedTpl';
							dojo.byId(prefix + 'loginError').innerHTML = dojo.byId(msgId).innerHTML;
						}	 		
					},
					error: function(response) {
						devError("AJAX error: " + response);
					}, 
					timeout: 30000
				}
			);
    }
}

function setHtml(tagId, iHtml) {
	dojo.html.set(dojo.byId(tagId), iHtml);
}

function validateChangePw(indexPanel){
	var prefix = (true===indexPanel?"index":"");
	email = dojo.byId(prefix+ 'changeemail').value;
	var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
	if (email == "" || reg.test(email) == false){
		setHtml(prefix+'forgotpasswordError','Please enter a valid email address.');
		return false;
	}
	setHtml(prefix+'forgotpasswordError', '');
	dijit.byId('mainLogin').hide();
	
	dojo.byId(prefix + 'changeemail').value = "";
	
	dojo.xhrPost({
		url:'/authorize/forgot-password',
		content: {
			email:email
		},
		handleAs: 'json',
		load:function(response){
			var status = response.status;
			if(status == 'OK'){
				showMessage('An email was sent to '+email+'.');
			}
		},
		timeout:30000
	})
	
}

function possessiveForm(str){
	var lastChar = str.substr(str.length-1, 1);
	if (lastChar.toLowerCase() == 's')
		return str+"'";
	return str+"'s";
}
