/* Metacafe Copyright - http://www.metacafe.com/ */
/* Files included: Validator.js ContactUs.js */

var ContactUsManager=new Class({initialize:function(combos){this.combos=combos;this.links=$ES('a','ContactUsLinks');this.divs=$ES('.ContactUsForm');this.confirmBoxes=$ES('.ConfirmationMessage');this.forms=$ES('.SubmitForm');this.links.each(function(el,i){el.addEvent('click',this.toggleForms.pass(i,this));},this);this.activeIndex=0;this.validators=[];this.buildValidators();$ES('a.ContactUsSubmit').addEvent('click',this.sendForm.bind(this));this.bindTabKeyPress();if(document.location.hash!=""&&document.location.hash!="#"){try{var i=document.location.hash.substr(1,document.location.hash.length).toInt();this.toggleForms(i);}catch(e){}}},toggleForms:function(i){this.divs[this.activeIndex].addClass('invisible');this.links[this.activeIndex].removeClass('Active');if(!this.confirmBoxes[this.activeIndex].hasClass('invisible'))
this.confirmBoxes[this.activeIndex].addClass('invisible');this.validators[this.activeIndex].reset();this.divs[i].removeClass('invisible');this.links[i].addClass('Active');if(!this.confirmBoxes[i].hasClass('invisible'))
this.confirmBoxes[i].addClass('invisible');if(!$E('.StatusBar',this.divs[i]).hasClass('invisible'))
$E('.StatusBar',this.divs[i]).addClass('invisible');this.activeIndex=i;},sendForm:function(e){var ev=new Event(e);ev.preventDefault();if(this.validators[this.activeIndex].validateForm()){var el=new Element(ev.target);var url=el.getProperty('href')||el.getParent().getProperty('href');new Ajax(url,{method:'post',onRequest:this.onFormRequest.bind(this),onSuccess:this.onFormResponse.bind(this),postBody:this.forms[this.activeIndex].toQueryString()}).request();}},onFormRequest:function(){$E('.StatusBar',this.divs[this.activeIndex]).toggleClass('invisible').setHTML('Sending Form. Please Wait');},onFormResponse:function(response){(function(){var res=Json.evaluate(response);if(res.responseValue.toInt()==1){this.divs[this.activeIndex].toggleClass('invisible');this.confirmBoxes[this.activeIndex].toggleClass('invisible');}else{$E('.StatusBar',this.divs[this.activeIndex]).setHTML(res.responseText);}}.bind(this)).delay(1500);},buildValidators:function(){var fields;var v;fields=[{el:$('SupportContactName'),format:'cleantext',options:{min:1}},{el:$('SupportContactEmail'),format:'email',options:{min:1}},{el:$('SupportContactMessage'),format:'text',options:{min:1}}];v=new Validator('SupportForm',fields);this.validators.push(v);fields=[{el:$('SalesContactName'),format:'cleantext',options:{min:1}},{el:$('SalesContactEmail'),format:'email',options:{min:1}},{el:$('SalesContactCompany'),format:'cleantext',options:{min:1}},{el:$('SalesContactMessage'),format:'cleantext',options:{min:1}}];v=new Validator('SalesForm',fields);this.validators.push(v);fields=[{el:$('PartnersContactName'),format:'cleantext',options:{min:1}},{el:$('PartnersContactEmail'),format:'email',options:{min:1}},{el:$('PartnersContactCompany'),format:'cleantext',options:{min:1}},{el:$('PartnersContactMessage'),format:'cleantext',options:{min:1}}];v=new Validator('PartnersForm',fields);this.validators.push(v);if($('WikiForm')){fields=[{el:$('WikiIssueType'),format:'select',options:{empty:''}},{el:$('WikiVideoLink'),format:'url',options:{required:false}},{el:$('WikiContactMessage'),format:'cleantext',options:{min:1}}];{v=new Validator('WikiForm',fields);this.validators.push(v);}}},bindTabKeyPress:function(){$ES('#ContactUsLinks a').addEvent('focus',function(e){this.fireEvent('click');});}});
var Validator=new Class({options:{invalidClassName:'Invalid',parentClassName:'FormRow',onSuccess:Class.empty,onfailure:Class.empty,validateOnKeyDown:false,validateOnFocus:false,validateOnBlur:false,preventSubmit:true,scrollToError:true},initialize:function(formID,fields,options){this.setOptions(options);this.form=$(formID);this.formID=formID;this.fields=this.mergeFields(fields);this.allErrors='';this.errorField=$E('.FormErrors',formID)||false;this.fields.each(function(el){this.initFieldEvents(el);}.bind(this));this.onSuccess=this.options.onSuccess;this.onFailure=this.options.onFailure;},initFieldEvents:function(el){var field=el.el;var p=el.el;while(!p.hasClass(this.options.parentClassName)){p=p.getParent();}
el.parent=p;switch(el.format){case'select':case'selectDate':if(this.options.validateOnFocus){field.addEvent('change',this.validateField.bindWithEvent(this,el));}
break;case'radio':if(this.options.validateOnFocus){if(!window.ie){field.addEvent('click',this.validateField.bindWithEvent(this,el));}else{field.addEvent('click',this.ieValidateWrap.bindWithEvent(this,el));}}
break;case'group':if(this.options.validateOnFocus){if(!window.ie)field.addEvent('click',this.validateField.bindWithEvent(this,el));else field.addEvent('click',this.ieValidateWrap.bindWithEvent(this,el));}
break;default:if(this.options.validateOnKeyDown){field.addEvent('keyup',this.validateField.bindWithEvent(this,el));}
if(this.options.validateOnFocus){field.addEvent('focus',this.validateField.bindWithEvent(this,el));}
if(this.options.validateOnBlur){field.addEvent('blur',this.validateField.bindWithEvent(this,el));}
break;}},mergeFields:function(h){var tmp=[];var i=0;h.each(function(el){var e=el.el;if(!el.options){el.options={};}
if(!e.each){tmp[i]={el:el.el,format:el.format,options:el.options};i++;}else{var c='Group'+i;e.each(function(els){e.addClass(c);tmp[i]={el:els,format:el.format,options:el.options};i++;});}});return tmp;},addField:function(field){this.initFieldEvents(field);this.fields.push(field);},removeField:function(field){this.fields.remove(field);},validateField:function(e,v){try{var el=v.el;var value=el.value.trim();var valid=false;var tmp='';var req=v.options.required===undefined||(v.options.requires&&v.options.requires.value!='')?true:v.options.required;switch(v.format){case'select':var empty=v.options.empty?v.options.empty:'';if(value!=empty)valid=true;break;case'radio':$ES('input[name="'+el.getProperty('name')+'"]',this.form).each(function(el){if(el.checked)valid=true;}.bind(this));break;case'group':var selectCount=0;$ES('.'+el.className.replace(/(Over|Down)/gi,''),this.form).each(function(el){if(el.checked&&!el.disabled){valid=true;selectCount+=1;}}.bind(this));if(!req&&selectCount==0){valid=!req;}else{valid=v.options.maxSelect>=selectCount;}
break;case'selectDate':var els=$ES('.'+el.className);var date=new Date(els[v.options.yPos].value,els[v.options.mPos].value-1,els[v.options.dPos].value,0,0,0,0);var diff=date-v.options.minDate;valid=isNaN(diff)||diff>0?false:true;break;case'confirm':if(value==$(v.options.confirmWith).value)valid=true;break;case'checkbox':if(el.checked)valid=true;break;case'comparison':if(value.length<v.options.min)break;value=value.trim();v.options.compareWith=v.options.compareWith.trim();var val1=value.substr(0,1).toUpperCase()+value.substr(1,value.length);var val2=v.options.compareWith.substr(0,1).toUpperCase()+v.options.compareWith.substr(1,v.options.compareWith.length);valid=val1==val2;if(v.options.invert)valid=!valid;break;default:var exp='';switch(v.format){case'text':exp=/^[a-z0-9\W\._%-\{\}\[\]\|\#]+$/i;break;case'cleantext':exp=/^(\s*[^<>\{\}\[\]\|\s]+)(\s+[^<>\{\}\[\]\|\s]+\s*)*$/i;break;case'tags':exp=/^(\s*[^<>\{\}\[\]\|\,\s]{1,64})(\s+[^<>\{\}\[\]\|\,\s]{1,64}\s*)*$/i;break;case'tags_comma':exp=/^([^<>\{\}\[\]\|\,]{1,64},?)(,\s?[^<>\{\}\[\]\|\,]{1,64},?)*$/i;break;case'alphanum':exp=/^[a-zA-Z0-9]+$/i;break;case'email':exp=/^[a-z0-9\.\_%-]+@[a-z0-9\.\-]+\.[a-z]{2,4}$/i;break;case'nickname':exp=/^([^\[\]\{\}\<\>\|\:\?\/\\\#]*)$/i;break;case'number':exp=/^[\-\+]?\d*\.?\d+$/;break;case'phone':exp=/^[\d\s \(\)\.\-\+]+$/;break;case'url':exp=/^(([\w]+:)?\/\/)?(([\d\w]|%[a-fA-f\d]{2,2})+(:([\d\w]|%[a-fA-f\d]{2,2})+)?@)?([\d\w][\-\d\w]{0,253}\.)+[\w]{2,4}(:[\d]+)?(\/([\-+_~.\d\w]|%[a-fA-f\d]{2,2})*)*(\?(&?([\-+_~.\d\w]|%[a-fA-f\d]{2,2})=?)*)?(#([\-+_~.\d\w]|%[a-fA-f\d]{2,2})*)?$/;break;case'expression':exp=v.options.exp;break;}
var min=v.options.min?v.options.min:2;if((exp.test(value)&&value.length>=min)||(!req&&value.length==0))valid=true;if(v.options.max){if(value.length>v.options.max)el.value=el.value.substr(0,v.options.max);}
break;}
if(valid){v.parent.removeClass(this.options.invalidClassName);}else{v.parent.addClass(this.options.invalidClassName);}}catch(err){}
return valid;},ieValidateWrap:function(e,v){this.validateField(e,v);return true;},validateForm:function(e){if(e){new Event(e).preventDefault();}
var valid=true;this.allErrors='';this.fields.each(function(el){if(!this.validateField(null,el))valid=false;}.bind(this));if(!valid){this.fireEvent('onFailure');if(this.options.scrollToError){window.scrollTo(0,$E('.'+this.options.invalidClassName).getCoordinates().top-50);}
if(this.errorField){this.errorField.addClass(this.options.invalidClassName).setHTML('Invalid information entered. Please review and correct the marked errors below');}
return false;}else{this.fireEvent('onSubmit');if(this.errorField){this.errorField.removeClass(this.options.invalidClassName).setHTML('');}
if(!this.options.ajaxMode){return true;}else{return false;}}},reset:function(){this.form.reset();this.resetErrors();},resetErrors:function(){$ES('.'+this.options.invalidClassName).removeClass(this.options.invalidClassName);if(this.errorField)this.errorField.removeClass(this.options.invalidClassName);this.allErrors='';},getFieldById:function(id){j=null;this.fields.each(function(el,i){if(el.el.getProperty('id')==id){j=i;}});if(j!=null){return this.fields[j];}else{return false;}}});Validator.implement(new Options);Validator.implement(new Events);