if (typeof jQuery != "undefined") {
	var $j = jQuery.noConflict();
}

var applicationName = 'Whitcoulls';

shop.checkout.saveDeliveryAddress = function() {
    var validName = tao.form.validateElement($('da_first_name'), 'required', 'Please enter a first name');
    validName &= tao.form.validateElement($('da_last_name'), 'required', 'Please enter a last name');
    var validLine1 = tao.form.validateElement($('da_line1'), 'required', 'Please enter the first line of your address');
    var validCity = true;
    if ($('da_line4')) {
        // City isn't always present but is required when it is
        validCity = tao.form.validateElement($('da_line4'), 'required', 'Please enter your city');
    }
    var validCode = tao.form.validateElement($('da_postcode'), 'required', 'Please enter a valid post/zip code');
    var validState = tao.form.validateElement($('da_state'), 'required', 'Please choose a state');
    var validForm = (validName && validLine1 && validCity && validCode && validState);
    if (validForm) {
        xajax_saveDeliveryAddress(xajax.getFormValues('delivery_address_form'))
    } else {
    	shop.display.validationWarn();
    }
}
shop.checkout.saveBillingAddress = function() {
    var validName = tao.form.validateElement($('ba_first_name'), 'required', 'Please enter a first name');
    validName &= tao.form.validateElement($('ba_last_name'), 'required', 'Please enter a last name');
    var validLine1 = tao.form.validateElement($('ba_line1'), 'required', 'Please enter the first line of your address');
    var validCity = true;
    if ($('ba_line4')) {
        // City isn't always present but is required when it is
        validCity = tao.form.validateElement($('ba_line4'), 'required', 'Please enter your city');
    }
    var validCode = tao.form.validateElement($('ba_postcode'), 'required', 'Please enter a valid post/zip code');
    var validState = tao.form.validateElement($('ba_state'), 'required', 'Please choose a state');
    var validForm = (validName && validLine1 && validCity && validCode && validState);
    if (validForm) {
        xajax_saveBillingAddress(xajax.getFormValues('billing_address_form'))
    } else {
    	shop.display.validationWarn();
    }
}

///////////////////////////
//REGISTRATION OVERIDES //
///////////////////////////

shop.user.register = function(destinationUrl) {
     var validName = tao.form.validateElement($('register_first_name'), 'required', 'Please enter a first name');
     validName &= tao.form.validateElement($('register_last_name'), 'required', 'Please enter a surname');
     // User names are optional for taoshop instances
     var userName = "";
     var validUserName = true;
     var storeId = 0;
     
     if ($('register_user_name')) {
         validUserName = tao.form.validateElement($('register_user_name'), 'required', 'Please enter a user name');
         userName = $F('register_user_name');
     }
     if ($('register_store_id')) {
     	storeId = $F('register_store_id');
     }
     var validEmailAddress = tao.form.validateElement($('register_email_address'), 'emailAddress', 'Please enter a valid email address');
     validEmailAddress &= tao.form.validateElement($('register_confirm_email_address'), function(){return $F('register_email_address') == $F('register_confirm_email_address');}, 'Please ensure your confirmation email address matches your main address');
     var validPassword = tao.form.validateElement($('register_password'), 'password', 'Please choose a password of 6 characters or more');
     if (true == validPassword) validPassword &= tao.form.validateElement($('register_password'), function(password){return !['password', 'password123'].member(password)}, 'This password is too obvious - please choose another');           
     validPassword &= tao.form.validateElement($('register_confirm_password'), function(){return $F('register_password') == $F('register_confirm_password');}, 'Please ensure your confirmation password matches your main password');
     if(($F('register_mobile_number') != '') || ($F('SignedUpForSMS') == 'Yes'))
     {
    	 	var validMobileNumber = tao.form.validateElement($('register_mobile_number'), function(test){return tao.form.validate.regex($F(test), /^[\d() ]{9,}$/);}, 'Please enter a valid mobile number');
     }else{
     	tao.form.removeError($('register_mobile_number'));
    	 	var validMobileNumber = true;
     }
     var validForm = (validName && validUserName && validEmailAddress && validPassword && validMobileNumber);
     if (validForm) {
         var optedIn = $$('input:checked[name=SignedUpForEmail]').pluck('value').first();
         var SMSoptedIn = $$('input:checked[name=SignedUpForSMS]').pluck('value').first();
         destinationUrl  = destinationUrl || '/';
         xajax_userRegister($F('register_first_name'),
        		 			$F('register_last_name'),
        		 			userName,
        		 			$F('register_email_address'),
        		 			$F('register_password'),
        		 			optedIn,
        		 			SMSoptedIn,
        		 			$F('register_mobile_number'),
        		 			storeId,
        		 			destinationUrl);
         tao.analytics.track('/customer/register/');
     } else {
         shop.display.validationWarn();
     }
};

shop.user.saveProfile = function() {
  var validName = tao.form.validateElement($('profile_first_name'), 'required', 'Please enter a first name');
  validName &= tao.form.validateElement($('profile_last_name'), 'required', 'Please enter a surname');
  //User names are optional for taoshop instances
  var validUserName = true;
  var userName = "";
  var storeId = 0;
  
  if ($('profile_user_name')) {
      validUserName = tao.form.validateElement($('profile_user_name'), 'required', 'Please enter a user name');
      userName = $F('profile_user_name');
  }
  if ($('profile_store_id')) {
  	storeId = $F('profile_store_id');
  }
  var validEmailAddress =tao.form.validateElement($('profile_email_address'), 'emailAddress', 'Please enter a valid email address');
  if(($F('profile_mobile_number') != '') || ($F('SignedUpForSMS') != null))
  {
 	 var validMobileNumber = tao.form.validateElement($('profile_mobile_number'), function(test){return tao.form.validate.regex($F(test), /^[\d() ]{9,}$/);}, 'Please enter a valid mobile number');
  }else{
 	 var validMobileNumber = true;
  }
  
  var validForm = (validName && validUserName && validEmailAddress && validMobileNumber);
  if (validForm) {
      xajax_saveUserProfile(xajax.getFormValues('profile_form'));
  } else {
  	shop.display.validationWarn();
  }

};

/////////////////////////////////
//END OF REGISTRATION OVERIDES //
/////////////////////////////////

/////////////////////////////////////
//BEGINNING OF VALIDATION OVERIDES //
/////////////////////////////////////
tao.form.validate.phoneNumber = function(test)
{
    return tao.form.validate.regex($F(test), /^[\d() ]{9,}$/);
};
///////////////////////////////
//END OF VALIDATION OVERIDES //
///////////////////////////////

///////////////////////////
//BEGIN VOTING OVERRIDES //
///////////////////////////
shop.user.postSignInCallback = function()
{
//    var message = '<div>You can now vote for the Whitcoulls Top 100!</div>';
//    shop.display.getGrowler().growl(message, {header: shop.name});
};
/////////////////////////
//END VOTING OVERRIDES //
/////////////////////////
