$(document).ready(function() {
	// validate signup form on keyup and submit
	var validator = $("#FormParam").validate({
		rules: {				
	UserId: {
		required: true,
		minlength: 5,
		maxlength: 10, 
		validUserIdChars:true
	},
	Pswd: {
		required: true,
		minlength: 5,
		validChars:true
	},
	RetypePswd: {
		required: true,
		minlength: 5,
		equalTo: "#Pswd"				
	},
	TitleCd: {
		required: true
	},
	Name: {
		required: true,
		validChars:true
	},
	Email: {
		required: true,
		email: true
	},
	MobileNo: {
		minlength: 14,   
		maxlength: 15 
	},			
	Day: {				
		required:true   
	},			
	Month: {				
		required:true   
	},
	Year: {		
		required:true,		
		digits:true,
		minlength: 4,   
		maxlength: 4   
	},
	IsAvailable: {		
		required:true
	},
	DtAvailableDay: {				
		required:true   
	},			
	DtAvailableMonth: {				
		required:true   
	},
	DtAvailableYear: {		
		digits:true,
		minlength: 4,   
		maxlength: 4   
	},
	JobTitle: {
		required:true
	},
	OtherInfo: {
		required:true
	},
	ExpectedSalary: {				
		digits:true   
	},
	CurrentSalary: {				
		digits:true   
	},		
	ResumeStatusCd: {				
		required:true   
	},
	security_code: {
		required: true
	}				
	},
	messages: {			
		UserId: {
		required: "Login ID is required",
		minlength: jQuery.format("Login ID must be at least {0} characters"),
		validUserIdChars: "Special Characters are not allowed!",
		remote: jQuery.format("{0} is already in use")
	},
	Pswd: {
		required: "Password is required",
		validChars: "Special Characters are not allowed!",
		rangelength: jQuery.format("Password must be at least {0} characters")
	},
	RetypePswd: {
		required: "Confirm Password is required",
		minlength: jQuery.format("Confirm Password must be at least {0} characters"),
		equalTo: "Enter the same password as above"
	},
	TitleCd: {
		required: "&nbsp;Salutation is required<br/>&nbsp;"
	},
	Name: {
		required: "Name is required",
		validChars: "Special Characters are not allowed!",		
		remote: jQuery.format("{0} is already in use")
	},
	Email: {
		required: "Email address is required",
		minlength: "Please enter a valid email address",
		remote: jQuery.format("{0} is already in use")
	},
	MobileNo: {
		//required: "Mobile No is required",		
		minlength: jQuery.format("Mobile No must be at least {0} digits"),
		maxlength: jQuery.format("Mobile No must be less than {0} digits"),
		remote: jQuery.format("{0} is already in use")
	},
	Day: {
		required: "Day is required<br/>&nbsp;"		
	},
	Month: {
		required: "Month is required<br/>&nbsp;"
	},
	Year: {
		required: "Year is required",
		digits: "0 - 9 digits only",
		minlength: jQuery.format("Year must be {0} digits"),
		maxlength: jQuery.format("Year must be {0} digits"),
		remote: jQuery.format("{0} is already in use")
	},	
	IsAvailable: {
		required: "Is Available is required"
	},
	DtAvailableDay: {
		required: "&nbsp;Day is required<br/>&nbsp;"		
	},
	DtAvailableMonth: {
		required: "&nbsp;Month is required<br/>&nbsp;"
	},
	DtAvailableYear: {
		required: "Year is required",
		digits: "0 - 9 digits only",
		minlength: jQuery.format("Year must be {0} digits"),
		maxlength: jQuery.format("Year must be {0} digits"),
		remote: jQuery.format("{0} is already in use")
	},
	JobTitle: {
		required: "Job Position is required"
	},
	OtherInfo: {
		required: "Short Description is required"
	},
	ExpectedSalary: {
		digits: "0 - 9 digits only"
	},
	CurrentSalary: {
		digits: "0 - 9 digits only"
	},		
	ResumeStatusCd: {
		required: "Open Access is required"
	},
    security_code: {
		required: "Security Code is required"
	}						
	},
	// the errorPlacement has to take the table layout into account
	errorPlacement: function(error, element) {
		if ( element.is(":radio") )
			error.appendTo( element.parent().next().next() );
		else if ( element.is(":checkbox") )
			error.appendTo ( element.next() );
		else
			error.appendTo( element.parent().next() );
	},
	// specifying a submitHandler prevents the default submit
	submitHandler: function() {
		//Checking file extension
		if (checkfileType('logo') == false) {
			alert("Your Resume must be in  Microsoft Word or PDF format Only!");
			return;
		}
		//Must agree with our Terms & Condition
		if (document.FormParam.chkTerms.checked == false) {
			alert('You must accept our Terms of Use.\nPlease check on the small box beside the Terms of Use.');
			return;
		}		
		
		if ( $("#FormParam").validate().form()) {				
		
			var errorMsg = $('#errorMsg');
			var params = 'security_code=' + $("#security_code").val();
			
			errorMsg.removeClass('error').html('<img src="/images/loading.gif" height="16" width="16" /> <span  class="clsAjax">&nbsp;Please wait...</span>');

				if (this.timer) clearTimeout(this.timer);
                
                this.timer = setTimeout(function () {
                    $.ajax({
                        url: '/captcha/check.php',
                        data: params,
                        dataType: 'json',
                        type: 'post',
                        success: function (data) {
                        	if (data.success) {
	                            	$("#errorMsg").addClass('success').html(data.message).fadeIn('slow');
		                        document.FormParam.submit();
	                        } else {
		                        new_captcha();
					$("#errorMsg").addClass('error').html(data.message).fadeIn('slow');					
	                        }
                        }
                    });
                }, 250);
                
			return false;			
		}	
	},
	// set this class to error-labels to indicate valid fields
	success: function(label) {
		// set &nbsp; as text for IE
		label.html("&nbsp;").addClass("checked");
	}
	});

	// check if confirm password is still valid after password changed
	$("#Pswd").blur(function() {
		$("#RetypePswd").valid();
	});

	jQuery(function($){
		   $("#MobileNo").mask("(999) - 9999999");
	});
	
	// UserId validation logic
	var validateUserId = $('#validateUserId');
	$('#UserId').keyup(function () {
		// cache the 'this' instance as we need access to it within a setTimeout, where 'this' is set to 'window'
		var t = this;

		// only run the check if the username has actually changed - also means we skip meta keys
		if (this.value != this.lastValue) {

			// the timeout logic means the ajax doesn't fire with *every* key press, i.e. if the user holds down
			// a particular key, it will only fire when the release the key.

			if (this.timer) clearTimeout(this.timer);

			// show our holding text in the validation message space
			validateUserId.removeClass('error').html('<img src="/images/loading.gif" height="16" width="16" /> checking availability...');

			// fire an ajax request in 1/5 of a second
			this.timer = setTimeout(function () {
				$.ajax({
					url: 'check_user.php',
					data: 'action=check_username&username=' + t.value,
					dataType: 'json',
					type: 'post',
					success: function (j) {
					validateUserId.removeClass('clsSuccess');
					validateUserId.removeClass('clsFail');
					if (j.msg == 'Available') {
						validateUserId.html(j.msg).addClass('clsSuccess');
					} else {
						validateUserId.html(j.msg).addClass('clsFail');
					}
				}
				});
			}, 250);

			// copy the latest value to avoid sending requests when we don't need to
			this.lastValue = this.value;
		}
	});
	
	$.validator.addMethod('validUserIdChars', function (value) {

		var result = true;
		// unwanted characters
		var iChars = "!@#$%^&*()+=-[]\\\';,./{}|\":<> ?";

		for (var i = 0; i < value.length; i++) {

			if (iChars.indexOf(value.charAt(i)) != -1) {
				return false;
			}

		}

		return result;

	}, '');

	$.validator.addMethod('validChars', function (value) {

		var result = true;
		// unwanted characters
		var iChars = "!@#$%^&*()+=-[]\\\';,./{}|\":<>?";

		for (var i = 0; i < value.length; i++) {

			if (iChars.indexOf(value.charAt(i)) != -1) {
				return false;
			}

		}

		return result;

	}, '');

});

function getfileextension(inputId) 
{ 
 var fileinput = document.getElementById(inputId); 
 if(!fileinput ) return ""; 
 var filename = fileinput.value; 
 if( filename.length == 0 ) return ""; 
 var dot = filename.lastIndexOf("."); 
 if( dot == -1 ) return ""; 
 var extension = filename.substr(dot,filename.length); 
 return extension; 
} 

function checkfileType(inputId) 
{ 
 var ext = getfileextension(inputId);

 if (ext != '') {
	 if( ext != '.doc' && ext != '.pdf' ) {
	 	return false;
	 } 
 }
 
 return true;
}


var IE = (document.all) ? 1 : 0;
var DOM = 0; 
if (parseInt(navigator.appVersion) >=5) {DOM=1};

function ShowTextCount( showCharLeft ) {
    
    // Detect Browser

    if (DOM) {
    	var viewer = document.getElementById("showCounter");
        viewer.innerHTML=showCharLeft;
    }
    else if(IE) {
        document.all["showCounter"].innerHTML=showCharLeft;
    }
}

function keyup(_textarea) 
{
var str = new String(_textarea.value);
var len = str.length;
var charsLeft = 'Number of characters now ' + len;
ShowTextCount( '&nbsp;' + charsLeft );
}
