/* jQuery Password Strength Plugin (pstrength) - A jQuery plugin to provide accessibility functions
 * Author: Tane Piper (digitalspaghetti@gmail.com) 
 * Website: http://digitalspaghetti.me.uk
 * Licensed under the MIT License: http://www.opensource.org/licenses/mit-license.php
 * 
*/
(function (A) {
	A.extend(A.fn, {
		pstrength: function (B) {
			var B = A.extend({
				verdects: ["Very weak", "Weak", "Good", "Excellent", "Awesome"],
				colors:   ["#f00", "#c06", "#f60", "#3c0", "#3f0"],
				scores:   [0, 10, 25, 45],
				common:   ["password", "sex", "god", "123456", "123", "liverpool", "letmein", "qwerty", "monkey", "abc123"],
				minchar:  6
			},
			B);
			return this.each(function () {
				var C = A(this).attr("id");
				//A(this).after("<span class=\"tpair_tip pstrength-minchar\" id=\"" + C + "_minchar\">Minimum number of characters is " + B.minchar + "</span>");
				if($('#'+C+'_text').length == 0) {
					A(this).after("<span class=\"tpair_tip pstrength-info\" id=\"" + C + "_text\"></span>");
				}
				// A(this).after("<div class=\"pstrength-bar\" id=\"" + C + "_bar\" style=\"border: 1px solid white; font-size: 1px; height: 5px; width: 0px;\"></div>");
				A(this).keyup(function () {
					A.fn.runPassword(A(this).val(), C, B)
				})
			})
		},
		runPassword: function (D, F, C) {
			nPerc = A.fn.checkPassword(D, C);
			var B = "#" + F + "_bar";
			var E = "#" + F + "_text";
			if (nPerc == -200) {
				strColor = "#f00";
				strText = "Unsafe password.";
				A(B).css({
					width: "0%"
				})
			} else { if (nPerc < 0 && nPerc > -199) {
					strColor = "#ccc";
					strText = "Minimum number of characters is 6";
					A(B).css({
						width: "5%"
					})
				} else { if (nPerc <= C.scores[0]) {
						strColor = C.colors[0];
						strText = C.verdects[0];
						A(B).css({
							width: "10%"
						})
					} else { if (nPerc > C.scores[0] && nPerc <= C.scores[1]) {
							strColor = C.colors[1];
							strText = C.verdects[1];
							A(B).css({
								width: "25%"
							})
						} else { if (nPerc > C.scores[1] && nPerc <= C.scores[2]) {
								strColor = C.colors[2];
								strText = C.verdects[2];
								A(B).css({
									width: "50%"
								})
							} else { if (nPerc > C.scores[2] && nPerc <= C.scores[3]) {
									strColor = C.colors[3];
									strText = C.verdects[3];
									A(B).css({
										width: "75%"
									})
								} else {
									strColor = C.colors[4];
									strText = C.verdects[4];
									A(B).css({
										width: "92%"
									})
								}
							}
						}
					}
				}
			}
			A(B).css({
				backgroundColor: strColor
			});
			A(E).html("<span style='color: " + strColor + ";'>" + strText + "</span>")
		},
		checkPassword: function (C, B) {
			var F = 0;
			var E = B.verdects[0];
			if (C.length < B.minchar) {
				F = (F - 100)
			} else { if (C.length >= B.minchar && C.length <= (B.minchar + 2)) {
					F = (F + 6)
				} else { if (C.length >= (B.minchar + 3) && C.length <= (B.minchar + 4)) {
						F = (F + 12)
					} else {
						if(C.length >= (B.minchar + 5)) {
							F = (F + 18)
						}
					}
				}
			}
			if (C.match(/[a-z]/)) {
				F = (F + 1)
			}
			if (C.match(/[A-Z]/)) {
				F = (F + 5)
			}
			if (C.match(/\d+/)) {
				F = (F + 5)
			}
			if (C.match(/(.*[0-9].*[0-9].*[0-9])/)) {
				F = (F + 7)
			}
			if (C.match(/.[!,@,#,$,%,^,&,*,?,_,~]/)) {
				F = (F + 5)
			}
			if (C.match(/(.*[!,@,#,$,%,^,&,*,?,_,~].*[!,@,#,$,%,^,&,*,?,_,~])/)) {
				F = (F + 7)
			}
			if (C.match(/([a-z].*[A-Z])|([A-Z].*[a-z])/)) {
				F = (F + 2)
			}
			if (C.match(/([a-zA-Z])/) && C.match(/([0-9])/)) {
				F = (F + 3)
			}
			if (C.match(/([a-zA-Z0-9].*[!,@,#,$,%,^,&,*,?,_,~])|([!,@,#,$,%,^,&,*,?,_,~].*[a-zA-Z0-9])/)) {
				F = (F + 3)
			}
			for (var D = 0; D < B.common.length; D++) {
				if (C.toLowerCase() == B.common[D]) {
					F = -200
				}
			}
			return F
		}
	})
})(jQuery)

function signupFormValidate() {
        var validate = $('.required');
        var isValid = true;
        for (var i = 0; i<validate.length; i++) {
                if(validate[i].value == '') {
                        $(validate[i]).css('background-color', '#FFCFD5');
                        isValid = false;
                } else {
                        $(validate[i]).css('background-color', '');
                }
        }

        return isValid;
}

function signupValidate() {
	if (!signupFormValidate()) {
		alert('Please fill out all the required fields!');
		return false;
	}

	if($('#s_email').val() != $('#s_emailconf').val()) {
		alert ('The email addresses you have provided do not match.');
		return false;
	}
	if($('#s_pass').val() != $('#s_passconf').val()) {
		alert ('The passwords you have provided do not match.');
		return false;
	}

	if(!$('#s_tosbtn').is(':checked')) {
		alert ('You must agree to the Terms of service before you may continue.');
		return false;
	}

	if(nPerc < 10) {
		alert ('Please choose a stronger password.');
		return false;
	}

	return true;
}

function pwValidate() {
	if (!signupFormValidate()) {
		alert('Please fill out all the required fields!');
		return false;
	}

	if($('#s_pass').val() != $('#s_passconf').val()) {
		alert ('The passwords you have provided do not match.');
		return false;
	}

	if(nPerc < 10) {
		alert ('Please choose a stronger password.');
		return false;
	}

	return true;
}
