
var TCI=(function(name){return name;}(TCI||{}));TCI.serviceForm=(function(name){return name;}(TCI.serviceForm||{}));TCI.serviceForm.textareaTextLimiter=function(){$('textarea').live('keydown',function(){$(this).val().length>2000?$(this).val($(this).val().substring(0,2000)):0;});};TCI.serviceForm.getToolTipOrientation=function(el){if($(el).offset().left+270>$(window).width()){return'left';}
return'right';};TCI.serviceForm.getToolTipPosition=function(el){var or=this.getToolTipOrientation(el);var tp=$(el).offset().top-20;var lft=or=='left'?$(el).offset().left-270:$(el).offset().left+25;return{left:lft,top:tp,orientation:or};};TCI.serviceForm.deploy=function(container,templatePath,formData,byPassRender){var self=this;if(!byPassRender){try{jQuery(container).html(new EJS({url:templatePath}).render(formData));}catch(e){TCI.Log.error(e);throw(e);}}
if(TCI.Globals.brand=="TOY"){var self=this;$('body').append('<div class="bp_tooltip small left" id="formtip"><table class="tt_top"><tr><td class="tt_top_left"/><td class="tt_top_mid">&nbsp;</td><td class="tt_top_right"/></tr></table><table class="tt_middle"><tr><td class="tt_middle_left"/><td class="tt_middle_mid"/><td class="tt_middle_right"/></tr></table><table class="tt_bottom"><tr><td class="tt_bottom_left"/><td class="tt_bottom_mid">&nbsp;</td><td class="tt_bottom_right"/></tr></table></div>');$('.error_container').tooltip({'tip':'#formtip','position':'left','delay':100,'predelay':0});$('.error_container').live('mouseover',function(){var pos=self.getToolTipPosition(this);$('#formtip').removeClass('left').removeClass('right').addClass(pos.orientation);$('#formtip').css({top:pos.top,left:pos.left,position:'absolute'});$('#formtip td.tt_middle_mid').html(jQuery(this).children('span.error_message').text());$('#formtip').show();});$('.error_container').live('mouseout',function(){$('#formtip').hide();});}
for(field in formData.fields){var fieldId='#'+field;if(formData.fields[field].parts!==undefined&&formData.fields[field].isRequired){TCI.serviceForm.applyMultiPartRequiredValidation(formData.fields[field].parts,formData.fields[field].requiredMessage,formData.fields[field].requiredCondition);}else if(formData.fields[field].isRequired){TCI.serviceForm.applyRequiredValidation(field,formData.fields[field].requiredMessage,formData.fields[field].requiredCondition);}
if(formData.fields[field].parts!==undefined&&formData.fields[field].format=="dob"){TCI.serviceForm.applyMultiPartDOBValidation(formData.fields[field].parts,formData.fields[field].formatMessage);}
else if(formData.fields[field].parts!==undefined&&formData.fields[field].format!==undefined){TCI.serviceForm.applyMultiPartFormatValidation(formData.fields[field].parts,formData.fields[field].formatMessage,formData.fields[field].format);}else if(formData.fields[field].format!==undefined){TCI.serviceForm.applyformatValidation(field,formData.fields[field].formatMessage,formData.fields[field].format);}
if(fieldId.match(/(.+)_confirmation/)){var original=field.match(/(.+)_confirmation/)[1];TCI.serviceForm.applyConfirmationValidation(field,original,formData.fields[field].confirmationMessage);}
if(formData.fields[field].maxlength!==undefined){$('#'+field).attr('maxlength',formData.fields[field].maxlength);}}};TCI.serviceForm.applyRequiredValidation=function(id,message,condition){TCI.Log.debug('applyRequiredValidation on '+id);jQuery('#'+id).bind('blur',{message:message,condition:condition},TCI.serviceForm.checkRequired);};TCI.serviceForm.applyformatValidation=function(id,message,format){TCI.Log.debug('applyformatValidation on '+id);jQuery('#'+id).bind('blur',{message:message,format:format},TCI.serviceForm.checkFormat);};TCI.serviceForm.applyConfirmationValidation=function(id,original,message){TCI.Log.debug('applyConfirmationValidation on '+id);jQuery('#'+id).bind('blur',{message:message,confirmation:id,original:original},TCI.serviceForm.checkConfirmed);jQuery('original'+id).bind('blur',{message:message,confirmation:id,original:original},TCI.serviceForm.checkConfirmed);};TCI.serviceForm.applyMultiPartRequiredValidation=function(parts,message,condition){for(part in parts){TCI.Log.debug('applyMultiPartRequiredValidation on '+part);jQuery('#'+part).bind('blur',{message:message,parts:parts,condition:condition},TCI.serviceForm.checkMultiRequired);}};TCI.serviceForm.applyMultiPartFormatValidation=function(parts,message,format){for(part in parts){TCI.Log.debug('applyMultiPartFormatValidation on '+part);jQuery('#'+part).bind('blur',{message:message,parts:parts,format:format},TCI.serviceForm.checkMultiFormat);}};TCI.serviceForm.applyMultiPartDOBValidation=function(parts,message){for(part in parts){TCI.Log.debug('applyMultiPartDOBValidation on '+part);jQuery('#'+part).bind('blur',{message:message,parts:parts},TCI.serviceForm.checkMultiFormatDOB);}};TCI.serviceForm.hasContentRegex=new RegExp(/\S/);TCI.serviceForm.isEmpty=function(value)
{return!value?true:!(new RegExp(/\S/)).test(value);};TCI.serviceForm.checkRequired=function(event){$(this).val($(this).val().trim());var doCheck=true;if(event.data.condition){doCheck=TCI.serviceForm.checkCondition(event.data.condition);if(doCheck){}else{TCI.serviceForm.removeErrorStatus(this,'error_required');}}
if(!doCheck||(doCheck&&jQuery(this).attr('type')=='checkbox'&&jQuery(this).attr('checked'))||(doCheck&&jQuery(this).attr('type')!='checkbox'&&TCI.serviceForm.hasContentRegex.test(jQuery(this).val()))){TCI.serviceForm.removeErrorStatus(this,'error_required');}else if(!jQuery(this).hasClass('error_required')){TCI.serviceForm.applyErrorStatus(this,'error_required',event.data.message);}};TCI.serviceForm.checkFormat=function(event){var isBlank=!TCI.serviceForm.hasContentRegex.test(jQuery(this).val());var runRegularTest=!event.data.format.type;if(isBlank||(runRegularTest&&jQuery(this).val().match(event.data.format))||(!runRegularTest&&event.data.format.functionDef(event.data.format.params))){TCI.serviceForm.removeErrorStatus(this,'error_format');}else if(!jQuery(this).hasClass('error_format')){TCI.serviceForm.applyErrorStatus(this,'error_format',event.data.message);}};TCI.serviceForm.checkConfirmed=function(event){var confirmation='#'+event.data.confirmation;var original='#'+event.data.original;if(jQuery(confirmation).val()==jQuery(original).val()){TCI.serviceForm.removeErrorStatus(confirmation,'error_confirm');}else if(!jQuery(confirmation).hasClass('error_confirm')){TCI.serviceForm.applyErrorStatus(confirmation,'error_confirm',event.data.message);}};TCI.serviceForm.checkMultiRequired=function(event){$(this).addClass('touched');var doCheck=true;var fullValue='';var part;for(part in event.data.parts){fullValue+=$('#'+part).val();if(event.data.parts[part]=='required'&&!$('#'+part).hasClass('touched')){doCheck=false;break;}}
if(doCheck){if(event.data.condition){doCheck=TCI.serviceForm.checkCondition(event.data.condition);}
if(!doCheck||(doCheck&&TCI.serviceForm.hasContentRegex.test(fullValue))){for(part in event.data.parts){TCI.serviceForm.removeErrorStatus('#'+part,'error_required');}}else if(doCheck&&!jQuery(this).hasClass('error_required')){for(var part in event.data.parts){TCI.serviceForm.applyErrorStatus('#'+part,'error_required',event.data.message);}}}else{for(part in event.data.parts){TCI.serviceForm.removeErrorStatus('#'+part,'error_required');}}};TCI.serviceForm.checkMultiFormat=function(event){$(this).addClass('touched');var doCheck=true;var fullValue='';var requiredValue='';for(part in event.data.parts){fullValue+=$('#'+part).val();event.data.parts[part]=='required'?requiredValue+=$('#'+part).val():0;if(event.data.parts[part]=='required'&&!$('#'+part).hasClass('touched')){doCheck=false;break;}}
if(doCheck){if(!TCI.serviceForm.hasContentRegex.test(fullValue)||(fullValue.match(event.data.format)&&requiredValue.match(event.data.format))){for(part in event.data.parts){TCI.serviceForm.removeErrorStatus('#'+part,'error_format');}}else if(!jQuery(this).hasClass('error_format')){for(var part in event.data.parts){TCI.serviceForm.applyErrorStatus('#'+part,'error_format',event.data.message);}}}};TCI.serviceForm.checkMultiFormatDOB=function(event){$(this).addClass('touched');var doCheck=true;var fullValue='';for(part in event.data.parts){fullValue+='-'+$('#'+part).val();if(event.data.parts[part]=='required'&&!$('#'+part).hasClass('touched')){doCheck=false;break;}}
fullValue=fullValue.substring(1);if(doCheck){if(TCI.Utils.isDate(fullValue)&&!TCI.serviceForm.isUnder18(fullValue)){for(part in event.data.parts){TCI.serviceForm.removeErrorStatus('#'+part,'error_format');}}
else{for(var part in event.data.parts){TCI.serviceForm.applyErrorStatus('#'+part,'error_format',event.data.message);}}}};TCI.serviceForm.isUnder18=function(fullValue){var dob=fullValue;now=new Date();then=(now.getFullYear()-18);eighteenYearsAgo=now.setFullYear(then);var d=parseInt(dob.split('-')[0],10);var m=(parseInt(dob.split('-')[1],10)-1);var y=parseInt(dob.split('-')[2],10);var age=new Date(y,m,d);return age.getTime()>=eighteenYearsAgo;};TCI.serviceForm.checkCondition=function(condition){if(condition.type=='function'){return condition['functionDef'](condition.params);}
if(typeOf(condition)=='array'){for(var i in condition){if(TCI.serviceForm.checkSingleCondition(condition[i])){return true;}}
return false;}else{return TCI.serviceForm.checkSingleCondition(condition);}};TCI.serviceForm.checkSingleCondition=function(condition){var conditionMet=false;var conditionField='#'+condition.field;if(jQuery(conditionField).attr('type')=='radio'||jQuery(conditionField).attr('type')=='checkbox'){conditionMet=jQuery(conditionField).attr('checked');}else if(condition.comparator=="=="){conditionMet=jQuery(conditionField).val()==condition.value;}else if(condition.comparator=="!="){conditionMet=jQuery(conditionField).val()!=condition.value;}else if(condition.comparator=="<"){if(jQuery(conditionField).val()!=''){try{conditionMet=parseInt(jQuery(conditionField).val(),10)<parseInt(condition.value,10);}catch(e){conditionMet=jQuery(conditionField).val()<condition.value;}}}else if(condition.comparator==">"){if(jQuery(conditionField).val()!=''){try{conditionMet=parseInt(jQuery(conditionField).val(),10)>parseInt(condition.value,10);}catch(e){conditionMet=jQuery(conditionField).val()<condition.value;}}}
return conditionMet;};TCI.serviceForm.validate=function(formData){var isValid=true;for(field in formData.fields){var formId='#'+formData.id;var formField=formData.fields[field];var fieldId='#'+field;var conditionMet=true;if(formField.requiredCondition!==undefined){conditionMet=TCI.serviceForm.checkCondition(formField.requiredCondition);}
if(conditionMet){if(formField.isRequired&&jQuery(fieldId).attr('type')=='radio'){var name=$(fieldId).attr('name');isValid=false;$('[name='+name+']:checked').val()?isValid=true:0;if(!isValid){$('#field_'+name).addClass('error_required');jQuery(formId).find('input, select, textarea').blur();$('input:radio').each(function(){TCI.serviceForm.validateRadioGroups(this,formData);});break;}
$('#field_'+name).removeClass('error_required');isValid=true;}
var fieldValue='';var requiredValue=null;var fieldSeperator=formField.format=='dob'?'-':'';if(formField.parts!==undefined){requiredValue='';for(part in formField.parts){fieldValue=fieldValue+fieldSeperator+jQuery('#'+part).val();if(formField.parts[part]=='required'){requiredValue+=$('#'+part).val();}}}else{fieldValue=jQuery(fieldId).val();}
if(formField.format=='dob'){fieldValue=fieldValue.substring(1);}
var hasContent=TCI.serviceForm.hasContentRegex.test(fieldValue);if((formField.isRequired&&jQuery(fieldId).attr('type')=='checkbox'&&!jQuery(fieldId).attr('checked'))||(formField.isRequired&&!hasContent)||(formField.format&&formField.format.type=='function'&&hasContent&&!formField.format.functionDef(formField.format.params))||formField.format&&!formField.format.type&&hasContent&&!((formField.format=='dob'&&TCI.Utils.isDate(fieldValue))||fieldValue.match(formField.format))||(formField.format&&!formField.format.type&&formField.format!='dob'&&hasContent&&requiredValue!=null&&!requiredValue.match(formField.format))||(fieldId.match(/(.+)_confirmation/)&&!(fieldValue==jQuery(fieldId.match(/(.+)_confirmation/)[1]).val()))){isValid=false;jQuery(formId).find('input, select, textarea').blur();$('input:radio').each(function(){TCI.serviceForm.validateRadioGroups(this,formData);});break;}}}
return isValid;};TCI.serviceForm.previousName="";TCI.serviceForm.validateRadioGroups=function(el,formData){var name=$(el).attr('name');if(name==TCI.serviceForm.previousName){return;}
var field=formData.fields[$(el).attr('id')];if(field&&field.isRequired){isValid=false;$('[name='+name+']:checked').val()?isValid=true:0;if(!isValid){$('#field_'+name).addClass('error_required');TCI.serviceForm.applyErrorStatus('#field_'+name+' > div','error_required',field.requiredMessage,name);return;}
$('#field_'+name+' > span').removeClass('error_required').children('span').detach();$('#field_'+name).removeClass('error_required');isValid=true;}
TCI.serviceForm.previousName=name;};TCI.serviceForm.applyErrorStatus=function(field,errorClass,errorMessage,name){var _name=name?name:"";jQuery(field).addClass(errorClass);jQuery(field).addClass('with_error');jQuery(field).siblings('.error_container').html('<span class="'+errorClass+' error_message">'+errorMessage
+'</span>').addClass(errorClass);$(field).is('textarea')?$(field).parent().addClass(errorClass+'_parent'):0;if(TCI.Globals.brand=="SCI"){TCI.ToolTipAction.init({'field':field,'class':'.error_container','position':'right','size':'small','flag':5,'offset':'0','errorMessage':errorMessage,'name':_name});}};TCI.serviceForm.removeErrorStatus=function(field,errorClass){if(jQuery(field).hasClass(errorClass)){jQuery(field).siblings('.error_container').removeClass(errorClass).removeClass('with_error').children('span.'+errorClass).detach();jQuery(field).removeClass(errorClass);$(field).is('textarea')?$(field).parent().removeClass(errorClass+'_parent'):0;}};TCI.serviceForm.removeRadioGroupErrorStatus=function(field,errorClass){jQuery(field).children('.error_container').removeClass(errorClass).removeClass('with_error').children('span.'+errorClass).detach();};EJS.Helpers.prototype.tci_service_form_field=function(id,cssClass){TCI.Log.debug("Rendering field: "+id+".");if(this._data.fields[id].type=='hidden'){return this.input_field_tag(id,this._data.fields[id].value,'hidden');}else{var cssClass=!cssClass?'':' '+cssClass;var result='<div id="field_'+id+'" class="field field_'
+this._data.fields[id].type+cssClass+'"><label for="'+id+'">';if(this._data.fields[id].isRequired&&this._data.fields[id].type!='radio'){result+='<span class="required">*</span>';}
result+=this._data.fields[id].label+'</label>';result+='<span class="'+this._data.fields[id].type+'">';switch(this._data.fields[id].type){case'text':if(this._data.fields[id].parts){var part;for(part in this._data.fields[id].parts){result+=this.text_field_tag(part);}}else{result+=this.text_field_tag(id);}
break;case'textarea':result+=this.text_area_tag(id,this._data.fields[id].value,{"rows":"4","cols":"35"});break;case'select':result+=this.select_tag(id,this._data.fields[id].defaultValue,this._data.fields[id].options);break;case'radio':result+=this.input_field_tag(this._data.fields[id].name,this._data.fields[id].value,'radio',{"id":id});break;case'checkbox':result+=this.input_field_tag(this._data.fields[id].name,this._data.fields[id].value,'checkbox',{"id":id});break;case'password':result+=this.password_field_tag(id);break;case'submit':result+='<button class="action_btn"  id="'+id+'" value="'
+this._data.fields[id].value+'"><em>'
+this._data.fields[id].value+'</em></button>';break;}
result+='<span class="error_container"></span></span></div>';return result;}};EJS.Helpers.prototype.tci_service_form_submit_as_anchor=function(id){var result='<div id="field_'+id+'" class="field field_'
+this._data.fields[id].type+'"><label for="'+id+'">';result+=this._data.fields[id].label+'</label>';result+='<span class="'+this._data.fields[id].type+'">';switch(this._data.fields[id].type){case'submit':result+='<a class="submit action_btn"  id="'+id+'" value="'
+this._data.fields[id].value+'"><em>'
+this._data.fields[id].value+'</em></a>';break;}
result+='<span class="error_container"></span></span><input type="submit" class="hidden_submit" value="hidden submit"/></div>';return result;};EJS.Helpers.prototype.tci_service_form_vin_field=function(id){TCI.Log.debug("Rendering field: "+id);var result='<div id="field_'+id+'" class="field vin_field field_'
+this._data.fields[id].type+'"><label for="'+id+'">';if(this._data.fields[id].isRequired&&this._data.fields[id].type!='radio'){result+='<span class="required">*</span>';}
result+=this._data.fields[id].label+'</label>';result+='<span class="'+this._data.fields[id].type+'">';result+=this.text_field_tag(id);result+='<span class="error_container"></span></span><a href="#" id="vin_info"></a></div>';return result;};EJS.Helpers.prototype.tci_service_form_phone_field_no_ext=function(id){TCI.Log.debug("Rendering field: "+id);var result='<div id="field_'+id+'" class="field field_phone field_'
+this._data.fields[id].type+'"><label for="'+id+'">';if(this._data.fields[id].isRequired&&this._data.fields[id].type!='radio'){result+='<span class="required">*</span>';}
result+=this._data.fields[id].label+'</label>';result+='<span class="'+this._data.fields[id].type+'">';result+=this.text_field_tag(id+'_area','',{'maxlength':'3','class':'area'});result+=this.text_field_tag(id+'_complete','',{'maxlength':'7','class':'complete'});result+='<span class="error_container"></span></span></div>';return result;};EJS.Helpers.prototype.tci_service_form_dob_field=function(id){TCI.Log.debug("Rendering field: "+id);var result='<div id="field_'+id+'" class="field field_dob field_'
+this._data.fields[id].type+'"><label for="'+id+'">';if(this._data.fields[id].isRequired&&this._data.fields[id].type!='radio'){result+='<span class="required">*</span>';}
result+=this._data.fields[id].label+'</label>';result+='<span class="'+this._data.fields[id].type+'">';result+=this.text_field_tag(id+'_day',TCI.localize.getLabel('day_abbr'),{'maxlength':'2','class':'day'});result+=this.text_field_tag(id+'_month',TCI.localize.getLabel('month_abbr'),{'maxlength':'2','class':'month'});result+=this.text_field_tag(id+'_year',TCI.localize.getLabel('year_abbr'),{'maxlength':'4','class':'year'});result+='<span class="error_container"></span></span></div>';return result;};EJS.Helpers.prototype.tci_service_form_phone_field=function(id){TCI.Log.debug("Rendering field: "+id);var result='<div id="field_'+id+'" class="field field_phone field_'
+this._data.fields[id].type+'"><label for="'+id+'">';if(this._data.fields[id].isRequired&&this._data.fields[id].type!='radio'){result+='<span class="required">*</span>';}
result+=this._data.fields[id].label+'</label>';result+='<span class="'+this._data.fields[id].type+'">';result+=this.text_field_tag(id+'_area','',{'maxlength':'3','class':'area'});result+=this.text_field_tag(id+'_complete','',{'maxlength':'7','class':'complete'});result+='<span class="ext">ext</span>'+this.text_field_tag(id+'_ext','',{'maxlength':'6','class':'ext'});result+='<span class="error_container"></span></span></div>';return result;};EJS.Helpers.prototype.tci_service_form_postal_code_field=function(id){TCI.Log.debug("Rendering field: "+id);var result='<div id="field_'+id
+'" class="field field_postal_code field_'
+this._data.fields[id].type+'"><label for="'+id+'">';if(this._data.fields[id].isRequired&&this._data.fields[id].type!='radio'){result+='<span class="required">*</span>';}
result+=this._data.fields[id].label+'</label>';result+='<span class="'+this._data.fields[id].type+'">';result+=this.text_field_tag(id+'_part1','',{'maxlength':'3','class':'part1'});result+=this.text_field_tag(id+'_part2','',{'maxlength':'3','class':'part2'});result+='<span class="error_container"></span></span></div>';return result;};TCI.FormElementManager=function(){this.selectBox={};};TCI.FormElementManager.prototype={setSelectBox:function(o,container){var self=this;container=$(container||'body');container.find('select').each(function(){self.selectBox[$(this).attr('id')]?self.selectBox[$(this).attr('id')].destroy():0;self.selectBox[$(this).attr('id')]=new TCI.FormElements.SelectBox({id:$(this).attr('id'),manager:self});});return this;},addSelectBox:function(o){o.manager=this;this.selectBox[o.id]=new TCI.FormElements.SelectBox(o);},deleteSelectBox:function(id){delete this.selectBox[id];},getSelectBox:function(id){return this.selectBox[id];},setTextArea:function(container){container=$(container||'body');container.find('textarea').each(function(){new TCI.FormElements.TextArea({el:this});});return this;},setCheckBox:function(container){container=$(container||'body');container.find(':checkbox').each(function(){new TCI.FormElements.CheckBox({id:$(this).attr('id')});});return this;},setRadioGroups:function(container){var nme="";container=$(container||'body');container.find('input:radio').each(function(){if($(this).attr('name')!=nme){nme=$(this).attr('name');new TCI.FormElements.RadioGroup({name:nme});}});return this;}};TCI.FormElements=function(){};TCI.FormElements.prototype={addListeners:function(){var self=this;$(this.el).click(function(){self.adjustView(this,true);self.adjustTarget();return false;}).keydown(function(event){switch(event.keyCode){case 13:event.preventDefault();self.adjustView(this,true);self.adjustTarget();break;}}).focus(function(){}).blur(function(){});$(this.el).parent().siblings('label').click(function(){self.adjustView(self.el,false);self.adjustTarget();});}};TCI.FormElements.RadioGroup=function(o){if(o){this.name=o.name;this.radios=[];this.gather();}};TCI.FormElements.RadioGroup.prototype=new TCI.FormElements();TCI.FormElements.RadioGroup.prototype.gather=function(){var self=this;$("input[name='"+this.name+"']").each(function(){self.radios.push(new TCI.FormElements.Radio({el:this,group:self}));});};TCI.FormElements.RadioGroup.prototype.clearAll=function(){$.each(this.radios,function(){this.turnOff();});};TCI.FormElements.RadioGroup.prototype.change=function(){$("input[name='"+this.name+"']").change();};TCI.FormElements.Radio=function(o){if(o){this.id=$(o.el).attr('id');this.group=o.group;this.site=o.site||'scion';this.state='unselected';this.el;this.replace();this.addListeners();}};TCI.FormElements.Radio.prototype=new TCI.FormElements();TCI.FormElements.Radio.prototype.replace=function(){$('#'+this.id).hide().is(':checked')?this.state='selected':0;var div=document.createElement('div');$(div).addClass(this.site+'_radio').addClass('rb'+this.state).attr('tabindex','0');$(div).attr('id',this.id+'_radio');$(div).insertAfter($('#'+this.id));this.el=div;};TCI.FormElements.Radio.prototype.turnOff=function(){$(this.el).removeClass().addClass('scion_radio rbunselected');this.state='unselected';};TCI.FormElements.Radio.prototype.addListeners=function(){var self=this;$(this.el).click(function(){self.adjustView(this,true);self.adjustTarget();return false;}).keydown(function(event){switch(event.keyCode){case 13:event.preventDefault();self.adjustView(this,true);self.adjustTarget();break;}}).focus(function(){self.addClasses(this,true);$(this).attr("hideFocus","hidefocus");}).blur(function(){self.addClasses(this,false);$('#'+self.id).blur();});$('label[for='+this.id+']').click(function(){self.adjustView(self.el,false);self.adjustTarget();});};TCI.FormElements.Radio.prototype.addClasses=function(rb,focus){$(rb).removeClass();if(this.state==='selected'){if(focus){$(rb).addClass('scion_radio rbfocusselected');}else{$(rb).addClass('scion_radio rbselected');}}
else{if(focus){$(rb).addClass('scion_radio rbfocusunselected');}else{$(rb).addClass('scion_radio rbunselected');}}};TCI.FormElements.Radio.prototype.adjustView=function(rb,focus){this.group.clearAll();this.state='selected';this.addClasses(rb,focus);};TCI.FormElements.Radio.prototype.adjustTarget=function(){var name=$('#'+this.id).attr('name');$('#field_'+name+' > span').removeClass('error_required').children('span').detach();$('#field_'+name).removeClass('error_required');$('#'+this.id).attr('checked',true);this.group.change();};TCI.FormElements.Radio.prototype.refresh=function(){this.state=$('#'+this.id).hide().is(':checked')?'selected':'unselected';this.addClasses($(this.el),false);};TCI.FormElements.CheckBox=function(o){if(o){this.id=o.id;this.site=o.site||'scion';this.state='unselected';this.el;this.isDisabled=false;if($('#'+this.id).attr('disabled')){this.isDisabled=true;}
this.replace();this.addListeners();}};TCI.FormElements.CheckBox.prototype=new TCI.FormElements();TCI.FormElements.CheckBox.prototype.replace=function(){$('#'+this.id).hide().is(':checked')?this.state='selected':0;var div=document.createElement('div');$(div).addClass(this.site+'_checkbox').addClass('cb'+this.state).attr('tabindex','0');$(div).attr('id',this.id+'_cb');$(div).insertAfter($('#'+this.id));this.el=div;};TCI.FormElements.CheckBox.prototype.addClasses=function(cb,focus){$(cb).removeClass();if(this.state==='selected'){if(focus){$(cb).addClass('scion_checkbox cbfocusselected');}else{$(cb).addClass('scion_checkbox cbselected');}}
else{if(focus){$(cb).addClass('scion_checkbox cbfocusunselected');}else{$(cb).addClass('scion_checkbox cbunselected');}}};TCI.FormElements.CheckBox.prototype.adjustView=function(cb,focus){if(this.state==='selected'){this.state='unselected';this.addClasses(cb,focus);return;}
this.state='selected';this.addClasses(cb,focus);return;};TCI.FormElements.CheckBox.prototype.adjustTarget=function(){if(this.state==='selected'){$('#'+this.id).attr('checked',true);$('#'+this.id).change();return;}
$('#'+this.id).attr('checked',false);$('#'+this.id).change();return;};TCI.FormElements.CheckBox.prototype.addListeners=function(){var that=this;$(this.el).click(function(){if(that.isDisabled){return;}
that.adjustView(this,true);that.adjustTarget();}).keydown(function(event){if(that.isDisabled){return;}
switch(event.keyCode){case 13:event.preventDefault();that.adjustView(this,true);that.adjustTarget();break;case 32:event.preventDefault();that.adjustView(this,true);that.adjustTarget();break;}}).focus(function(){if(that.isDisabled){return;}
that.addClasses(this,true);$(this).attr("hideFocus","hidefocus");}).blur(function(){if(that.isDisabled){return;}
that.addClasses(this,false);$('#'+that.id).blur();});$(this.el).parent().siblings('label').click(function(e){if(that.isDisabled){return;}
that.adjustView(that.el,false);that.adjustTarget();$('#'+that.id).blur();return false;});$('#'+this.id).click(function(e){if(that.isDisabled){return;}
that.adjustView(that.el,false);e.stopPropagation();});};TCI.FormElements.SelectBox=function(o){if(o){this.setProperties(o);this.init();}};TCI.FormElements.SelectBox.prototype={setProperties:function(o){this.id=o.id;this.manager=o.manager||false;this.parent=o.parent||'body';this.offsetTop=o.offsetTop||24;this.offsetLeft=o.offsetLeft||0;this.inputClass=o.inputClass||"selectbox";this.containerClass=o.containerClass||"selectbox-wrapper";this.hoverClass=o.hoverClass||"selected";this.$select=$('#'+this.id);this.$container;this.$input;this.$handle;this.width;this.active=-1;},init:function(){this.$container=this.setupContainer();this.$container.css('z-index','999999');this.$input=this.setInput();this.$handle=this.setUpHandle();this.$select.hide().before(this.$input);this.$select.before(this.$handle);$(this.parent).append(this.$container);this.setPosition();this.$container.append(this.getSelectOptions()).hide();this.setContainerWidth();this.setInputWidth();this.setEnabled();this.initListeners();},initListeners:function(){var that=this;$('#'+this.$container.attr('id')+' li').live('click',function(event){that.hideContainer();$('#'+that.$container.attr('id')+' li').removeClass(that.hoverClass);$(this).addClass(that.hoverClass);that.setCurrent(this);event.stopPropagation();});$('#'+this.$container.attr('id')+' li').live('hover',function(event){$('#'+that.$container.attr('id')+' li').removeClass('keyHover');});this.$handle.click(function(e){that.setEnabled();e.stopPropagation();if(that.$container.is(':visible')){that.hideContainer();return;}
that.hideAll();if(that.isEnabled()){that.showContainer();that.$input.focus();}});this.$select.click(function(e,val,label){that.setSelected(val,label);});this.$input.click(function(e){that.hideAll();that.setEnabled();if(that.isEnabled()){that.showContainer();}
e.stopPropagation();}).focus(function(){if(that.$container.not(':visible')){that.inFocus=true;}}).keydown(function(event){that.setEnabled();if(that.isEnabled()){switch(event.keyCode){case 38:that.moveSelect(-1);event.preventDefault();break;case 40:that.showContainer();that.moveSelect(1);event.preventDefault();break;case 9:that.hideContainer();that.$select.blur();break;case 27:that.hideContainer();break;case 13:event.preventDefault();that.hideContainer();that.setCurrent(-1);return false;break;}}});$(document).click(function(){that.hideAll();});$(window).resize(function(){if(!that.$container.is(':visible')){return;}
that.setPosition();});},hideAll:function(){$('.selectbox-wrapper').hide();$('.handle').removeClass('opened');},hideContainer:function(){this.$input.removeClass('touched');this.$handle.removeClass('opened');this.$container.hide();},moveSelect:function(step){var lis=$('#'+this.$container.attr('id')+' li');if(!lis)return;this.active+=step;if(this.active<0){this.active=0;}
else if(this.active>=lis.size()){this.active=lis.size()-1;}
lis.removeClass('keyHover');$(lis[this.active]).addClass('keyHover');},showContainer:function(){this.$handle.addClass('opened');this.$input.addClass('touched');this.initWidth();this.setPosition();this.$container.show();},getOrientation:function(){var vpH=$(window).height();if(this.$container.height()>this.$input.offset().top){return'Below';}
return(((this.top-$(document).scrollTop())+this.$container.height())<vpH)?'Below':'Above';},setPosition:function(){this.top=this.$input.offset().top+this.offsetTop;this.left=this.$input.offset().left+this.offsetLeft;this['setPositionAs'+this.getOrientation()]();this.$container.css({left:this.left,top:this.top});},setPositionAsAbove:function(){this.$container.children('ul').css('margin-top',0);this.top-=(this.$container.height()+this.offsetTop);},setPositionAsBelow:function(){this.$container.children('ul').css('margin-top',-1);},setEnabled:function(){if(!this.isEnabled()){this.$input.attr('disabled','disabled').addClass('disabled');this.$handle.addClass('disabled');}
else{this.$input.removeAttr('disabled').removeClass('disabled');this.$handle.removeClass('disabled');}},setSelected:function(val,label){this.$select.val(val);this.$input.val(label);},isEnabled:function(){return this.$select.attr('disabled')==true?false:true;},setInputWidth:function(){var cssWidth=this.$select.css('width');this.width==0?this.$input.width(cssWidth):this.$input.width(this.width);},setContainerWidth:function(){this.width=this.$select.width();this.$container.width(this.width);},initWidth:function(){this.$container.width(this.$input.width()+6);},setInput:function(){var input=document.createElement("input");var $inpt=$(input);$inpt.attr("id",this.id+"_input");$inpt.attr("type","text");$inpt.addClass(this.inputClass);$inpt.attr("autocomplete","off");$inpt.attr("readonly","readonly");$inpt.attr("tabIndex",this.$select.attr("tabindex"));return $inpt;},getSelectOptions:function(){var that=this;var select_options=new Array();var ul=document.createElement('ul');$(ul).addClass(this.$select.attr('class'));$(ul).attr('id',this.id+'_list');this.$select.children('option').each(function(){var li=document.createElement('li');li.setAttribute('id',$(this).val());li.innerHTML=$(this).html();if($(this).is(':selected')){that.$input.val($(this).html());$(li).addClass(that.hoverClass);}
ul.appendChild(li);});return ul;},setupContainer:function(){var container=document.createElement("div");$contr=$(container);$contr.attr('id',this.id+'_container');$contr.addClass(this.containerClass);return $contr;},setUpHandle:function(){var hdle=document.createElement('span');$(hdle).addClass('handle');return $(hdle);},setCurrent:function(element,silent){var li=element!=-1?element:$('#'+this.$container.attr('id')+' li.keyHover');var el=$(li).attr('id');var oldIndex=this.$select.children('option:selected').index();this.$select.val(el);this.$input.val($(li).text());$('#'+this.$container.attr('id')+' li').removeClass('keyHover');$('#'+this.$container.attr('id')+' li').removeClass('selected');$(li).addClass('selected');this.$select.blur();if(this.hasChanged(li,oldIndex)&&!silent){this.$select.change();}
return true;},setCurrentByOptionId:function(id){var li=$('#'+this.$container.attr('id')+' li#'+id);this.setCurrent(li,true);},setCurrentToDefault:function(){var self=this;$('#'+this.$container.attr('id')+' li').each(function(){if($(this).attr('id')==''){self.setCurrent($(this),true);}});},hasChanged:function(li,oldIndex){return $(li).index()!=oldIndex?true:false;},unbind:function(){this.$container.unbind('mouseover').unbind('mouseout').unbind('click');this.$handle.unbind('click');this.$input.unbind('click').unbind('focus').unbind('keydown');this.$select.unbind('click');$('#'+this.$container.attr('id')+' li').die();},destroy:function(){this.$input.remove();this.$container.remove();this.$handle.remove();this.unbind();this.manager?this.manager.deleteSelectBox(this.$select.id):0;}};TCI.FormElements.TextArea=function(o){this.numberOfTimesReturnPressed=0;this.el=o.el;this.maxCharacters=o.maxCharacters||300;this.adjustedMaxCharacters=this.maxCharacters;this.numCharsPerLine=o.numCharsPerLine||20;this.adjustLabel();this.initListeners();};TCI.FormElements.TextArea.prototype={adjustLabel:function()
{$(this.el).parent().parent().parent().find('label[for=cr_cd_message] .char_limit').html(this.maxCharacters);},initListeners:function()
{var that=this;$(this.el).keydown(function(e)
{if(e.keyCode==13&&$(this).val().length>2)
{var pos=$(this).getCaretPosition();var start=(pos<2)?0:pos-2;var end=(pos>$(this).val().length-2)?$(this).val().length:pos+2;var newLines=$(this).val().substring(start,end).match(/\n{2,}/g);if(!!newLines&&newLines.length>0){e.stopPropagation();return false;}}
if(TCI.Utils.isCharPressed(e)&&$(this).val().length>=that.maxCharacters)
{e.stopPropagation();if($(this).val().length>that.maxCharacters){$(this).val($(this).val().substring(0,that.maxCharacters));$(this).get(0).scrollTop=99999;}
return false;}});$(this.el).bind('paste',function(e)
{var self=$(this);setTimeout(function(){if(self.val().length>that.maxCharacters){self.val(self.val().substring(0,that.maxCharacters));self.get(0).scrollTop=99999;}},100);});}};TCI.serviceForm.lockForm=function()
{if(!TCI.serviceForm.mask)
{var msk=TCI.serviceForm.mask=new TCI.Core.Mask({name:'form',z_index:9999998});TCI.serviceForm.spinner=new TCI.LoadSpinner({container:'#form_mask',text:TCI.localize.getLabel('wait_label'),z_index:9999999});}
TCI.serviceForm.spinner.show();TCI.serviceForm.mask.show();};TCI.serviceForm.unlockForm=function()
{if(!!TCI.serviceForm.spinner){TCI.serviceForm.spinner.hide();}
if(!!TCI.serviceForm.mask){TCI.serviceForm.mask.hide();}};TCI.serviceForm.applyProvinceToPostalValidation=function(provinceField,postalField,message){TCI.Log.debug('applyProvinceToPostalValidation on '+provinceField+', '+postalField);jQuery('#'+provinceField).bind('blur',{message:message,provinceField:provinceField,postalField:postalField},TCI.serviceForm.checkProvinceToPostal);jQuery('#'+postalField).bind('blur',{message:message,provinceField:provinceField,postalField:postalField},TCI.serviceForm.checkProvinceToPostal);};TCI.serviceForm.checkProvinceToPostal=function(event){if(TCI.serviceForm.doCheckProvinceToPostal(event.data.provinceField,event.data.postalField)){TCI.serviceForm.removeErrorStatus('#'+event.data.postalField,'error_province_postal');}else{TCI.serviceForm.applyErrorStatus('#'+event.data.postalField,'error_province_postal',event.data.message);}};TCI.serviceForm.doCheckProvinceToPostal=function(provinceField,postalField){var province=$('#'+provinceField).val();var postal=$('#'+postalField).val();if(province!=''&&postal!=''){var lookup=TCI.serviceForm.provinceToPostal[province];if(jQuery.inArray(postal.charAt(0).toLowerCase(),lookup)>-1){return true;}else{return false;}}else{return true;}};TCI.serviceForm.provinceToPostal={ab:["t"],bc:["v"],mb:["r"],nb:["e"],nl:["a"],nt:["x"],ns:["b"],nu:["x"],on:["k","l","m","n","p"],pe:["c"],qc:["g","h","j"],sk:["s"],yt:["y"]};TCI.serviceForm.applyValidateVIN=function(field,message){TCI.Log.debug('applyValidateVIN on '+field);jQuery('#'+field).bind('blur',{message:message,vin:field},TCI.serviceForm.validateVIN);jQuery('#'+field).attr('maxlength',17);}
TCI.serviceForm.validateVIN=function(event){if(TCI.serviceForm.isValidVIN($("#"+event.data.vin).val())){TCI.serviceForm.removeErrorStatus('#'+event.data.vin,'error_vin');}else{TCI.serviceForm.applyErrorStatus('#'+event.data.vin,'error_vin',event.data.message);}}
TCI.serviceForm.isValidVIN=function(vin){TCI.Log.debug('isValidVIN value: '+vin);if(vin.length===0){TCI.Log.debug('VIN len = 0');return true;}
if((vin.length!==17)||(vin.charAt(1)!=='T')||(vin.toUpperCase().indexOf('I')>-1)||(vin.toUpperCase().indexOf('O')>-1)||(vin.toUpperCase().indexOf('Q')>-1)){TCI.Log.debug('isValidVIN, failed basic validation');return false;}
TCI.Log.debug('Debug (13-17): '+vin.slice(12));if(vin.slice(12).match(/^\d{5}$/)===null){TCI.Log.debug('isValidVIN, failed digits 13-17 are not numeric');return false;}
var Const={VIN_MAX_LEN:17};var decoding={'A':1,'B':2,'C':3,'D':4,'E':5,'F':6,'G':7,'H':8,'J':1,'K':2,'L':3,'M':4,'N':5,'P':7,'R':9,'S':2,'T':3,'U':4,'V':5,'W':6,'X':7,'Y':8,'Z':9,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9,'0':0};var weights={1:8,2:7,3:6,4:5,5:4,6:3,7:2,8:10,9:0,10:9,11:8,12:7,13:6,14:5,15:4,16:3,17:2};var checkDigit=vin.charAt(8).toUpperCase();var checkSum=(checkDigit==='X')?10:parseInt(checkDigit);var transliteration=prod=[];var sum=0;for(i=0;i<Const.VIN_MAX_LEN;i+=1){transliteration[i]=decoding[vin.charAt(i)];prod[i]=transliteration[i]*weights[i+1];if(!isNaN(prod[i])){sum=sum+parseInt(prod[i]);}}
if(checkSum===sum%11){TCI.Log.debug('VIN is valid, checksum: '+(sum%11));return true;}else{TCI.Log.debug('VIN is INVALID, checksum: '+(sum%11));return false;}}
TCI.serviceForm.resetFields=function(fields){TCI.Log.debug('resetFields ');var parts="";var v;for(var i in fields){if((fields[i].type!=='hidden')&&fields[i].type!=='submit'){if(fields[i].hasOwnProperty('parts')){for(var p in fields[i].parts){$('#'+p).val('');v=$('#'+p).val();TCI.serviceForm.removeErrorStatus('#'+p,'error_required');}}else{if(fields[i].type==='checkbox'){$('#'+i).attr('checked',false);v=$('#'+i).attr('checked');}else{$('#'+i).val('');}
v=$('#'+i).val();TCI.serviceForm.removeErrorStatus('#'+i,'error_required');}
TCI.Log.debug("fields["+i+"]: "+i+" - "+fields[i].type+" value: "+v+" parts:"+parts);}}}
TCI.serviceForm.removeBrandPrefix=function(value){var prefixIndex=value.indexOf(TCI.localize.getLabel('brand_prefix'));return((prefixIndex!=-1)?value.slice(prefixIndex+4):value);};TCI.serviceForm.insertBrandPrefix=function(value){var prefix=TCI.localize.getLabel('brand_prefix');var prefixIndex=value.indexOf(prefix);return((prefixIndex===-1)?(prefix+value):value);};TCI.serviceForm.TabIndexer=(function(){var form;var shift=false;var $target;var setup=function(o){form=o.form;origin=o.origin;target=o.target;$origin=$(form+' '+origin);$target=$(form+' '+target);$target.attr('href','#');addListeners();};var addListeners=function(){$origin.keydown(function(event){switch(event.keyCode){case 9:if(!shift){event.preventDefault();$target.addClass('focussed').focus();$(this).blur();}
break;default:break;}});$target.blur(function(event){$(this).removeClass('focussed');})
$('body').keydown(function(event){event.keyCode==16?shift=true:0;}).keyup(function(event){event.keyCode==16?shift=false:0;});};return{init:function(o){setup(o);}};}());TCI.serviceForm.GeneralErrorHandler=(function(){var key;var errMap={'1000':{'postCode':'err_postCodeIncorrectNotCanadianError','generalError':'err_generalServiceError'},'1001':{'generalError':'err_generalServiceError'},'1002':{'generalError':'err_generalServiceError'}};var process=function(code,node){code=String(code);if(!errMap[code]){return'err_generalServiceError';}
key=node.split(".").pop();if(errMap[code][key]){return errMap[code][key];}
return errMap[code]['generalError'];};return{onError:function(code,node){return process(code,node);}};}());
