//-----------------------------------------------------------------
// Licensed Materials - Property of IBM
//
// WebSphere Commerce
//
// (C) Copyright IBM Corp. 2007, 2009 All Rights Reserved.
//
// US Government Users Restricted Rights - Use, duplication or
// disclosure restricted by GSA ADP Schedule Contract with
// IBM Corp.
//-----------------------------------------------------------------

/** 
 * @fileOverview This javascript is used by UserRegistrationAddForm.jsp.
 * @version 1.0
 */

  /* Import dojo classes. */
dojo.require("wc.service.common");

function emailValidation(form,fromPage){
	if(fromPage != undefined && fromPage == 'GuestCheckout'){
		var inputId = form.email1.id;
		var logonId = form.email1.value;
	} else {
		var inputId = form.logonId.id;
		var logonId = form.logonId.value;
	}
	ExtLogonHelper.emailValidationFormName = form.name;
		
	if(logonId == null || logonId == "" || /^\s+$/.test(logonId)){
		MessageHelper.formErrorHandleClient(inputId,MessageHelper.messages["ERROR_LogonIdEmpty"]);
		return false;
	}
	
	if(!MessageHelper.isValidUTF8length(logonId, 50)){ 
		MessageHelper.formErrorHandleClient(inputId, MessageHelper.messages["ERROR_EmailTooLong"]);
		return false;
	}
	
	if(!MessageHelper.isValidEmail(logonId)){
		MessageHelper.formErrorHandleClient(inputId, MessageHelper.messages["ERROR_INVALIDEMAILFORMAT"]); 
		return false;		
	}
	
	var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-])+\.([A-Za-z]{2,4})$/;
	var reg1 = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-])+\.([A-Za-z]{2,4})+\.([A-Za-z]{2,4})$/;
	var reg2 = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-])+\.([A-Za-z]{2,4})+\.([A-Za-z]{2,4})+\.([A-Za-z]{2,4})$/;
	if((reg.test(logonId) == false && reg1.test(logonId) == false && reg2.test(logonId) == false)) {
		MessageHelper.formErrorHandleClient(inputId, MessageHelper.messages["ERROR_INVALIDEMAILFORMAT"]);
		return false;
	}
	
	if(fromPage != undefined && fromPage == 'QuickSignUp'){
		form.submit();
	}else{
		var params = [];
		params.storeId		= CommonControllersDeclarationJS.storeId;
		params.catalogId	= CommonControllersDeclarationJS.catalogId;
		params.langId		= CommonControllersDeclarationJS.langId;
		params.logonId 		= logonId;
		
		wc.service.getServiceById("EmailValidationRegistration").inputId = inputId;
		wc.service.invoke("EmailValidationRegistration", params);
	}
}

/**
* Validates Email Id during Registration Page 
* @constructor
 */
wc.service.declare({
	id: "EmailValidationRegistration",
	actionId: "EmailValidationRegistration",
	url: getAbsoluteURL() + "EmailValidateControllerCmd",
	formId: "",
	inputId:""

 /**
 * display a success message
 * @param (object) serviceResponse The service response object, which is the
 * JSON object returned by the service invocation
 */
	,successHandler: function(serviceResponse) {
		if(ExtLogonHelper.emailValidationFormName == 'RegisterQuick'){
			document.getElementById("rj-quickemailform").submit();
		}
	}

 /**
 * display an error message
 * @param (object) serviceResponse The service response object, which is the
 * JSON object returned by the service invocation
 */
	,failureHandler: function(serviceResponse) {
		MessageHelper.formErrorHandleClient(this.inputId, MessageHelper.messages["ERROR_INVALIDEMAILID"]);
		return false;
	}
});

/** 
 * This function is called when the Submit button is clicked on the Registration page. All the fields containing customer
 * information are validated and PersonProcessServicePersonRegistration is called. 
 * @param {string} form The name of the registration form containing all the customer information.
 */
function passwordSubmit(form,logonPassword,logonPasswordVerify){

	//retaining the old style
	for (i=0; i<form.elements.length; i++){
		form.elements[i].className =  form.elements[i].className.split(" ",1);
	}


	 reWhiteSpace = new RegExp(/^\s+$/);
	if(form.logonPassword_old != null && reWhiteSpace.test(form.logonPassword_old.value) || form.logonPassword_old.value == ""){ 
		MessageHelper.formErrorHandleClient(form.logonPassword_old.id,MessageHelper.messages["ERROR_PasswordEmpty"]); return;}
	if(!MessageHelper.isValidUTF8Minlength(form.logonPassword_old.value, 5)){ 
		MessageHelper.formErrorHandleClient(form.logonPassword_old.id,MessageHelper.messages["ERROR_PasswordShort"]); return;}
	if(!MessageHelper.isValidUTF8length(form.logonPassword_old.value, 20)){ 
		MessageHelper.formErrorHandleClient(form.logonPassword_old.id,MessageHelper.messages["ERROR_PasswordTooLong"]); return;}
	if(form.logonPasswordVerify_old != null && reWhiteSpace.test(form.logonPasswordVerify_old.value) || form.logonPasswordVerify_old.value == ""){ 
		MessageHelper.formErrorHandleClient(form.logonPasswordVerify_old.id,MessageHelper.messages["ERROR_VerifyPasswordEmpty"]); return;}
	
	if(form.logonPassword_old.name == "logonPassword")
	{
		
		form.logonPassword_old.name = "logonPassword_old";
		form.logonPasswordVerify_old.name = "logonPasswordVerify_old";
	}
	/*check whether the values in password and verify password fields match, if so, update the password. */ 
	if (form.logonPassword_old.value.length != 0)
	{
		if(form.logonPassword_old.value!= form.logonPasswordVerify_old.value)
		{
			MessageHelper.formErrorHandleClient(form.logonPasswordVerify_old.id,MessageHelper.messages["PWDREENTER_DO_NOT_MATCH"]);
			return ; 
		}
		form.logonPassword_old.name = "logonPassword";
		form.logonPasswordVerify_old.name = "logonPasswordVerify";
	}
	
	/** Checks whether 'AjaxMyAccount' change flow option is enabled, if so, invokes 'UserRegistrationUpdate' service.
	 *  If 'AjaxMyAccount' change flow option is disabled the form is submitted. 
	 */
	if(MyAccountDisplay.getAjaxVar()=="true"){
		cursor_wait();
		wc.service.invoke("UserRegistrationUpdate");
	}else{
		form.submit();
	}

}

function changepassword(form){

	//retaining the old style
	for (i=0; i<form.elements.length; i++){
		form.elements[i].className =  form.elements[i].className.split(" ",1);
	}

	 reWhiteSpace = new RegExp(/^\s+$/);
	if(form.logonPassword != null && reWhiteSpace.test(form.logonPassword.value) || form.logonPassword.value == ""){ 
		MessageHelper.formErrorHandleClient(form.logonPassword.id,MessageHelper.messages["ERROR_PasswordEmpty"]); return;}
	if(!MessageHelper.isValidUTF8Minlength(form.logonPassword.value, 5)){ 
		MessageHelper.formErrorHandleClient(form.logonPassword.id,MessageHelper.messages["ERROR_PasswordShort"]); return;}
	if(!MessageHelper.isValidUTF8length(form.logonPassword.value, 20)){ 
		MessageHelper.formErrorHandleClient(form.logonPassword.id,MessageHelper.messages["ERROR_PasswordTooLong"]); return;}
	if(form.logonPasswordVerify != null && reWhiteSpace.test(form.logonPasswordVerify.value) || form.logonPasswordVerify.value == ""){ 
		MessageHelper.formErrorHandleClient(form.logonPasswordVerify.id,MessageHelper.messages["ERROR_VerifyPasswordEmpty"]); return;}
	
	
	/*check whether the values in password and verify password fields match, if so, update the password. */ 
	if (form.logonPassword.value.length != 0)
	{
		if(form.logonPassword.value!= form.logonPasswordVerify.value)
		{
			MessageHelper.formErrorHandleClient(form.logonPasswordVerify.id,MessageHelper.messages["PWDREENTER_DO_NOT_MATCH"]);
			return ; 
		}
		
	}
	
	/** Checks whether 'AjaxMyAccount' change flow option is enabled, if so, invokes 'UserRegistrationUpdate' service.
	 *  If 'AjaxMyAccount' change flow option is disabled the form is submitted. 
	 */
	if(MyAccountDisplay.getAjaxVar()=="true"){
		cursor_wait();
		wc.service.invoke("UserRegistrationUpdate");
	}else{
		form.submit();
	}

}

/***
 * 
 * @param form
 * @param logonPassword
 * @param logonPasswordVerify
 * @return
 */

function subScriptionSubmit(form,logonPassword,logonPasswordVerify){

	/* Checks whether the customer has registered for promotional e-mails. */
	if(form.sendMeEmail && form.sendMeEmail.checked){
	    form.receiveEmail.value = true;
	}
	else {
		form.receiveEmail.value = false;
	}
	
	if(form.sendMeSMSPreference && form.sendMeSMSPreference.checked){
		form.receiveSMS.value = true;
	}
	else {
		form.receiveSMS.value = false;
	}
	/*if(form.sendMeSMSNotification && form.sendMeSMSNotification.checked){
	    form.receiveSMSNotification.value = true;
	}
	else {
		form.receiveSMSNotification.value = false;
	}*/
	
	/* For Handling multiple clicks. */
	if(!submitRequest()){
		return;
	}
	
	/** Checks whether 'AjaxMyAccount' change flow option is enabled, if so, invokes 'UserRegistrationUpdate' service.
	 *  If 'AjaxMyAccount' change flow option is disabled the form is submitted. 
	 */
	if(MyAccountDisplay.getAjaxVar()=="true"){
		cursor_wait();
		wc.service.invoke("UserRegistrationUpdate");
	}else{
		form.submit();
	}

}

function forgotPassword(URL ,form){
	URL = URL +'&logonId='+form.logonId.value;
	document.location.href=URL;
}

function homePage(URL){
	document.location.href=URL;
}
