// Create a list to hold the id's of all our form elements var elementsByID = []; var elementsByName = []; var regexList = []; function RegisterFieldID(id, required, error) { elementsByID[elementsByID.length] = {'id':id, 'required':required, 'error':error}; } function RegisterFieldName(name, required, error) { elementsByName[elementsByName.length] = {'name':name, 'required':required, 'error':error}; } function RegisterRegex(id, regex, error) { regexList[regexList.length] = {'id':id, 'regex':regex, 'error':error}; } function CreateFormRowContainerDiv(formFieldID, x, y, required) { var cssclass = 'FormRow FormRow_' + formFieldID; if(required) { cssclass += ' Required'; } var style = 'position: absolute; left: ' + x + 'px; top: ' + y + 'px'; var id = 'FormControl_FormRow_' + formFieldID; var newDiv = GetDefaultElement('div', id, id, cssclass, style, '') return newDiv; } function CreateFormControlContainerDiv(id, type) { var newDiv = document.createElement('div'); newDiv.setAttribute('id', 'FormControl_Field_' + id); newDiv.setAttribute('class', type + ' ' + type + '_' + id); return newDiv; } function CreateLabel(id, idFor, labelText) { var element = null; id = 'FormControl_Label_' + id; var cssclass = 'label label_' + id; // Try the IE way; this fails on standards-compliant browsers try { element = document.createElement(''); element.innerHTML = labelText; } catch (e) { } if (!element || element.nodeName != "LABEL") { // Non-IE browser; use canonical method to create named element element = document.createElement('label'); var labelTextElement = document.createTextNode(labelText); element.setAttribute('id', id); element.setAttribute('for', idFor); element.setAttribute('class', cssclass); element.appendChild(labelTextElement); } return element; } function CreateInputListLabel(id, idFor, labelText) { var element = null; id = 'FormControl_Label_' + id; var cssclass = 'label label_' + id; // Try the IE way; this fails on standards-compliant browsers try { element = document.createElement(''); element.innerHTML = labelText; } catch (e) { } if (!element || element.nodeName != "LABEL") { // Non-IE browser; use canonical method to create named element element = document.createElement('label'); var labelTextElement = document.createTextNode(labelText); element.setAttribute('id', id); element.setAttribute('for', idFor); element.setAttribute('class', cssclass); element.appendChild(labelTextElement); } return element; } function CreateBreak() { var newBreak = document.createElement('br'); return newBreak; } function GetDefaultElement(type, id, name, cssclass, style, content) { var element = null; cssclass = type + ' ' + type + '_' + id + ' ' + cssclass; // Try the IE way; this fails on standards-compliant browsers try { element = document.createElement('<' + type + ' id="'+id+'" name="'+name+'" class="'+cssclass+'" style="'+style+'">' + content + ''); } catch (e) { } if (!element || element.nodeName != type.toUpperCase()) { // Non-IE browser; use canonical method to create named element element = document.createElement(type); element.setAttribute('id', id); element.setAttribute('name', name); element.setAttribute('class', cssclass); element.setAttribute('style', style); element.innerHTML = content; } return element; } function GetDefaultInputElement(inputType, id, name, cssclass) { var element = null; cssclass = inputType + ' ' + inputType + '_' + id + ' ' + cssclass; // Try the IE way; this fails on standards-compliant browsers try { element = document.createElement(''); } catch (e) { } if (!element || element.nodeName != 'INPUT') { // Non-IE browser; use canonical method to create named element element = document.createElement('input'); element.setAttribute('type', inputType); element.setAttribute('id', id); element.setAttribute('name', name); element.setAttribute('class', cssclass); } return element; } function GetDefaultHiddenElement(inputType, id, name, cssclass, value) { var element = null; cssclass = inputType + ' ' + inputType + '_' + id + ' ' + cssclass; // Try the IE way; this fails on standards-compliant browsers try { element = document.createElement(''); } catch (e) { } if (!element || element.nodeName != 'INPUT') { // Non-IE browser; use canonical method to create named element element = document.createElement('input'); element.setAttribute('type', inputType); element.setAttribute('id', id); element.setAttribute('name', name); element.setAttribute('class', cssclass); element.setAttribute('value', value); } return element; } function GetDefaultRadioElement(id, name, cssclass, value) { var element = null; cssclass = 'radio radio_' + id + ' ' + cssclass; // Try the IE way; this fails on standards-compliant browsers try { element = document.createElement(''); } catch (e) { } if (!element || element.nodeName != "INPUT") { // Non-IE browser; use canonical method to create named element element = document.createElement('input'); element.setAttribute('type', 'radio'); element.setAttribute('id', id); element.setAttribute('name', name); element.setAttribute('class', cssclass); element.setAttribute('value', value); } return element; } function CreateStandAloneLabel(id, labelText, cssclass, x, y) { var label = document.createElement('Label'); var labelTextElement = document.createTextNode(labelText); label.setAttribute('id', id); label.setAttribute('class', cssclass); label.setAttribute('style', 'position: absolute; left: ' + x + 'px; top: ' + y + 'px'); label.appendChild(labelTextElement); return label; } function CreateTextBox(id, name, cssclass, required, error, x, y, label, regex) { var containerDiv = CreateFormRowContainerDiv(id, x, y, required); var newID = 'FormControl_Field_' + id; var textbox = GetDefaultInputElement('Textbox', newID, name, cssclass); containerDiv.appendChild(CreateLabel(id, newID, label)); containerDiv.appendChild(textbox); RegisterFieldID(newID, required, error); if(regex != null) { RegisterRegex(newID, regex, error); } return containerDiv; } function CreateHiddenField(id, name, cssclass, x, y, value) { var newID = 'FormControl_Field_' + id; var hiddenField = GetDefaultHiddenElement('Hidden', newID, name, cssclass, value); RegisterFieldID(newID, false, ''); return hiddenField; } function CreateFileUploader(id, name, cssclass, required, error, x, y, label) { var containerDiv = CreateFormRowContainerDiv(id, x, y, required); var newID = 'FormControl_Field_' + id; var fileUploader = GetDefaultInputElement('File', newID, name, cssclass); containerDiv.appendChild(CreateLabel(id, newID, label)); containerDiv.appendChild(fileUploader); RegisterFieldID(newID, required, error); return containerDiv; } function CreateSubmitButton(id, name, cssclass, x, y) { var submitButton = GetDefaultElement('button', id, name, cssclass, 'position: absolute; left: ' + x + 'px; top: ' + y + 'px', '') submitButton.onclick = function() { SubmitData(this); return false; }; submitButton.innerHTML = name; RegisterFieldID(id, false, ''); return submitButton; } function CreateResetButton(id, name, cssclass, x, y) { var resetButton = GetDefaultInputElement('reset', id, name, cssclass); resetButton.setAttribute('style', 'position: absolute; left: ' + x + 'px; top: ' + y + 'px'); RegisterFieldID(id, false, ''); return resetButton; } function CreateCheckBox(id, name, cssclass, value) { var newID = 'FormControl_Field_' + id; var checkbox = GetDefaultInputElement('checkbox', newID, name, cssclass); checkbox.setAttribute('value', value); RegisterFieldID(id, false, ''); return checkbox; } function CreateRadioButton(id, name, cssclass, value) { var newID = 'FormControl_Field_' + id; var radioButton = GetDefaultRadioElement(newID, name, cssclass, value); RegisterFieldID(id, false, ''); return radioButton; } function CreateDropdown(id, multiSelect, required, error) { var newID = 'FormControl_Field_' + id; var newDropDown = document.createElement('select'); newDropDown.setAttribute('id', newID); if(multiSelect.toLowerCase() == 'true' || multiSelect == true) { newDropDown.setAttribute('multiple', 'multiple'); } RegisterFieldID(newID, required, error); return newDropDown; } function CreateDropDownItem(value, label) { var newOption = document.createElement('option'); newOption.setAttribute('value', value); var txtNode = document.createTextNode(label); newOption.appendChild(txtNode); return newOption; } function CreatePostScriptTag(url) { var element = null; // Try the IE way; this fails on standards-compliant browsers try { element = document.createElement(''); } catch (e) { } if (!element || element.nodeName != "LABEL") { // Non-IE browser; use canonical method to create named element element = document.createElement('script'); element.setAttribute('src', url); } return element; } if(!Array.indexOf) { Array.prototype.indexOf = function(obj) { for(var i=0; i 0) { // And that we don't already have the same error added. if(Array.indexOf(errors, newMessage) == -1) { errors[errors.length] = newMessage; } } } function FormatError(errors, html) { var errorMessage = ''; if(html) { for(var i = 0; i < errors.length; i++) { errorMessage += '

' + errors[i] + '

' + '\n'; } } else { for(var i = 0; i < errors.length; i++) { errorMessage += errors[i] + '\n'; } } return errorMessage; } // Make an AJAX post to the page that handles the data function SubmitData(submitButton) { var validationFailed = false; var url = ''; var errors = []; // Check for errors for(var i = 0; i < elementsByID.length; i++) { if(elementsByID[i].required) { element = document.getElementById(elementsByID[i].id); if((element != null)) { if(element.type == 'select-one') { if(!(element.selectedIndex > 0)) { validationFailed = true; AppendError(errors, elementsByID[i].error); } } else if(element.type == 'select-multiple') { var optionSelected = false; for (var j = 0; j < element.options.length; j++) { if (element.options[j].selected) { optionSelected = true; } } if(!optionSelected) { validationFailed = true; AppendError(errors, elementsByID[i].error); } } else if(element.type == 'text') { if(!(element.value.length > 0)) { validationFailed = true; AppendError(errors, elementsByID[i].error); } } else { //alert('problem processing form\n' + element.type + ' - ' + elementsByID[i] + ' - ' + element.value); } } } } // Because checkbox lists and radio button lists go off names, they have a separate check for (var i = 0; i < elementsByName.length; i++) { if(elementsByName[i].required) { var names = document.getElementsByName(elementsByName[i].name); var optionSet = false; for(var j = 0; j < names.length; j++) { if(names[j].checked) { optionSet = true; } } if(!optionSet) { validationFailed = true; AppendError(errors, elementsByName[i].error); } } } // Check any regex for(var i = 0; i < regexList.length; i++) { var element = document.getElementById(regexList[i].id); var result = regexList[i].regex.test(element.value); if(!result) { validationFailed = true; AppendError(errors, regexList[i].error); } } // Collect the form data for (var i = 0; i < elementsByID.length; i++) { element = document.getElementById(elementsByID[i].id); if ((element != null)) { if (element.type == 'select-one') { url += '&' + elementsByID[i].id + '=' + escape(element.options[element.selectedIndex].value); } else if (element.type == 'select-multiple') { var optionSelected = false; url += '&' + elementsByID[i].id + '='; for (var j = 0; j < element.options.length; j++) { if (element.options[j].selected) { if(optionSelected) url += ','; url += escape(element.options[j].value); optionSelected = true; } } } else if ((element.type == 'text') || (element.type == 'hidden')) { url += '&' + elementsByID[i].id + '=' + escape(element.value); } else if ((element.type == 'submit') || (element.type == 'reset')) { // Don't do anything } else { // TODO: Remove // alert('problem processing form\n' + element.type + ' - ' + elementsByID[i] + ' - ' + element.value); } } } // Because checkbox lists and radio button lists go off names, they have a separate check for (var i = 0; i < elementsByName.length; i++) { var names = document.getElementsByName(elementsByName[i].name); for(var j = 0; j < names.length; j++) { if(names[j].checked) { url += '&' + names[j].id + '=' + escape(names[j].value); } } } var ImpressionID = document.getElementById('FormControl_Field_ImpressionID'); if (ImpressionID != null) { url += '&ImpressionID=' + ImpressionID.value; } var WFAUserID = document.getElementById('FormControl_Field_WFAUserID'); if (WFAUserID != null) { url += '&WFAUserID=' + WFAUserID.value; } var WFASessionUserID = document.getElementById('FormControl_Field_WFASessionUserID'); if (WFASessionUserID != null) { url += '&WFASessionUserID=' + WFASessionUserID.value; } if(validationFailed) { alert(FormatError(errors, false)); return false; } var url = 'http://bostonpods.leads.wakefly.com/Services/WebFormAJAXProcessor.aspx?CampaignURLID=2&ValidCallback=AJAXStateChanged&ErrorCallback=AJAXStateChangedError' + url; // Disable the button to prevent multiple submissions submitButton.disabled = true; MakeHttpRequest(url, AJAXStateChanged, false); } function AJAXStateChanged() { // Handle success... window.location = 'http://www.newhampshirestorage.net/NewHampshireStorageQuickQuote/tabid/145/Default.aspx'; } function AJAXStateChangedError() { alert('There was an error submitting your data, please try again later. We are currently working to correct the issue. Thank you for your patience.'); } var http_request; function MakeHttpRequest(url, callback_function, return_xml) { parentElement.appendChild(CreatePostScriptTag(url)); //var response, i; //var activex_ids = [ //'MSXML2.XMLHTTP.3.0', //'MSXML2.XMLHTTP', //'Microsoft.XMLHTTP' //]; //if (window.XMLHttpRequest) //{ // // Mozilla, Safari, IE7+... // http_request = new XMLHttpRequest(); //} //else if (window.ActiveXObject) //{ // // IE6 and older // for (i = 0; i < activex_ids.length; i++) // { // try // { // http_request = new ActiveXObject(activex_ids[i]); // } // catch (e) // { // } // } //} //if (!http_request) //{ // alert('Please upgrade to a newer browser. Your browser is not currently supported by our form.'); // return false; //} //http_request.onreadystatechange = AjaxCallback(callback_function, return_xml); //if(http_request.overrideMimeType) //{ // http_request.overrideMimeType('text/html'); //} //http_request.open('GET', url, true); //http_request.send(null); } function AjaxCallback(callback, return_xml) { var localCallback = callback; var localReturnXML = return_xml; var x = function() { if (http_request.readyState !== 4) { // not ready yet return; } if (http_request.status !== 200) { // ready, but not OK alert('There was a problem with the request.(Code: ' + http_request.status + ')'); return; } if (localReturnXML) { response = http_request.responseXML; } else { response = http_request.responseText; } // invoke the callback localCallback(response); } return x; }; // Get the body element var parentElement = document.getElementsByTagName('body'); parentElement = parentElement[0]; function readCookie(name) { var nameEQ = name + "="; var ca = document.cookie.split(';'); for(var i=0;i < ca.length;i++) { var c = ca[i]; while (c.charAt(0)==' ') c = c.substring(1,c.length); if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); } return null; } // Main function to be run when the page is ready function Run() { // Get the body element var parentElement = document.getElementById('LPM_QuickForm'); // Create the form element var form = document.createElement('div'); form.setAttribute('id', 'FormControl_Wakefly_Form'); form.setAttribute('class', 'Wakefly_form'); form.setAttribute('action', ''); /* document.createElement('form'); form.setAttribute('id', 'mainForm'); form.setAttribute('name', 'mainForm'); form.setAttribute('action', ''); form.setAttribute('onsubmit', 'return false;'); form.setAttribute('enctype', 'multipart/form-data'); form.setAttribute('style', 'position: relative'); parentElement.appendChild(form); */ parentElement.appendChild(form); RegisterFieldName('FormControl_Field_11', true, 'Residential, Business, or Government');var container_11 = CreateFormRowContainerDiv('11', '0', '0', true); var innerContainer_11 = CreateFormControlContainerDiv('11', 'RadioButtonList'); container_11.appendChild(CreateLabel('11', '', '')); innerContainer_11.appendChild(CreateRadioButton('11_565', 'FormControl_Field_11', '', 'Residential')); innerContainer_11.appendChild(CreateInputListLabel('11', 'FormControl_Field_11_565', 'Residential')); innerContainer_11.appendChild(CreateRadioButton('11_566', 'FormControl_Field_11', '', 'Business')); innerContainer_11.appendChild(CreateInputListLabel('11', 'FormControl_Field_11_566', 'Business')); innerContainer_11.appendChild(CreateRadioButton('11_567', 'FormControl_Field_11', '', 'Government')); innerContainer_11.appendChild(CreateInputListLabel('11', 'FormControl_Field_11_567', 'Government')); form.appendChild(container_11); container_11.appendChild(innerContainer_11); form.appendChild(CreateTextBox('12', 'First Name', '', true, 'First Name is required', '0', '30', 'First Name', null)); form.appendChild(CreateTextBox('13', 'Last Name', '', true, 'Last Name is required', '0', '60', 'Last Name', null)); form.appendChild(CreateTextBox('14', 'Phone', '', true, 'Phone number is required.', '0', '90', 'Phone', null)); form.appendChild(CreateTextBox('15', 'E-mail', '', true, 'E-mail is required', '0', '120', 'E-mail', /^((\"[^\"\f\n\r\t\v\b]+\")|([\w\!\#\$\%\&\'\*\+\-\~\/\^\`\|\{\}]+(\.[\w\!\#\$\%\&\'\*\+\-\~\/\^\`\|\{\}]+)*))@((\[(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))\])|(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))|((([A-Za-z0-9\-])+\.)+[A-Za-z\-]+))$/)); form.appendChild(CreateSubmitButton('23', 'Submit', '', '0', '150')); form.appendChild(CreateHiddenField('ImpressionID', 'ImpressionID', '', '0', '0', '17223')); var _userID = "3"; var wfac1 = readCookie("wfac1"); var wfac2 = readCookie("wfac2"); form.appendChild(CreateHiddenField('WFAUserID', 'WFAUserID', '', '0', '0', wfac1.split('.')[1])); form.appendChild(CreateHiddenField('WFASessionUserID', 'WFASessionUserID', '', '0', '0', wfac2.split('.')[2])); } // Add functions to be run when the page is done loading. function addLoadEvent(func) { var oldonload = window.onload; if (typeof window.onload != 'function') { window.onload = func; } else { window.onload = function() { func(); if (oldonload != null) { oldonload(); } }; } } // Add the main function to be run when the page is done loading addLoadEvent(Run); var wfHost = (("https:" == document.location.protocol) ? "https://" : "http://"); document.write(unescape("%3Cscript src='" + wfHost + "stats.wakefly.com/analyticsmin.js' type='text/javascript'%3E%3C/script%3E"));