jQuery(document).ready(function() {

	// The version of cforms does not provide the ID to the ol li element. So this little section of code
	// will spin through the fieldsets and then the child child li elements to apply the ID. Note the li ID will not match the field ID.
	var child_items_fs = 0;
	var child_items_li = 0;
	jQuery('form#cforms11form fieldset.cf-fs1').children().each(function() {

		child_items_fs += 1;
		child_items_li = 0;
		jQuery('form#cforms11form fieldset.cf-fs'+child_items_fs+' ol').children().each(function() {
			child_items_li += 1;
			jQuery(this).attr('id','cf-fs'+child_items_fs+'-'+child_items_li);
		});
	});


	// Handle the hide/show on the secondary insure form. Only show the extra fields if 'Yes' is selected.
	jQuery('form#cforms11form fieldset.cf-fs2 ol.cf-ol li:nth-child(3)').hide();
	jQuery('form#cforms11form fieldset.cf-fs2 ol.cf-ol li:nth-child(4)').hide();

	jQuery('#cf11_field_9').change(function() {
		var spouse_yesno = jQuery(this).val();
		if (spouse_yesno == "Yes")
		{
			jQuery('form#cforms11form fieldset.cf-fs2 ol.cf-ol li:nth-child(3)').show();
			jQuery('form#cforms11form fieldset.cf-fs2 ol.cf-ol li:nth-child(4)').show();
			
		}
		else
		{
			jQuery('form#cforms11form fieldset.cf-fs2 ol.cf-ol li:nth-child(3)').hide();
			jQuery('form#cforms11form fieldset.cf-fs2 ol.cf-ol li:nth-child(4)').hide();			
		}
	});

	jQuery('form#cforms11form .cf-sb').prepend('<input id="backbutton" class="backbutton" type="submit" value="Go Back" name="backbutton"/>');
	jQuery('form#cforms11form #sendbutton11').attr('value', 'Next');



	// Handle the show/hide on the fieldset
	var form_trail = 1;

	process_form();
	function process_form()
	{
		jQuery('#cforms11form fieldset').each(process_fieldsets);
	}

	function process_fieldsets(fs_index, element)
	{
		//alert("form_trail=["+form_trail+"] fs_index=["+fs_index+"]");			
		if (fs_index == form_trail)
		{
			jQuery('#cforms11form fieldset.cf-fs'+fs_index).show();
			if (form_trail == 1)
				jQuery('#cf11_field_2').focus();
			else if (form_trail == 2)
				jQuery('#cf11_field_7').focus();
			else if (form_trail == 3)
				jQuery('#cf11_field_12').focus();

		}
		else
			jQuery('#cforms11form fieldset.cf-fs'+fs_index).hide();

		if (form_trail == 1)
			jQuery('#backbutton').hide();
		else
			jQuery('#backbutton').show();
	}

	function process_fields(fs_index, element)
	{
		//alert("form_trail=["+form_trail+"] fs_index=["+fs_index+"] element=["+element+"]");

		//var class_name = jQuery(this).attr('class');
		//alert("class_name=["+class_name+"]");
		//var element_value = jQuery("#"+element.id).val();
		//alert('element_value=["+element_value+"]');

	}

	jQuery('#cforms11form').submit(function() {

		// Was going to try and process the fieldset form field via 'each' but cannot match on cforms required elements...
		//jQuery('#cforms4form fieldset.cf-fs'+form_trail+' :input').each(process_fields);

		// ... so must dot this hard-coded.

		var form_error_msg = "";
		if (form_trail == 1)
		{				
			var cf11_field_3 = jQuery('#cf11_field_3').val();
			if (cf11_field_3 == "-")
				form_error_msg += "Please select a value for Gender<br />";

			var cf11_field_4 = jQuery('#cf11_field_4').val();
			if (cf11_field_4 == "")
				form_error_msg += "Please enter a value for Date of Birth<br />";
			else if (!isDate(cf11_field_4))
				form_error_msg += "Please enter a valid Date of Birth<br />";

			var cf11_field_5 = jQuery('#cf11_field_5').val();
			if (cf11_field_5 == "-")
				form_error_msg += "Please enter a value for Use Tobacco<br />";

		}
		if (form_trail == 2)
		{				
			var cf11_field_9 = jQuery('#cf11_field_9').val();
			if (cf11_field_9 == "-")
				form_error_msg += "Please provide an answer for...<br />";
			else
			{
				// IF the top dropdown is selected as 'Yes' then we need to process the other fields. 
				if (cf11_field_9 == "Yes")
				{
					var cf11_field_10 = jQuery('#cf11_field_10').val();
					if (cf11_field_10 == "")
						form_error_msg += "Please enter a value for Date of Birth<br />";

					var cf11_field_11 = jQuery('#cf11_field_11').val();
					if (cf11_field_11 == "-")
						form_error_msg += "Please enter a value for Use Tobacco<br />";					
				}
			}
		}
		if (form_trail == 3)
		{				
			var cf11_field_15 = jQuery('#cf11_field_15').val();
			if (cf11_field_15 == "")
				form_error_msg += "Please enter a value for Name<br />";

			var cf11_field_16 = jQuery('#cf11_field_16').val();
			if (cf11_field_16 == "")
				form_error_msg += "Please enter a value for Zip<br />";

			var cf11_field_17 = jQuery('#cf11_field_17').val();
			if (cf11_field_17 == "")
				form_error_msg += "Please enter a value for Phone<br />";
			else if (!isPhoneNumber(cf4_field_17))
				form_error_msg += "Please enter a valid Phone<br />";

			var cf11_field_18 = jQuery('#cf4_field_18').val();
			if (cf11_field_18 == "")
				form_error_msg += "Please enter a value for Email<br />";
			else if (!checkemail(cf11_field_18))
				form_error_msg += "Please enter a valid Email<br />";
		}
		if (form_error_msg.length)
		{
			jQuery('#usermessage11a').html(form_error_msg);
			jQuery('#usermessage11a').show();
			return false;
		}

		jQuery('#usermessage11a').hide();

		form_trail += 1;
		var fieldset_cnt = jQuery('#cforms11form fieldset').size();
		if (form_trail < fieldset_cnt)
		{
			process_form();
			
			if (form_trail < (fieldset_cnt -1))
			{
				jQuery('#cforms11form #sendbutton11').attr('value', 'Next');
			}
			else
			{
				jQuery('#cforms11form #sendbutton11').attr('value', 'Submit');				
			}
			return false;
		}
		else
		{
			return true;
		}

	});

	jQuery('#cforms11form #backbutton').click(function() {
		form_trail -= 1;
		process_form();
		return false;			
	});

	function checkemail(email_address) {
		var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i

		if (filter.test(email_address))
			 return true;
		else
			return false;
	}

	function isPhoneNumber(s)
	{
		// Check for correct phone number
		rePhoneNumber = new RegExp(/^\([1-9]\d{2}\)\s?\d{3}\-\d{4}$/);

		if (!rePhoneNumber.test(s))
			return false;
		return true;
	}


	var dtCh= "/";
	var minYear=1900;
	var maxYear=2100;

	function isInteger(s) {
		var i;
	    for (i = 0; i < s.length; i++){   
	        // Check that current character is number.
	        var c = s.charAt(i);
	        if (((c < "0") || (c > "9"))) return false;
	    }
	    // All characters are numbers.
	    return true;
	}

	function stripCharsInBag(s, bag){
		var i;
	    var returnString = "";
	    // Search through string's characters one by one.
	    // If character is not in bag, append to returnString.
	    for (i = 0; i < s.length; i++){   
	        var c = s.charAt(i);
	        if (bag.indexOf(c) == -1) returnString += c;
	    }
	    return returnString;
	}

	function daysInFebruary (year){
		// February has 29 days in any year evenly divisible by four,
	    // EXCEPT for centurial years which are not also divisible by 400.
	    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
	}
	function DaysArray(n) {
		for (var i = 1; i <= n; i++) {
			this[i] = 31
			if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
			if (i==2) {this[i] = 29}
	   } 
	   return this
	}

	function isDate(dtStr){
		var daysInMonth = DaysArray(12)
		var pos1=dtStr.indexOf(dtCh)
		var pos2=dtStr.indexOf(dtCh,pos1+1)
		var strMonth=dtStr.substring(0,pos1)
		var strDay=dtStr.substring(pos1+1,pos2)
		var strYear=dtStr.substring(pos2+1)
		strYr=strYear
		if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)
		if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)
		for (var i = 1; i <= 3; i++) {
			if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
		}
		month=parseInt(strMonth)
		day=parseInt(strDay)
		year=parseInt(strYr)
		if (pos1==-1 || pos2==-1){
			alert("The date format should be : mm/dd/yyyy")
			return false
		}
		if (strMonth.length<1 || month<1 || month>12){
			alert("Please enter a valid month")
			return false
		}
		if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
			alert("Please enter a valid day")
			return false
		}
		if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){
			alert("Please enter a valid 4 digit year between "+minYear+" and "+maxYear)
			return false
		}
		if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
			alert("Please enter a valid date")
			return false
		}
		return true
	}

});
