palm.forms = {
init: function(){
window.addEvent("domready", function(){
palm.forms.CS.init();
for(formToCheck in palm.forms.instances){
if($(formToCheck)){
palm.forms.instances[formToCheck].init();
}
}
});
},
instances: {
/*
* Describes each form and contains validation logic and functions
*/
"contactUsForm": {
btnSend: {},
error: "",
error_info: "",
str: "",
init: function(){
this.str = "";
this.btnSend = $('btnSend');
this.error = $('error');
this.error_info = $('error_info');
//Replace the standard input submit button with styled button in the DOM and update local reference
this.btnSend = palm.forms.replaceSubmitBtn(this.btnSend);
//Attach onclick event to the JS submit button
this.btnSend.addEvent("click",function(){
palm.forms.instances.contactUsForm.str = palm.forms.instances.contactUsForm.validate();
if(palm.forms.instances.contactUsForm.str.length>0){
palm.forms.instances.contactUsForm.error.setStyle("display","")
palm.forms.instances.contactUsForm.error_info.set('html',palm.forms.instances.contactUsForm.str);
}
else{
this.disabled=true;
$('contactUsForm').submit();
return false;
}
palm.forms.instances.contactUsForm.str = "";
});
},
fields: {
firstname: "firstname",
lastname: "lastname",
email: "email",
countrySelected: "country",
contactEnquiry: "messageType"
},
validate: function(){
this.elements = $("form_area").getElements("LABEL");
this.error.setStyle("display","none")
this.elements.each(function(el){
el.className = "";
});
if(palm.forms.txtValueisNull(this.fields.firstname)){
$(this.fields.firstname).getParent().getFirst().className = "error_info";
this.str += "• please check your First name
";
}
if(palm.forms.txtValueisNull(this.fields.lastname)){
$(this.fields.lastname).getParent().getFirst().className = "error_info";
this.str += "• please check your Last name
";
}
if(palm.forms.txtValueisNull(this.fields.email) || !palm.forms.verifyAddress(this.fields.email)){
$(this.fields.email).getParent().getFirst().className = "error_info";
this.str += "• please check your Email address
";
}
if(palm.forms.selectValueIsNull(this.fields.countrySelected)){
$(this.fields.countrySelected).getParent().getParent().getFirst().className = "error_info";
this.str += "• please check your Country
";
}
if(palm.forms.selectValueIsNull(this.fields.contactEnquiry)){
$(this.fields.contactEnquiry).getParent().getParent().getFirst().className = "error_info";
this.str += "• please check your Nature of enquiry
";
}
return this.str;
}
},
"contactSalesForm": {
btnSend: {},
error: "",
error_info: "",
str: "",
init: function(){
this.str = "";
this.btnSend = $('btnSend');
this.error = $('error');
this.error_info = $('error_info');
this.functions.paginateForm();
this.functions.showHideRadioText();
this.functions.showHideSelectText();
},
fields: {
title: "title",
firstname: "firstname",
lastname: "lastname",
email: "email",
confirmemail: "email_confirm",
contactType: "contactType",
contactEnquiry: "messageType",
/* developmentNameOC: "developmentNameOC",
developmentNameUC: "developmentNameUC",
developmentNameTrump: "developmentNameTrump", */
developmentNameMarina: "developmentNameMarina",
developmentNamePlots: "developmentNamePlots",
country: "country",
nationality: "nationality",
individualOrganisationInd: "individualOrganisationInd",
individualOrganisationOrg: "individualOrganisationOrg",
individualOrganisationOrgName: "individualOrganisationOrgName",
mobilephoneCode: "mobilephoneCode",
mobilephoneArea: "mobilephoneArea",
mobilephoneNumber: "mobilephoneNumber"
},
validate: function(){
this.elements = $("form_area").getElements("LABEL");
this.error.setStyle("display","none");
this.elements.each(function(el){
el.className = "";
});
if(palm.forms.selectValueIsNull(this.fields.title)){
$(this.fields.title).getParent().getParent().getFirst().className = "error_info";
this.str += "• please check your Title
";
}
if(palm.forms.txtValueisNull(this.fields.firstname)){
$(this.fields.firstname).getParent().getFirst().className = "error_info";
this.str += "• please check your First name
";
}
if(palm.forms.txtValueisNull(this.fields.lastname)){
$(this.fields.lastname).getParent().getFirst().className = "error_info";
this.str += "• please check your Last name
";
}
if(palm.forms.txtValueisNull(this.fields.email) || !palm.forms.verifyAddress(this.fields.email)){
$(this.fields.email).getParent().getFirst().className = "error_info";
this.str += "• please check your Email address
";
}else if(palm.forms.txtValueisNull(this.fields.confirmemail) || $(this.fields.email).value!=$(this.fields.confirmemail).value){
$(this.fields.email).getParent().getFirst().className = "error_info";
$(this.fields.confirmemail).getParent().getFirst().className = "error_info";
this.str += "• your email addresses do not match
";
}else if(palm.forms.chkByAjax("email",$(this.fields.email).value) == "0"){
$(this.fields.email).getParent().getFirst().className = "error_info";
this.str += "• we have already received a sales enquiry from that email address
";
}
if(palm.forms.selectValueIsNull(this.fields.contactType)){
$(this.fields.contactType).getParent().getParent().getFirst().className = "error_info";
this.str += "• please check your Contact preference
";
/* }
if(palm.forms.chkBoxUnChecked(this.fields.developmentNameOC)&&palm.forms.chkBoxUnChecked(this.fields.developmentNameUC)&&palm.forms.chkBoxUnChecked(this.fields.developmentNameTrump)&&palm.forms.chkBoxUnChecked(this.fields.developmentNameMarina)){
$(this.fields.developmentNameOC).getParent().getParent().getParent().getFirst().className = "error_info";
this.str += "• please select one or more Development name
"; */
}
if(palm.forms.chkBoxUnChecked(this.fields.developmentNameMarina)&&palm.forms.chkBoxUnChecked(this.fields.developmentNamePlots)){
$(this.fields.developmentNameOC).getParent().getParent().getParent().getFirst().className = "error_info";
this.str += "• please select one or more Development name
";
}
if(palm.forms.selectValueIsNull(this.fields.country)){
$(this.fields.country).getParent().getParent().getFirst().className = "error_info";
this.str += "• please check your Country
";
}
if(palm.forms.selectValueIsNull(this.fields.nationality)){
$(this.fields.nationality).getParent().getParent().getFirst().className = "error_info";
this.str += "• please check your Nationality
";
}
if(palm.forms.chkBoxUnChecked(this.fields.individualOrganisationInd)&&palm.forms.chkBoxUnChecked(this.fields.individualOrganisationOrg)){
$(this.fields.individualOrganisationInd).getParent().getParent().getParent().getFirst().className = "error_info";
this.str += "• please state whether you are an Individual or Organisation
";
}else if(!palm.forms.chkBoxUnChecked(this.fields.individualOrganisationOrg)&&palm.forms.txtValueisNull(this.fields.individualOrganisationOrgName)){
$(this.fields.individualOrganisationInd).getParent().getParent().getParent().getFirst().className = "error_info";
this.str += "• please state your Organisation Name
";
}
if(palm.forms.selectValueIsNull(this.fields.mobilephoneCode)||palm.forms.txtValueisNull(this.fields.mobilephoneArea)||palm.forms.txtValueisNull(this.fields.mobilephoneNumber)){
$(this.fields.mobilephoneCode).getParent().getParent().getParent().getParent().getFirst().className = "error_info";
this.str += "• please check your Mobile Number
";
}
return this.str;
},
functions: {
doCheck: function(){
palm.forms.instances.contactSalesForm.str = palm.forms.instances.contactSalesForm.validate();
if(palm.forms.instances.contactSalesForm.str.length>0){
palm.forms.instances.contactSalesForm.error.setStyle("display","")
palm.forms.instances.contactSalesForm.error_info.set('html',palm.forms.instances.contactSalesForm.str);
palm.forms.instances.contactSalesForm.str = "";
return false;
}
palm.forms.instances.contactSalesForm.str = "";
return true;
},
doShowHide: function(id,item,value){
var el = $(id);
if($(el).get(item) == value){
$(id+'Name').getParent().setStyle('display','block');
}else{
$(id+'Name').getParent().setStyle('display','none');
}
},
showHideRadioText: function(){
$$('input.showtextchecked').each(function(el) {
var id = $(el).get('id');
if(!$(el).get('checked')){
$(id+'Name').getParent().setStyle('display','none');
}
var groupName = $(el).get('name');
$$('input[name="'+groupName+'"]').addEvent("change", function() {
palm.forms.instances.contactSalesForm.functions.doShowHide(id,'checked',true);
});
$$('input[name="'+groupName+'"]').addEvent("click", function() {
palm.forms.instances.contactSalesForm.functions.doShowHide(id,'checked',true);
});
});
},
showHideSelectText: function(){
$$('select.showtextchanged').each(function(el) {
var id = $(el).get('id');
if($(el).get('value') != "Other"){
$(id+'Name').getParent().setStyle('display','none');
}
$(el).addEvent("change", function() {
palm.forms.instances.contactSalesForm.functions.doShowHide(id,'value',"Other");
});
});
},
paginateTo: function(s){
if(this.doCheck()){
var thisButtonSet = $$('#form_area fieldset.paginated-form');
thisButtonSet.setStyles(
{
'display':'none'
});
$$(thisButtonSet[s]).setStyle('display','block');
}
},
paginateForm: function(){
$$('#form_area fieldset.paginated-form').setStyles(
{
'display':'none'
}
);
if($('btnSend')) { $('btnSend').getParent().setStyle('display','none'); }
$$('#form_area fieldset.paginated-form')[0].setStyle('display','block');
var forms = $$('#form_area fieldset.paginated-form');
for(var i=0, thisEl="";iPrevious');
$(thisEl).grab(prevNav,'bottom');
}
if(i == forms.length-1 && forms.length != 1){
nextNav.set('html','Finish');
$(thisEl).grab(nextNav,'bottom');
}else if(i != forms.length-1){
nextNav.set('html','Next');
$(thisEl).grab(nextNav,'bottom');
}
}
}
}
},
"qe2PromoForm": {
btnSend: {},
error: "",
error_info: "",
str: "",
init: function(){
this.str = "";
this.btnSend = $('btnSend');
if (!$('error')) {
var error_div = new Element('div', {
'id' : 'error',
'styles' : {
'display' : 'none'
}
});
var error_div_info = new Element('div', {
'id' : 'error_info'
});
error_div_info.inject(error_div, 'inside');
error_div.inject($('qe2PromoForm'), 'before');
}
this.error = $('error');
this.error_info = $('error_info');
//Replace the standard input submit button with styled button in the DOM and update local reference
this.btnSend = palm.forms.replaceSubmitBtn(this.btnSend);
//Attach onclick event to the JS submit button
this.btnSend.addEvent("click",function(){
palm.forms.instances.qe2PromoForm.str = palm.forms.instances.qe2PromoForm.validate();
if(palm.forms.instances.qe2PromoForm.str.length>0){
palm.forms.instances.qe2PromoForm.error.setStyle("display","")
palm.forms.instances.qe2PromoForm.error_info.set('html',palm.forms.instances.qe2PromoForm.str);
}
else{
this.disabled=true;
$('qe2PromoForm').submit();
return false;
}
palm.forms.instances.qe2PromoForm.str = "";
});
},
fields: {
title: "title",
firstname: "firstname",
lastname: "lastname",
email: "email",
boatname: "boatname",
boatnumber: "boatnumber",
totalpeople: "totalpeople",
mobilephoneNumber: "mobilephoneNumber"
},
validate: function(){
this.elements = $("form_area").getElements("LABEL");
this.error.setStyle("display","none")
this.elements.each(function(el){
el.className = "";
});
if(palm.forms.selectValueIsNull(this.fields.title)){
$(this.fields.title).getParent().getParent().getFirst().className = "error_info";
this.str += "• Please state your Title
";
}
if(palm.forms.txtValueisNull(this.fields.firstname)){
$(this.fields.firstname).getParent().getFirst().className = "error_info";
this.str += "• Please provide your First name
";
}
if(palm.forms.txtValueisNull(this.fields.lastname)){
$(this.fields.lastname).getParent().getFirst().className = "error_info";
this.str += "• Please provide your Last name
";
}
if(palm.forms.txtValueisNull(this.fields.email) || !palm.forms.verifyAddress(this.fields.email)){
$(this.fields.email).getParent().getFirst().className = "error_info";
this.str += "• Please check your Email address
";
}
if(palm.forms.txtValueisNull(this.fields.boatnumber)){
$(this.fields.boatnumber).getParent().getFirst().className = "error_info";
this.str += "• Please provide a Boat registration number
";
}
if(palm.forms.txtValueisNull(this.fields.mobilephoneNumber)){
$(this.fields.mobilephoneNumber).getParent().getFirst().className = "error_info";
this.str += "• Please enter your Mobile number
";
}
if(palm.forms.txtValueisNull(this.fields.totalpeople)){
$(this.fields.totalpeople).getParent().getFirst().className = "error_info";
this.str += "• Please state the Total number of people onboard
";
}
return this.str;
}
}
},
replaceSubmitBtn: function(btnSend){
var cssBtnOff = "input_button_off";
var cssBtnOn = "input_button_on";
btnSend.addEvent("mouseover",function(e){
btnSend.removeClass(cssBtnOff);
btnSend.addClass(cssBtnOn);
});
btnSend.addEvent("mouseout",function(e){
btnSend.removeClass(cssBtnOn);
btnSend.addClass(cssBtnOff);
});
// Replace input button with styled tag
var jsButton = new Element("a",
{
href: "#",
id: "btnSend"
}).cloneEvents(btnSend,"click");
jsButton.set("html",(btnSend.get("value"))).replaces(btnSend);
return jsButton;
},
selectValueIsNull: function(divId){
/*check dropdown list*/
var isExit = false;
var svlue=$(divId);
svlue = svlue.selectedIndex;
if(svlue == "0")
{
isExit = true;
}
return isExit;
},
txtValueisNull: function(txtBox){
/*check input_txt*/
var rtValue=false;
var txtValu=$(txtBox).value;
if(txtValu != "")
{
rtValue = false;
}
else
{
rtValue = true;
}
return rtValue ;
},
chkBoxUnChecked: function(chkBox){
if($(chkBox).get('checked')){
return false;
}
else{
return true;
}
},
verifyAddress: function(obj){
/*email regex*/
var email = $(obj).value;
var pattern = /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/
flag = pattern.test(email);
if(flag)
{
return true;
}
else
{
return false;
}
},
chkByAjax: function(type,args){
var output;
var myRequest = new Request(
{
url: 'http://'+location.host+'/contact-sales-ajax.php',
method: 'get',
async: false,
data:
{
'type': type,
'args': args
},
onSuccess: function(r){
output = r;
}
}
);
myRequest.send();
return output;
},
isNumber: function(s)
{
var s = $(s).value;
var pattern =/^\d+(\\d+)?$/;
//var pattern = /^[0-9][1-9][0-9]$/;
flag = pattern.test(s);
if(flag)
{
return true;
}
else
{
return false;
}
},
CS: {
/* Country select auto-population */
countryList : 'country',
mobileCountryList : 'mobilephoneCode',
mobileCountryOptions : '',
officeCountryList : 'officephoneCode',
homeCountryList : 'homephoneCode',
dialClassPrefix : 'country_',
dialClass : '',
selectedCountry : '',
init: function() {
// This object only initialises when the required elements are present in the DOM
// Ensure target elements are contained within the DOM
if (!$(palm.forms.CS.countryList) || !$(palm.forms.CS.mobileCountryList) || !$(palm.forms.CS.officeCountryList) || !$(palm.forms.CS.homeCountryList)) {
return false;
}
// Re-assign variables of ID strings to their matching DOM elements
this.countryList = $(palm.forms.CS.countryList);
palm.forms.CS.mobileCountryList = $(palm.forms.CS.mobileCountryList);
palm.forms.CS.mobileCountryOptions = palm.forms.CS.mobileCountryList.getChildren('option');
palm.forms.CS.officeCountryList = $(palm.forms.CS.officeCountryList);
palm.forms.CS.homeCountryList = $(palm.forms.CS.homeCountryList);
// Capture change or blur to the Country list
palm.forms.CS.countryList.addEvent('change', palm.forms.CS.getCountry);
palm.forms.CS.countryList.addEvent('keyup', palm.forms.CS.getCountry);
// Remove events from Country list if user interacts with dial
//number dropd-owns
palm.forms.CS.mobileCountryList.addEvent('change', palm.forms.CS.removeEvents);
palm.forms.CS.officeCountryList.addEvent('change', palm.forms.CS.removeEvents);
palm.forms.CS.homeCountryList.addEvent('change', palm.forms.CS.removeEvents);
},
getCountry: function() {
// Grab the selected country value
palm.forms.CS.selectedCountry = palm.forms.CS.countryList.getChildren('option')[palm.forms.CS.countryList.selectedIndex].value;
palm.forms.CS.updateDialCode(palm.forms.CS.selectedCountry);
},
removeEvents: function() {
// revmoed the syncing of drop-down field events
palm.forms.CS.countryList.removeEvent('change', palm.forms.CS.getCountry);
palm.forms.CS.countryList.removeEvent('keyup', palm.forms.CS.getCountry);
palm.forms.CS.mobileCountryList.removeEvents('change');
palm.forms.CS.officeCountryList.removeEvents('change');
palm.forms.CS.homeCountryList.removeEvents('change');
},
updateDialCode: function(country) {
// Construct new country class name
palm.forms.CS.dialClass = palm.forms.CS.dialClassPrefix + country;
// Search for the option that has that ID
$each(palm.forms.CS.mobileCountryOptions, function(option, index) {
if (option.getProperty('id') == palm.forms.CS.dialClass) {
palm.forms.CS.mobileCountryList.selectedIndex = index;
palm.forms.CS.officeCountryList.selectedIndex = index;
palm.forms.CS.homeCountryList.selectedIndex = index;
}
});
}
}
};
palm.forms.init();