/*
 * Script: /Scripts/jquery-formvalidation.js
 * Author: Andy Gray
 *
 * Description
 * Manages the orderform context
 */

$(document).ready(

  function() {

    //$('#frmHIOrderBirthhour').val( -2 );
    //$('#frmHIOrderBirthMinute').val( -2 );

    /*
     * Manage the order clickthrough
     * - check all fields
     * - notify issues
     * - only post once all is kosher
     */
    $('#frmHIOrderSubmit').click(

      function(){

	function chkName() {
	  if( $('#frmHIOrderName').val() == '' ) {
	    alert('Please enter report title (name)');
	    $('#frmHIOrderName').focus();
	    return false;
	  }
	  return true;
	}

	function chkEmail(){

	  if( $('#frmHIOrderEmail').val() == '' ) {
	    alert('Please enter email address');
	    $('#frmHIOrderEmail').focus();
	    return false;
	  }

	  if( $('#frmHIOrderEmail').val().indexOf('@') == -1
	    || $('#frmHIOrderEmail').val().indexOf('.') == -1 ) {
	    alert('Please enter valid email address');
	    $('#frmHIOrderEmail').focus();
	    /* $('#frmHIOrderEmail').select(); */
	    return false;
	  }

	  return true;
	}

	/*
	 * DaysArray
	 * Used by chkDate
	 */
	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 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 chkDate(){
	  var daysInMonth = DaysArray(12);
	  var day = $('#frmHIOrderBirthday').val();
	  var month = $('#frmHIOrderBirthmonth').val();
	  var year = $('#frmHIOrderBirthyear').val();
	  var minYear = 1900;
	  var maxYear = 2100;
	  /* validate month */
	  if ( month < 1 || month > 12 ) {
	    alert("Please enter a valid month");
	    $('#frmHIOrderBirthmonth').focus();
	    return false;
	  }
	  /* validate day */
	  if ( day < 1 || day > 31 || (month == 2 && day > daysInFebruary(year)) || day > daysInMonth[month]){
	    alert("Please enter a valid day");
	    $('#frmHIOrderBirthday').focus();
	    return false;
	  }
	  if ( year == 0 || year < minYear || year > maxYear){
	    alert( "Please enter a valid 4 digit year between " + minYear + " and " + maxYear );
	    $('#frmHIOrderBirthyear').focus();
	    return false;
	  }
	  return true;
	}

	function chkTime() {
	  var hour = $('#frmHIOrderBirthhour').val();
	  var minute = $('#frmHIOrderBirthminute').val();
	  if( hour < 0 || hour > 23 ) {
	    alert( 'Please enter a valid time' );
	    $('#frmHIOrderBirthhour').focus();
	    return false;
	  }
	  if( minute < 0 || minute > 59 ) {
	    alert( 'Please enter a valid time' );
	    $('#frmHIOrderBirthminute').focus();
	    return false;
	  }
	  return true;
	}

	function chkPlace() {

	  if( $('#frmHIOrderBirthplace').val() == '' ) {
	    alert('Please enter birth place');
	    $('#frmHIOrderBirthplace').focus();
	    return false;
	  }

	  var url = 'proxy.php'
	    + '?method=validatePlace'
	    + '&state=' + $('#frmHIOrderBirthcountry').val()
	    + '&place=' + $('#frmHIOrderBirthplace').val();
	  $.getJSON(
	    url,
	    function( data ) {
	      if( data.result == 'ok' ) {
		return true;
	      } else {
		return false;
	      }
	    }
	  );
	  return true;
	}

	$('#frmHIOrderActivityIndicator').css('display','inline');

	if( chkName()  == false ) { return false; }
	if( chkEmail() == false ) { return false; }
	if( chkDate()  == false ) { return false; }
	if( chkTime()  == false ) { return false; }
	if( chkPlace() == false ) { return false; }

	$('#frmHIOrderActivityIndicator').css('display','none');
	$('#frmHIOrderSubmit').css('display','none');
	$('#frmHIOrderSubmitButton').css('display','inline');
	return true;
      }
    );

  } /* function */

  /* end of ready context */
);

