
var digits="0123456789";var lowercaseLetters="abcdefghijklmnopqrstuvwxyz";var uppercaseLetters="ABCDEFGHIJKLMNOPQRSTUVWXYZ";var blanks=" \t\n\r";var decimalPointDelimiter=".";var phoneNumberDelimiters="()- ";var validUSPhoneChars=digits+phoneNumberDelimiters;var digitsInUSPhoneNumber=10;var ZIPCodeDelimiters="-";var ZIPCodeDelimeter="-";var digitsInZIPCode1=5;var digitsInZIPCode2=9;var USStateCodeDelimiter="|";var USStateCodes="AL|AK|AS|AZ|AR|CA|CO|CT|DE|DC|FM|FL|GA|GU|HI|ID|IL|IN|IA|KS|KY|LA|ME|MH|MD|MA|MI|MN|MS|MO|MT|NE|NV|NH|NJ|NM|NY|NC|ND|MP|OH|OK|OR|PW|PA|PR|RI|SC|SD|TN|TX|UT|VT|VI|VA|WA|WV|WI|WY|AE|AA|AE|AE|AP|al|ak|as|az|ar|ca|co|ct|de|dc|fm|fl|ga|gu|hi|id|il|in|ia|ks|ky|la|me|mh|md|ma|mi|mn|ms|mo|mt|ne|nv|nh|nj|nm|ny|nc|nd|mp|oh|ok|or|pw|pa|pr|ri|sc|sd|tn|tx|ut|vt|vi|va|wa|wv|wi|wy|ae|aa|ae|ae|ap";function isEmpty(s)
{return((s==null)||(s.length==0));}
function isBlank(s)
{var i;if(isEmpty(s))
return true;for(i=0;i<s.length;i++)
{var c=s.charAt(i);if(blanks.indexOf(c)==-1)
return false;}
return true;}
function daysInFebruary(year){return(((year%4==0)&&((!(year%100==0))||(year%400==0)))?29:28);}
function DaysArray(n){for(var i=1;i<=n;i++){this[i]=31
if(i==4||i==6||i==9||i==11){this[i]=30}
if(i==2){this[i]=29}}
return this}
function isDate(dtStr,dtCh,minYear,maxYear,dateFormat){var daysInMonth=DaysArray(12);var pos1=dtStr.indexOf(dtCh);var pos2=dtStr.indexOf(dtCh,pos1+1);if(dateFormat=="mdy"){var strMonth=dtStr.substring(0,pos1);var strDay=dtStr.substring(pos1+1,pos2);var strYear=dtStr.substring(pos2+1);}
if(dateFormat=="ymd"){var strYear=dtStr.substring(0,pos1);var strMonth=dtStr.substring(pos1+1,pos2);var strDay=dtStr.substring(pos2+1);}
if(dateFormat=="dmy"){var strDay=dtStr.substring(0,pos1);var strMonth=dtStr.substring(pos1+1,pos2);var strYear=dtStr.substring(pos2+1);}
strYr=strYear
if(strDay.charAt(0)=="0"&&strDay.length>1)strDay=strDay.substring(1);if(strMonth.charAt(0)=="0"&&strMonth.length>1)strMonth=strMonth.substring(1);for(var i=1;i<=3;i++){if(strYr.charAt(0)=="0"&&strYr.length>1)strYr=strYr.substring(1);}
month=parseInt(strMonth);day=parseInt(strDay);year=parseInt(strYr);if(pos1==-1||pos2==-1){return false;}
if(strMonth.length<1||month<1||month>12){return false;}
if(strDay.length<1||day<1||day>31||(month==2&&day>daysInFebruary(year))||day>daysInMonth[month]){return false;}
if(strYear.length!=4||year==0||year<minYear||year>maxYear){return false;}
if(dtStr.indexOf(dtCh,pos2+1)!=-1||isInteger(stripCharsInBag(dtStr,dtCh))==false){return false;}
return true;}
function isNotDate(str){return!isDate(str,'-',1900,3000,'ymd');}
function stripCharsInBag(s,bag)
{var i;var returnString="";for(i=0;i<s.length;i++)
{var c=s.charAt(i);if(bag.indexOf(c)==-1)
returnString+=c;}
return returnString;}
function stripCharsNotInBag(s,bag)
{var i;var returnString="";for(i=0;i<s.length;i++)
{var c=s.charAt(i);if(bag.indexOf(c)!=-1)
returnString+=c;}
return returnString;}
function stripBlanks(s)
{return stripCharsInBag(s,blanks)}
function stripLeadingBlanks(s)
{var i=0;while((i<s.length)&&(blanks.indexOf(s.charAt(i))!=-1))
i++;return s.substring(i,s.length);}
function stripTrailingBlanks(s)
{var i=s.length-1;while((i>=0)&&(blanks.indexOf(s.charAt(i))!=-1))
i--;return s.substring(0,i+1);}
function stripLeadingTrailingBlanks(s)
{s=stripLeadingBlanks(s);s=stripTrailingBlanks(s);return s;}
function isLetter(c)
{return(((c>="a")&&(c<="z"))||((c>="A")&&(c<="Z")));}
function isDigit(c)
{return((c>="0")&&(c<="9"));}
function isInteger(s)
{if(isBlank(s))
return false;if((s.charAt(0)=="-")||(s.charAt(0)=="+"))
var i=1;else
var i=0;for(i;i<s.length;i++)
{var c=s.charAt(i);if(!isDigit(c))
return false;}
return true;}
function isNotInteger(s){return!isInteger(s);};function isFloat(s)
{var seenDecimalPoint=false;if(isBlank(s))
return false;if(s==decimalPointDelimiter)
return false;if((s.charAt(0)=="-")||(s.charAt(0)=="+"))
var i=1;else
var i=0;for(i;i<s.length;i++)
{var c=s.charAt(i);if((c==decimalPointDelimiter)&&!seenDecimalPoint)
seenDecimalPoint=true;else if(!isDigit(c))
return false;}
return seenDecimalPoint;}
function isNotFloat(s){return!isFloat(s);}
function isAlphabetic(s)
{var i;if(isBlank(s))
return false;for(i=0;i<s.length;i++)
{var c=s.charAt(i);if(!isLetter(c))
return false;}
return true;}
function isAlphanumeric(s)
{var i;if(isBlank(s))
return false;for(i=0;i<s.length;i++)
{var c=s.charAt(i);if(!(isLetter(c)||isDigit(c)||isSpace(c)))
return false;}
return true;}
function isNotAlphanumeric(s){return!isAlphanumeric(s);}
function reformatString(targetString)
{var arg;var sPos=0;var resultString="";for(var i=1;i<reformatString.arguments.length;i++)
{arg=reformatString.arguments[i];if(i%2==1)
{resultString+=arg;}
else
{resultString+=targetString.substring(sPos,sPos+arg);sPos+=arg;}}
return resultString;}
function isUSPhoneNumber(s)
{if(isBlank(s))
return false;s=stripCharsNotInBag(s,digits);return(isInteger(s)&&(s.length==digitsInUSPhoneNumber));}
function isNotUSPhoneNumber(s){return!isUSPhoneNumber(s);};function isUSPhoneNumberAdvanced(s)
{if(isBlank(s))
return"10 digits";if(s.charAt(3)!="-"||s.charAt(7)!="-"){return"Please include dashes ex. ###-###-####";}
if(s.indexOf("555")==0||s.indexOf("555")==4){return"555 is not a valid area code or phone prefix";}else if(s.indexOf("1")==0||s.indexOf("0")==0){return"Area code cannot start with a 0 or 1";}
s=stripCharsNotInBag(s,digits);if(!(isInteger(s)&&(s.length==digitsInUSPhoneNumber))){return"10 digits";}else{return true;}}
function isZIPCode(s)
{if(isBlank(s))
return false;s=stripLeadingTrailingBlanks(s);if((isInteger(s))&&(s.indexOf("-")==-1)&&(s.length==digitsInZIPCode1))
return true;if(s.indexOf("-")!=5)
return false;s=stripCharsNotInBag(s,digits);if(s.length==digitsInZIPCode2)
return true;else
return false;}
function isPostalCode(s)
{if(isBlank(s))
return false;s=stripLeadingTrailingBlanks(s);s=stripCharsInBag(s,blanks);if(s.length<6)
return false;if(!isLetter(s.charAt(0)))
return false;if(!isInteger(s.charAt(1)))
return false;if(!isLetter(s.charAt(2)))
return false;if(!isInteger(s.charAt(3)))
return false;if(!isLetter(s.charAt(4)))
return false;if(!isInteger(s.charAt(5)))
return false;return true;}
function isSpace(c){if(c==' ')return true;else return false;}
function isStateCode(s)
{if(isBlank(s))
return false;return((USStateCodes.indexOf(s)!=-1)&&(s.indexOf(USStateCodeDelimiter)==-1))}
function isEmail(s)
{if(isBlank(s))
return false;var i=1;var sLength=s.length;while((i<sLength)&&(s.charAt(i)!="@"))
i++
if((i>=sLength)||(s.charAt(i)!="@"))
return false;else
i+=2;while((i<sLength)&&(s.charAt(i)!="."))
i++
if((i>=sLength-1)||(s.charAt(i)!="."))
return false;else
return true;}
function isIntegerInRange(s,a,b)
{if(isBlank(s))
return false;if(!isInteger(s))
return false;var num=parseInt(s);return((num>=a)&&(num<=b));}
function getCheckedRadioButton(radioSet)
{for(var i=0;i<radioSet.length;i++)
if(radioSet[i].checked)
return i;return-1;}
function getCheckedCheckboxes(checkboxSet){var arr=new Array();var j=0;$(checkboxSet+' :checkbox').each(function(index,element){if(element.checked)
arr[j++]=index;});if(arr.length>0)
return arr;else
return-1;}
function getCheckedSelectOptions(select)
{var arr=new Array();for(var i=0,j=0;i<select.length;i++)
if(select.options[i].selected)
arr[j++]=i;if(arr.length>0)
return arr;else
return-1;}
function isNotNumber(s)
{return isNotFloat(s)&&isNotInteger(s);}
function isNoRadioSelected(radioSet)
{return getCheckedRadioButton(radioSet)==-1;}
function isNoCheckboxesSelected(checkboxSet)
{return getCheckedCheckboxes(checkboxSet)==-1;}
function changeInputType(oldObject,oType){var newObject=document.createElement('input');newObject.type=oType;if(oldObject.value)newObject.value=oldObject.value;if(oldObject.size)newObject.size=oldObject.size;if(oldObject.name)newObject.name=oldObject.name;if(oldObject.id)newObject.id=oldObject.id;if(oldObject.className)newObject.className=oldObject.className;oldObject.parentNode.replaceChild(newObject,oldObject);return newObject;}
function signupHandleFieldFocus(field,default_value){if(field.value==default_value){field.value="";}
if(field.id=='user_password_confirmation'||field.id=='user_password'){if(field.type!='password'){field=changeInputType(field,'password');setTimeout("$('#"+field.id+"').focus();",0);}}}
function signupHandleFieldBlur(field,default_value){if(field.value==''){field.value=default_value;}
if((field.id=='#user_password_confirmation'||field.id=='#user_password')&&field.val()==default_value){if(field.type!='text'){field=changeInputType(field,'text');setTimeout("$('#"+field.id+"').focus();",0);}}}
nameAvailable='';simpleCaptchaValid='';function validate_signup_form(action){var all_good='';if(action=="panel_1"){validator=new Panel1();all_good=validator.validate();if(all_good){$('#panel_1').hide();$('#panel_2').show();}else{return false;}}else if(action=="panel_2"){validator=new Panel2();all_good=validator.validate();if(all_good){$(validator.errorContainer()).addClass('signup_working');$(validator.errorContainer()).html('Creating your account....  <blink>please wait...</blink>');$('#new_user_form').submit();return true;}else{return false;}}else if(action=="previous"){$('#panel_2').hide();$('#panel_1').show();}};var Validator=$.klass({errorMessage:function(err_key){error_messages=new Array();error_messages['email']='This is not a valid email address.';error_messages['email_confirm']='Email confirmation does not match entry.';error_messages['email_taken']='This email address is already registered.';error_messages['password']='Please enter a password.';error_messages['password_length']='Password must be 6 characters or more.';error_messages['password_confirm']='Password confirmation does not match entry.';error_messages['username_too_short']='Screen name should be at least 3 characters.';error_messages['username_too_long']='Screen name should not be more than 20 characters.';error_messages['username_taken']='Screen name already taken.';error_messages['username_invalid']='Screen name should only contain characters and numbers.';error_messages['first_name']='Please enter your name.';error_messages['gender']='Please select a gender.';error_messages['orientation']='Please select "Looking for a".';error_messages['relationship_status']='Please select your current relationship status.';error_messages['city']='Please select your city.';error_messages['interests']='Please select your interests.';error_messages['birthday']='Please select your birth date.';error_messages['country']='Please select your country.';error_messages['tos']='Please agree to the Terms of Service.';error_messages['captcha']='Please enter the text from the image.';return error_messages[err_key];},errorContainer:function(){return"#errors1";},doErrorEffect:function(element_id){$(element_id).addClass('signup_label_err');},doError:function(err,label_element){$(this.errorContainer()).addClass('signup_errors');$(this.errorContainer()).removeClass('signup_working');$(this.errorContainer()).removeClass('signup_errors_off');$(this.errorContainer()).show();$(this.errorContainer()).html(this.errorMessage(err));this.doErrorEffect(label_element);},doWorking:function(){$(this.errorContainer()).addClass('signup_working');$(this.errorContainer()).html('Working, please be patient....');},stopWorking:function(){$(this.errorContainer()).addClass('signup_errors_off');$(this.errorContainer()).html('');},clearError:function(element_id){$(element_id).addClass('signup_label');$(this.errorContainer()).addClass('signup_errors_off');$(element_id).removeClass('signup_label_err');$(this.errorContainer()).html('');}});var Panel1=$.klass(Validator,{errorContainer:function($super){return"#errors1";},validateScreenName:function(){screenName=$('#user_login').val();if(screenName.search(/^\w+$/)==-1)
return false;else
return true;},validate:function(){x=checkEmailAddress('#user_email');y=checkEquality('#email_confirmation','#user_email');z=validateLength('#user_password',6);a=checkEquality('#user_password_confirmation','#user_password');b=validateLength('#user_first_name',1);c=validateLength('#user_login',3);d=validateMaxLength('#user_login',20);d2=this.validateScreenName();e=$('#user_login').val()!='Enter Screen Name';f=$('#user_first_name').val()!='Enter your first name';g=$('#user_password').val()!='default_password';if(!x){this.doError('email','#user_email_label');$('#email_available').hide();return;}
if(!y){this.doError('email_confirm','#user_email_label');$('#email_available').hide();return;}
if(x&&y){this.doWorking();$.ajax({url:'/javascripts/check_email_availability',data:{email:$('#user_email').val()},async:false,success:function(data,textStatus){emailAvailable=data;}});}
this.stopWorking();if(emailAvailable!='true'){this.doError('email_taken','#user_email_label');$('#email_available').hide();return;}else{$('#email_available').show();}
this.clearError('#user_email_label');if(!g){this.doError('password','#user_password_label');return;}
if(!z){this.doError('password_length','#user_password_label');return;}
if(!a){this.doError('password_confirm','#user_password_label');return;}
this.clearError('#user_password_label');if(!c||!e){this.doError('username_too_short','#user_login_label');return;}
if(!d){this.doError('username_too_long','#user_login_label');return;}
if(!d2){this.doError('username_invalid','#user_login_label');return;}
if(!c||!d||!d2){$('#username_not_available').hide();}
if(c&&d&&d2&&e){this.doWorking();$.ajax({url:'/javascripts/check_username_availability',data:{username:$('#user_login').val()},async:false,success:function(data,textStatus){nameAvailable=data;}});}
this.stopWorking();if(nameAvailable!='true'){$('#username_available').hide();this.doError('username_taken','#user_login_label');return;}else{$('#username_available').show();}
this.clearError('#user_login_label');if(!b||!f){this.doError('first_name','#user_first_name_label');return;}else{this.clearError('#user_first_name_label');}
if(x&&y&&z&&a&&b&&c&&d&&d2&&e&&f&&g&&nameAvailable&&emailAvailable){return true;}else{return false;};}});var Panel2=$.klass(Validator,{errorContainer:function($super){return"#errors2";},validate:function(){x=!isEmpty($('#user_gender').val())&&$('#user_gender').val()!="Click to select...";y=!isEmpty($('#orientation').val())&&$('#orientation').val()!="Click to select...";a=!isEmpty($('#city').val())&&!isEmpty($('#selected_city_id'));b=getCheckedCheckboxes('#interested_in')!=-1;c=$('#tos:checked').length==1;d=$('#user_birthday_3i').val()!=''&&$('#user_birthday_2i').val()!=''&&$('#user_birthday_1i').val()!='';e=$('#country_code').val()!='';if(!x){this.doError('gender','#user_gender_label');return;}
this.clearError('#user_gender_label');if(!y){this.doError('orientation','#user_orientation_label');return;}
this.clearError('#user_orientation_label');if(!z){this.doError('relationship_status','#relationship_status_label');return;}
this.clearError('#relationship_status_label');if(!b){this.doError('interests','#interested_in_label');return;}
this.clearError('#interested_in_label');if(!d){this.doError('birthday','#birthday_label');return;}
this.clearError('#birthday_label');if(!e){this.doError('country','#country_code_label');return;}
this.clearError('#country_code_label');if(!a){this.doError('city','#city_label');return;}
this.clearError('#city_label');if(!c){this.doError('tos','#the_tos');return;}
if(x&&y&&z&&a&&b&&c&&d&&e){$.ajax({url:'/javascripts/check_simple_captcha',data:{captcha:$('#captcha').val()},async:false,success:function(data,textStatus){simpleCaptchaValid=data;}});if(simpleCaptchaValid!='true'){this.doError('captcha','#simple_captcha_label');return;}else{this.clearError('#simple_captcha_label');}}
if(x&&y&&z&&a&&b&&c&&d&&e&&simpleCaptchaValid){return true;}else{return false;}}});