Date.firstDayOfWeek = 7;
Date.format = 'mm/dd/yyyy';
var checked = false;

function initForm()
{
	handleSelect();
	handleRadioButtons();
	handleCheckboxGroups();
	handleTextRequired();
	handleEmailRequired();
	handlePhoneRequired();
	handleDateRequired();
	handleTimeRequired();
	$(".optional").removeClass("sendFields");
	$(".removeRowLink").click(function(){
		$(this).parent().parent().filter(":not(:nth-child(1))").remove();
		initForm();
	})
}

$(document).ready(function() {
						   
	initForm()
	$(".addRowLink").click(function(){
		$(this).parent().parent().siblings("tr:first").clone().insertBefore($(this).parent().parent());	
		initForm();
	})
	
});


function submitForm(){
	checked = true;
	checkCheckboxGroups();
	checkSelectRequired($(".selectMenu"));
	checkTextRequired($(".textField, .textField-selected, .textField-error").filter(".sendFields"));
	checkTimeRequired($(".timeField, .timeField-selected, .timeField-error").filter(".sendFields"));
	checkEmailRequired($(".emailField, .emailField-selected, .emailField-error"));
	checkPhoneRequired($(".phoneField, .phoneField-selected, .phoneField-error"));
	checkRadioButtons();
	if (checked) {
		$("#result").html("Form data is valid");
		var params = new Array();
		params.push({name:"SUBMISSION_DATE",value:(new Date()).asString(Date.format)})
		var fields = $(".sendFields, .optionalCheckBox:checked");
		for (var i = 0 ; i < fields.length; i++){
			params.push(new Object());
			params[params.length-1].name = $(fields[i]).attr("id");
			params[params.length-1].value = $(fields[i]).val();
		}
		ajaxCall("./formHandler.php",params,function(data){
        	window.location.href="scheduling_thank_you.php";
			window.navigate("scheduling_thank_you.php");

		});

	}
	else $("#result").html("Form data is not valid");
}

function checkRadioButtons()
{
	for (var i = 0 ; i < radioGroups.length ; i++)
	{
		$("div."+radioGroups[i]).filter(".errorMessage").slideUp();
		if ($("input[name='"+radioGroups[i]+"']").filter(":radio").filter(":checked, :selected").length==0){
			checked = false;	
			$("div."+radioGroups[i]).filter(".errorMessage").slideDown();
		}
	}

}

function checkCheckboxGroups(){
	for (var i = 0 ; i < checkboxGroups.length ; i++)
		checkCheckboxGroup(checkboxGroups[i]);
}


function checkCheckboxGroup(checkboxGroup){
	if ($("."+checkboxGroup+":checked").length == 0) {
		$(".errorMessage").filter("."+checkboxGroup).slideDown();
		checked = false;
	}
	else $(".errorMessage").filter("."+checkboxGroup).slideUp();
}

function checkTimeRequired(timeFields){
  timeFields.each(function(){
	$(this).removeClass("timeField-error").removeClass("timeField-selected").removeClass("timeField");
	  if (this.value=="") {
		checked = false;
        $(this).addClass("timeField-error");
		$(this).siblings(".errorMessage").slideDown();
	  }	else {
        $(this).addClass("timeField");
		//$(this).siblings(".errorMessage").slideUp();
	  }
  });
}


function checkTextRequired(textFields){
  textFields.each(function(){
	$(this).removeClass("textField-error").removeClass("textField-selected").removeClass("textField");
	  if (this.value=="") {
		checked = false;
        $(this).addClass("textField-error");
		$(this).siblings(".errorMessage").slideDown();
	  }	else {
        $(this).addClass("textField");
		//$(this).siblings(".errorMessage").slideUp();
	  }
  });
}

function checkSelectRequired(selectFields){
	$(selectFields).each(function(){
		if ($(this).val()=="OTHER"){
			$(this).siblings("input").removeClass("textField-error").removeClass("textField-selected").addClass("textField").addClass("sendFields").slideDown();
			$(this).siblings(".errorMessage").slideUp();
		} else {
			$(this).siblings("input").removeClass("sendFields").slideUp();
			if ($(this).val()==""){
				checked = false;
				$(this).siblings("input").slideUp();
				$(this).siblings(".errorMessage").slideDown();
			} else $(this).siblings(".errorMessage").slideUp();
		}
	})
}

function checkEmailRequired(textFields){
  textFields.each(function(){
	var pattern=/^([a-zA-Z0-9_.-])+@([a-zA-Z0-9_.-])+\.([a-zA-Z])+([a-zA-Z])+/;
	$(this).removeClass("emailField-error").removeClass("emailField-selected").removeClass("emailField");
	  if (!pattern.test(this.value)) {
        $(this).addClass("emailField-error");
		$(this).siblings(".errorMessage").slideDown();
		checked = false;
	  }	else {
        $(this).addClass("emailField");
		//$(this).siblings(".errorMessage").slideUp();
	  }
  });
}

function checkPhoneRequired(textFields){
  textFields.each(function(){
	var pattern=/^([1][-])?\(?(\d{3})\)?[- ]?(\d{3})[- ]?(\d{4})$/;
	$(this).removeClass("phoneField-error").removeClass("phoneField-selected").removeClass("phoneField");
	  if (!pattern.test(this.value)) {
        $(this).addClass("phoneField-error");
		$(this).siblings(".errorMessage").slideDown();
		checked = false;
	  }	else {
        $(this).addClass("phoneField");
		//$(this).siblings(".errorMessage").slideUp();
	  }
  });
}

function handleCheckboxGroups(){
	for (var i = 0 ; i < checkboxGroups.length ; i++){
		$("."+checkboxGroups[i]+":text").addClass("textField");
		$("."+checkboxGroups[i]+":checkbox").click(function(){
			for (var j = 0 ; j < checkboxGroups.length ; j++)
				if ($(this).hasClass(checkboxGroups[j])){
					if ($(this).attr("checked") == 1)
						$(this).addClass("sendFields");
						else $(this).removeClass("sendFields");
					if ($(this).val()=="OTHER"){
						if ($(this).attr("checked") == 1)
							$("."+checkboxGroups[j]+":text").addClass("sendFields").show();
						else 
							$("."+checkboxGroups[j]+":text").removeClass("sendFields").hide().siblings(".errorMessage").hide();
					}
					checkCheckboxGroup(checkboxGroups[j]);
				}
		});
	}
}

function handlePhoneRequired(){
  $(".phoneField, .phoneField-selected, .phoneField-error").addClass("sendFields").focus(function(){
    $(this).removeClass("phoneField-error").removeClass("phoneField").addClass("phoneField-selected");
	$(this).siblings(".errorMessage").slideUp();
  });
  $(".phoneField, .phoneField-selected, .phoneField-error").blur(function(){
    checkPhoneRequired($(this));
  });	
}

function handleRadioButtons()
{
	$("input:radio").click(function(){
		$(this).siblings(".errorMessage").slideUp();
});
}




function handleEmailRequired(){
  $(".emailField, .emailField-selected, .emailField-error").addClass("sendFields").focus(function(){
    $(this).removeClass("emailField-error").removeClass("emailField").addClass("emailField-selected");
	$(this).siblings(".errorMessage").slideUp();
  });
  $(".emailField, .emailField-selected, .emailField-error").blur(function(){
    checkEmailRequired($(this));
  });	
}

function handleSelect(){
  $(".selectMenu").addClass("sendFields");
  $(".selectMenu").siblings("input").addClass("textField");
  $(".selectMenu").change(function(){
    checkSelectRequired($(this));
  })
}

function handleTimeRequired(){
	$(".timeField").timePicker({
  		startTime:new Date(0, 0, 0, 0, 0, 0),
  		endTime:new Date(0, 0, 0, 23, 59, 0),
  		show24Hours:false,
  		separator:':',
  		step: 15});
	$(".timeField").addClass("sendFields");
}

function handleDateRequired(){
	$(".dateField").datePicker({
        startDate : (new Date()).asString(Date.format),
		createButton : false,
		clickInput : true
	})
	$(".dateField").attr("value",(new Date()).asString(Date.format));
//	$(".dateField").dpSetOffset(0,230);
	$(".dateField").addClass("sendFields");
}


function handleTextRequired(){
  $(".textField, .textField-selected, .textField-error").addClass("sendFields");
  $(".textField, .textField-selected, .textField-error").focus(function(){
    $(this).removeClass("textField-error").removeClass("textField").addClass("textField-selected");
	$(this).siblings(".errorMessage").slideUp();
  });
  $(".textField, .textField-selected, .textField-error").blur(function(){
    checkTextRequired($(this));
  });	
}