function str_replace(search, replace, subject) {
    return subject.split(search).join(replace);
}
function erase_all_symbol(subject){
    return subject.replace(/[^0-9]/g, "");
}
function convert_phone(phone){
    var A = "";
//    if((A = phone.replace(/([0-9]{3})([0-9]{3})([0-9]{3})([0-9]{4})/, '$1-$2-$3-$4')) == phone)
//    if((A = phone.replace(/([0-9]{2})([0-9]{3})([0-9]{3})([0-9]{4})/, '$1-$2-$3-$4')) == phone)
    if((A = phone.replace(/([0-9]{1})([0-9]{3})([0-9]{3})([0-9]{4})/, '$1-$2-$3-$4')) == phone)
      A = phone.replace(/([0-9]{3})([0-9]{3})([0-9]{4})/, '$1-$2-$3');
    return A;
}
function isBlank(A){return A.replace(/\s+/g,"").length==0}
(function(B){
	function A(){
		jQuery("#_outzip").isZIPField("_out", jQuery("#_outcity"), jQuery("#_outstate"));
		jQuery("#_inzip").isZIPField("_in", jQuery("#_incity"), jQuery("#_instate"));
		jQuery("#zipcode").isZIPField("", jQuery("#city"), null, jQuery("#state"));
		jQuery("#zipcode1").isZIPField("", jQuery("#city1"), null, jQuery("#state1"));

		//var Y=jQuery("#your_company_info-form");
		var Y=jQuery("#signup-form");
		Y.find("#_contact_name").isSignupFormField({
			validateWith:function(G){
				return isBlank(G)?_("Should be a contact name"):true
			}
		});
		Y.find("#_business_name").isSignupFormField({
			validateWith:function(G){
				return isBlank(G)?_("Should be a Business name"):true
			}
		});
		Y.find("#_business_phone").isSignupFormField({
			allowInput:/[0-9()\-+\s\x25\x27\x24\x23\x2E]/,
			validateWith:function(G){
				test = erase_all_symbol(G);
				if(isBlank(test)) return _("Should be a phone number");
                                if(test.length>11) return _("something looks wrong.");
                                if(test.length<10) return _("something looks wrong.");
				document.getElementById('_business_phone').value = convert_phone(test);
				return true
			}
		});
		Y.find("#_fax").isSignupFormField({
			allowInput:/[0-9()\-+\s\x25\x27\x24\x23\x2E]/,
			validateWith:function(G){
				test = erase_all_symbol(G);
				if(test.length>11) return _("something looks wrong.");
				if(test.length<10) return _("something looks wrong.");
				document.getElementById('_fax').value = convert_phone(test);
				return true
			}
		});
		Y.find("#_website").isSignupFormField({
			validateWith:function(G){
				return isBlank(G)?_("Should be a website"):true
			}
		});
		Y.find("#_sales").isSignupFormField({
			allowInput:/[0-9()\-+\s\x25\x27\x24\x23\x2E]/,
			validateWith:function(G){
				test = erase_all_symbol(G);
				if(test.length>11) return _("something looks wrong.");
				if(test.length<10) return _("something looks wrong.");
				document.getElementById('_sales').value = convert_phone(test);
				return true
			}
		});
		Y.find("#_customer_service").isSignupFormField({
			allowInput:/[0-9()\-+\s\x25\x27\x24\x23\x2E]/,
			validateWith:function(G){
				test = erase_all_symbol(G);
				if(test.length>11) return _("something looks wrong.");
				if(test.length<10) return _("something looks wrong.");
				document.getElementById('_customer_service').value = convert_phone(test);
				return true
			}
		});
		Y.find("#_street").isSignupFormField({
			validateWith:function(G){
				return isBlank(G)?_("Should be a street"):true
			}
		});
		Y.find("#_city").isSignupFormField({
			validateWith:function(G){
				return isBlank(G)?_("Should be a city"):true
			}
		}).keyup(function(){
			Y.find("#_city").trigger("show-info")
		});
		Y.find("#_zip_code").isZIPField("", Y.find("#_city"), Y.find("#_state"));


		var F=jQuery("#signup-form");
		var E=F.find("input, password");
		var D=F.hasClass("validated-by-backend");
		F.find("#user_name").isSignupFormField({
			validateWith:function(G){
				return isBlank(G)?_("Should be a first and last name"):true
			}
		});
		F.find("#user_password_old").isSignupFormField({
			validateWith:function(G){
				return isBlank(G)?_("Should be a current password"):true
			}
		});
		F.find("#phone1").isSignupFormField({
			allowInput:/[0-9()\-+\s\x25\x27\x24\x23\x2E]/,
			validateWith:function(G){
				test = erase_all_symbol(G);
				if(isBlank(test)) return _("Should be a phone number");
				if(test.length>11) return _("something looks wrong.");
				if(test.length<10) return _("something looks wrong.");
				document.getElementById('phone1').value = convert_phone(test);
				return true
			}
		});
		F.find("#phone2").isSignupFormField({
			allowInput:/[0-9()\-+\s\x25\x27\x24\x23\x2E]/,
			validateWith:function(G){
				test = erase_all_symbol(G);
				if(test.length>11) return _("something looks wrong.");
				if(test.length<10) return _("something looks wrong.");
				document.getElementById('phone2').value = convert_phone(test);
				return true
			}
		});
		F.find("#user_screen_name").isScreenNameField();
		F.find("#user_email").isEmailField();
		F.find("#user_user_password").isSignupFormField({
			allowInput:/.*/
		}).focus(function(){
			B(this).trigger("show-password-meter")
		}).isPasswordStrengthField(".password-meter",{
			username:function(){
				return F.find("#user_screen_name").val()
			}
		});
		if(D){
			E.trigger("align-validation")
		}
		var C=F.find(".fieldWithErrors:eq(0) input");
		if(C.length>0){
			C.focus()
		}else{
			/** /F.find("#user_name").focus()/**/
		}
	}
	B(document).ready(A)
})
(jQuery);
(function(A){
	A.fn.isZIPField=function(_Prefix, _City, _State, _FullState){
		return this.each(function(){
			var C=/[0-9\x25\x27\x24\x23\x2E]/;

			var Zip_Input_Box=A(this);

			var Zip_Code_Info = A("#"+_Prefix+"_zip_code_info");
			var Avail_Zip_Code_Check = A("#"+_Prefix+"_avail_zip_code_check_indicator");
			var Not_Found_Zip_Code = A("#"+_Prefix+"_not_found_zip_code_in_base");
			var The_Server_Does_Not_Answer = A("#"+_Prefix+"_the_server_does_not_answer");

			function Hide_all_info(){
				if (Not_Found_Zip_Code) Not_Found_Zip_Code.hide();
				if (Zip_Code_Info) Zip_Code_Info.hide();
				if (Avail_Zip_Code_Check) Avail_Zip_Code_Check.hide();
				if (The_Server_Does_Not_Answer) The_Server_Does_Not_Answer.hide()
			}
			function TestZip(){
				jQuery.ajax({
					type:"POST",
					url:'/get_param_from_zip.php',
					data:{type:"request_state_prefix",zip_code:Zip_Input_Box.val()},
					timeout: 30000,
					beforeSend:function(){
						Zip_Input_Box.trigger("show-info");
						Hide_all_info();
						if (Avail_Zip_Code_Check) Avail_Zip_Code_Check.show()
					},
					success:function(J){
						if (J != ''){
							D = J.split("\n");
							if (D[0].length != 2){
								Hide_all_info();
								if (The_Server_Does_Not_Answer) The_Server_Does_Not_Answer.show()
							} else {
								if (_State) _State.val(D[0]);
								if (_City) _City.val(D[1]);
								if (_FullState) _FullState.val(D[2]);
								Hide_all_info();
								Zip_Input_Box.trigger("is-valid");
								if (_City) _City.trigger("is-valid")
							}
						} else {
							Hide_all_info();
							if (Not_Found_Zip_Code) Not_Found_Zip_Code.show()
						}
					},
					beforeSend:null,
					complete:function(){
						clearTimeout(tstpss.timeouts.availabilityTimeout2)
					},
					error:function(){
						Hide_all_info();
						if (The_Server_Does_Not_Answer) The_Server_Does_Not_Answer.show()
					}
				})
			}
			function QueryZip(R){
				if (tstpss.timeouts.availabilityTimeout2) clearTimeout(tstpss.timeouts.availabilityTimeout2);
				Zip_Input_Box.trigger("show-info");
				Hide_all_info();
				if (Avail_Zip_Code_Check) Avail_Zip_Code_Check.show();
				tstpss.timeouts.availabilityTimeout2=setTimeout(TestZip,timeout)
			}
			Zip_Input_Box.keyup(function(R){
				if((Zip_Input_Box.val()!="")&&(Zip_Input_Box.val().length==5)){
					QueryZip()
				}else{
					Zip_Input_Box.trigger("show-info");
					Hide_all_info();
					if (Zip_Code_Info) Zip_Code_Info.show()
				}
			});
			Zip_Input_Box.keypress(function(b){
				var a=b.which;
				var c=String.fromCharCode(a);
				return !!(a==0||a==8||a==9||a==13||c.match(C))
			});
			Zip_Input_Box.isSignupFormField({
				validateWith:function(I){
					if(isBlank(I)){
						return _(zip_messages[0])
					}else{
						if (I.length<5){
							return _(zip_messages[1])
						}
					}
				}
			});
			Zip_Input_Box.blur(function(I){
				Hide_all_info();
				if (Zip_Code_Info) Zip_Code_Info.show()
			});
			Zip_Input_Box.bind("custom-validate",TestZip)
		})
	}
})
(jQuery);
(function(A){
	A.fn.isEmailField=function(){
		return this.each(function(){
			var C=/^((?!\.)([-A-Za-z0-9_]|[\.](?!\.))+@(?!\.)([-A-Za-z0-9_]|[\.](?!\.))+\.[A-Za-z]{2,6})$/;
			 /*C=/.+@.+\..+/;*/
			var F=A(this);
			var GG=F.val();
			var HH=F.val()!="";
			var D=A("#email_info");
			var G=A("#avail_email_check_indicator");
			function E(){
				F.trigger("show-info");
				D.hide();
				G.show()
			}
			function H(){
				D.show();
				G.hide()
			}
			function B(){
				E();
				var I=F.val();
				if(I.match(C)){
					jQuery.ajax({
						type:"GET",
						url:requesturl,
						data:{email:I},
						dataType:"json",
						beforeSend:function(){
							E()
						},
						success:function(J){
							var K=J.msg;
							if(J.valid){
								F.trigger("is-valid")
							}else{
								F.trigger("is-invalid",J.msg)
							}
						},
						beforeSend:null,
						complete:function(){
							clearTimeout(tstpss.timeouts.availabilityTimeout2);
							H()
						}
					})
				}else{
					F.trigger("is-invalid",_(messages[0]))
				}
			}
			function J(R){
				O=F.val();
				clearTimeout(tstpss.timeouts.availabilityTimeout2);
				CC=O.match(C);
				if(!CC){
					GG=O;
					B();
					return
				}
				if(O==GG){
					return
				}
				E();
				tstpss.timeouts.availabilityTimeout2=setTimeout(B,timeout)
			}
			F.keyup(function(R){
//				if(F.val()!=""){
//					HH=true
//				}else{
					F.trigger("show-info")
//				}
//				J()
			});
			F.isSignupFormField({
				validateWith:function(I){
					if(isBlank(I)){
						return _(messages[1])
					}else{
						if(!I.match(C)){
							return _(messages[0])
						}
					}
				},
				allowInput:/[^\s]/
			});
			F.blur(function(I){
				if(F.val()==""){
					F.trigger("show-info");
					F.parents("tr:eq(0)").find(".info").hide();
					F.removeClass("with-box")
				}else{
					B();
					return;
				}
			});
			F.focus(function(I){
				H();
			});
			/** /F.bind("value-changed",B);/**/
			F.bind("custom-validate",B)
		})
	}
})
(jQuery);
(function(A){
	A.fn.isScreenNameField=function(){
		return this.each(function(){
			var M=A(this);
			var F=A("#signup_username_url");
			var E=A("#screen_name_info");
			var D=A("#avail_screenname_check_indicator");
			var O;
			var C;
			var I;
			var N=M.val();
			var G=N;
			var H=N!="";
			var Q=/[a-zA-Z0-9_]/;
			function K(){
				if(H){
					F.html(M.val())
				}
			}
			function L(){
				M.trigger("show-info");
				E.hide();
				D.show()
			}
			function B(){
				E.show();
				D.hide()
			}
			function P(){
				G=O;
				jQuery.ajax({
					type:"GET",
					url:requesturl,
					data:{username:O},
					dataType:"json",
					success:function(R){
						if(C){
							var S=R.msg;
							if(R.valid){
								M.trigger("is-valid");
								F.removeClass("invalid").addClass("valid")
							}else{
								M.trigger("is-invalid",R.msg);
								F.addClass("invalid").removeClass("valid")
							}
						}
					},
					beforeSend:null,
					complete:function(){
						clearTimeout(tstpss.timeouts.availabilityTimeout);
						B()
					}
				})
			}
			function J(R){
				O=M.val();
				clearTimeout(tstpss.timeouts.availabilityTimeout);
				C=O.match(Q);
				if(!C){
					G=O;
					B();
					return
				}
				if(O==G){
					return
				}
				L();
				tstpss.timeouts.availabilityTimeout=setTimeout(P,timeout)
			}
			M.isSignupFormField({
				validateWith:function(R){
					if(isBlank(R)){
						return _(messages[2])
					}else{
						P()
					}
				},
				allowInput:Q
			});
			M.keyup(function(R){
				if(jQuery.inArray(R.keyCode,[16,17,18,20,27,33,34,35,37,38,39,40,144])==-1){
					if(M.val()!=""){
						H=true
					}else{
						M.trigger("show-info")
					}
					K();
					J()
				}
			});
			M.bind("value-changed",P);
			M.bind("custom-validate",P)
		})
	}
})
(jQuery);
(function(A){
	A.fn.isSignupFormField=function(B){
		return this.each(function(){
			var K=A(this);
			var U=K.parents("tr:eq(0)");
			var T=this;
			var F=U.find(".label-box");
			var D=U.find(".info");
			var V=U.find(".good");
			var L=U.find(".error");
			var LL=U.find(".errorMessage");
			var E=D;
			var Q=false;
			var G=K.val();
			var J=G!="";
			var I=K.parent("div.fieldWithErrors").length>0;
			var P=B.validateWith;
			var N=B.allowInput;
			function M(){
				LL.hide();
				/** /K.val(K.val().trim());/**/
				E.show();
				K.addClass("with-box")
			}
			function X(){
				if(!Q){
					LL.hide();
					E.hide();
					K.removeClass("with-box")
				}
			}
			function W(a){
				E.hide();
				E=a;M()
			}
			function H(){
				var a=K.val();
				J=(a!=G);
				if(J){
					I=false
				}
				G=a;
				return J
			}
			function R(){
				Q=true;
				W(D)
			}
			function Z(){
				Q=true;
				W(L)
			}
			function Y(){
				Q=true;
				W(V)
			}
			function S(a){
				return P?P(a):true
			}
			function O(){
				if(I){
					K.trigger("is-invalid")
				}else{
					if(J){
						var a=S(K.val());
						if(a===true){
							K.trigger("is-valid")
						}else{
							if(typeof (a)=="string"){
								K.trigger("is-invalid",a)
							}
						}
					}
				}
			}
			function C(){
				if(I){
					K.trigger("is-invalid")
				}else{
					K.trigger("is-valid")
				}
			}
			K.focus(M);
			K.blur(function(){
				if(H()){
					K.trigger("value-changed");
					O()
				}
				X()
			});
			K.bind("is-valid",Y);
			K.bind("is-invalid",Z);
			K.bind("show-info",R);
			K.bind("validate",O);
			K.bind("align-validation",C);
			K.bind("is-invalid",function(b,a){
				if(a){
					L.html(a)
				}
			});
			if(N){
				K.keypress(function(b){
					var a=b.which;
					var c=String.fromCharCode(a);
					return !!(a==0||a==8||a==9||a==13||c.match(N))
				})
			}
			F.hide()
		})
	}
})
(jQuery);
