function textareaLimit(id, limit, event){
   	var key = event.which;	 
   	//all keys including return.
    if(key >= 32 || key == 13) {
	    var length = $(id).val().length;
	    if(length >= limit) {
	    	event.preventDefault();		                
	    }
    }
}

function resetForm(name){
	document.getElementById(name).reset();
}

function changeCBValue(value, cbId, allValues){
	var hiddenVal = $("#" + allValues).val();
	var els = hiddenVal.split("|||");
	console.log(els);
	if($("#" + cbId).is(":checked")){
		console.log("here");
		$("#" + allValues).val(hiddenVal + value + "|||");
	}
	else{
		var newOrder = new Array();
		var newHiddenVal = "";
		for (var i=0; i<els.length; i++) {
			if (els[i]!=value && els[i] != "") {
				newHiddenVal += els[i];
				newHiddenVal += "|||"; 
			} 
		}
		//console.log(newHiddenVal);
		$("#" + allValues).val(newHiddenVal);
	}
	//console.log($("#" + allValues).val());
}

function validateCaptcha(){
	challengeField = $("input#recaptcha_challenge_field").val();
	responseField = $("input#recaptcha_response_field").val();
	var html = $.ajax({
		type: "POST",
		url: "/competition/ajaxrecaptcha",
		data: "recaptcha_challenge_field=" + challengeField + "&recaptcha_response_field=" + responseField,
		async: false
	}).responseText;

	if(html == "success")
		return true;
	else
		return false;
} 

function validateEmail(emailAddress, code, siteId){
	var html = $.ajax({
		type: "POST",
		url: "/competition/emailexits",
		data: "email=" + emailAddress + "&code=" + code + "&siteId=" + siteId,
		async: false
	}).responseText;

	if(html == "success")
		return true;
	else
		return false;
} 

function validateForm(parent, snippetId, hasCaptcha, siteId){
	var valid = true;
	var validEmail = true;
	var validAddress = true;
	var emailRegex = /^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.(([0-9]{1,3})|([a-zA-Z]{2,3})|(aero|coop|info|museum|name))$/;
	var phoneRegex = /^[+()0-9 ]*$/;

	if(hasCaptcha == 1)
		if(!validateCaptcha()){
			valid = false;
			$(".captcha", parent).addClass("error");
			Recaptcha.reload();
		}
		else
			$(".captcha", parent).removeClass("error");
	
	$(":input[type=text]", parent).each(function(){
		if($(this).hasClass("validate_address")){
			if($(this).val().length == 0 || this.value == this.defaultValue){
				$(this).parents().filter(".field").addClass("error");
				valid = false;
				validAddress = false;
			}
			else if(validAddress) {
				$(this).parents().filter(".field").removeClass("error");}
		}else("not here");
		if ($(this).hasClass("validate"))
			if($(this).val().length == 0 || this.value == this.defaultValue){
				$(this).parents().filter(".field").addClass("error");
				valid = false;}
			else $(this).parents().filter(".field").removeClass("error");
		if ($(this).hasClass("email") && $(this).val() != ""){
			if (!emailRegex.test($(this).val())) {
				valid = false;
				$(this).parents().filter(".field").addClass("invalidEmail");
			}
			else
				if($(this).hasClass("singleEntry")){
					if(!validateEmail($(this).val(), $("#code_" + snippetId).val(), siteId)){
						validEmail = false;
						valid = false;
						$(this).parents().filter(".field").addClass("errorEmail");
					}
					else 
						$(this).parents().filter(".field").removeClass("errorEmail");
				}
				else 
					$(this).parents().filter(".field").removeClass("invalidEmail");
		}
		else
			if($(this).hasClass("phone") && $(this).val().length != 0)
				if(!phoneRegex.test($(this).val())){
					valid = false;
					$(this).parents().filter(".field").addClass("invalidPhone");
				}
				else $(this).parents().filter(".field").removeClass("invalidPhone");
			else if($(this).hasClass("dateSelector") && $(this).val().length != 0){
				var id = $(this).attr('id').split('_');
				if($("#limit_" + id[1]).val() != ""){
					var yearToCheck = $("#year_" + id[1]).val();
					var monthToCheck = $("#month_" + id[1]).val() - 1;
					var dateToCheck = $("#day_" + id[1]).val();
					var dateObj = new Date(yearToCheck, monthToCheck, dateToCheck);
					
					if (dateObj.getFullYear() != yearToCheck || dateObj.getMonth() != monthToCheck || dateObj.getDate() != dateToCheck){
						valid = false;
						$(this).parents().filter(".field").addClass("errorDate");
					}
					else
						$(this).parents().filter(".field").removeClass("errorDate");	
					
					var today = new Date();
					var ageLimit = $("#limit_" + id[1]).val();
					var limitDay = new Date(today.getFullYear() - ageLimit, today.getMonth(), today.getDate());
					if(limitDay < dateObj){
						valid = false;
						$(this).parents().filter(".field").addClass("errorDate");
					}
					else
						$(this).parents().filter(".field").removeClass("errorDate");
				}
				else{
					var yearToCheck = $("#year_" + id[1]).val();
					var monthToCheck = $("#month_" + id[1]).val() - 1;
					var dateToCheck = $("#day_" + id[1]).val();
					var dateObj = new Date(yearToCheck, monthToCheck, dateToCheck);
					
					if (dateObj.getFullYear() != yearToCheck || dateObj.getMonth() != monthToCheck || dateObj.getDate() != dateToCheck){
						valid = false;
						$(this).parents().filter(".field").addClass("invalidDate");
					}
					else
						$(this).parents().filter(".field").removeClass("invalidDate");
				}
			}
	});
	$("select",parent).each(function(){
		if ($(this).hasClass("validate")) 
			if($(this).val()=="") {
				valid = false;
				$(this).parents().filter(".field").addClass("error");
			}
			else $(this).parents().filter(".field").removeClass("error");	
	});
	$("input:radio",parent).each(function(){
		if($(this).hasClass("validate")){
			if($("input:radio[name=" + $(this).attr("name") +"]").is(":checked")){
				if($(this).parents().filter(".field").hasClass("error"))
					$(this).parents().filter(".field").removeClass("error");
			}
			else{
				valid = false;
				$(this).parents().filter(".field").addClass("error");
			}
		}
	});
	$("input:checkbox", parent).each(function(){
		if($(this).hasClass("validate")){
			if($("input:checkbox[name=" + $(this).attr("name") + "]").is(":checked")){
				if($(this).parents().filter(".field").hasClass("error"))
					$(this).parents().filter(".field").removeClass("error");
			}
			else{
				valid = false;
				$(this).parents().filter(".field").addClass("error");
			}
		}
	});
	$("textarea", parent).each(function(){
		if($(this).hasClass("validate"))
			if($(this).val()=="" || this.value == this.defaultValue) {
				valid = false;
				$(this).parent().addClass("error");
			}
			else $(this).parent().removeClass("error");
	});
	if(!valid){
		$(".general-error", '.competition' + snippetId).show();
		if(hasCaptcha == 1){
			$("input#recaptcha_challenge_field").val("");
			Recaptcha.reload();
		}
	}
	else
		$(".general-error", '.competition' + snippetId).hide();
//console.log("VALID:" + valid);
	return valid;
}


$(function() { 

	$("form.formApp div.questionsGroup div.options label").mousedown( 
					function(){ 
						$(this).parent().children().removeClass("checked");
						$(this).toggleClass("checked");
 						$(this).children(":first-child").attr("checked" , true);
					} );
});
