/*
 * lastminute.js (www.settour.sk)
 * Provides functions used for the lastminute offers
 */

/**
 * templates/lastminute/orderform.js
 */
function ofAddPersRow()
{
  var total_persons = $F('total_persons');
  var rowIndex  = $('of_persdetails').select('tr.person').length;

  // less rows than desired: add one
  if ( rowIndex < total_persons )
  {
    for (var i = rowIndex; rowIndex < total_persons; rowIndex++)
    {
      var rowHtml =
        '<tr class="person" id="of_persdetails_row'+ rowIndex +'">'
          + '<td><select name="class_'+ rowIndex +'" id="class_'+ rowIndex +'" size="1" onchange="activeDate(this, '+ rowIndex +');">'
          + '<option value="0"></opion><option value="Pani">Pani</opion><option value="Pán">Pán</opion>'
          + '<option value="Dieta">Dieta</option></select></td>'
          + '<td><input type="text" name="name_'+ rowIndex +'" id="name_'+ rowIndex +'" style="width:170px;" class="required" /></td>'
          + '<td><input type="text" name="surname_'+ rowIndex +'" id="surname_'+ rowIndex +'" style="width:170px;" class="required" /></td>'
          + '<td><input type="text" name="birth_'+ rowIndex +'" id="birth_'+ rowIndex +'" style="width:70px;" disabled="disabled"  /></td>'
          + '</tr>';

      if ( rowIndex == 0 ) {
        Element.insert($('of_persdetails').down('tr', 0), {after: rowHtml} );
      } else {
        Element.insert($('of_persdetails').down('tr', (rowIndex)), {after: rowHtml} );
      }

      // error message for form validator
      var errorHtml = '<li id="advice-name_'+rowIndex+'" class="validation-errormsg" style="display:none;">Prosim zadajte do '+ (rowIndex+1) +'. riadku meno.</li>';
      errorHtml     += '<li id="advice-surname_'+rowIndex+'" class="validation-errormsg" style="display:none;">Prosim zadajte do '+ (rowIndex+1) +'. riadku priezvisko.</li>';
      errorHtml     += '<li id="advice-birth_'+rowIndex+'" class="validation-errormsg" style="display:none;">Prosim zadajte do '+ (rowIndex+1) +'. riadku dátum narodnena vo forme dd.mm.rrrr.</li>';

      var errFrame    = $('of_errorgroup');
      Element.insert(errFrame, {bottom: errorHtml} );

    }

  }
  // remove empty cells
  else {

    var errFrame    = $('lmsk_errorframe');
    var number_rows = rowIndex;

    // delete superfluous rows if they are empty
    while ( number_rows > total_persons )
    {
      var pname   = $F( 'name_'+ (rowIndex-1) ).strip();
      var surname = $F( 'surname_'+ (rowIndex-1) ).strip();
      if ( $F('class_'+ (rowIndex-1)) == 'child' )
        var birth   = $F( 'birth_'+ (rowIndex-1) ).strip();

      if ( !pname && !surname && !birth ) {
        $('of_persdetails_row' + (rowIndex-1)).remove();

        // delete related error messages
        $('advice-name_'+(rowIndex-1)).remove();
        $('advice-surname_'+(rowIndex-1)).remove();
        $('advice-birth_'+(rowIndex-1)).remove();

        number_rows--;
      }
      rowIndex--;
    }

  }

}

function ofSendOrder()
{
  // add custom validation rules
  Validation.add('validate-birth', 'Prosim zadajte platné dátum narodenia', {
    pattern : new RegExp("^[0-9]{2}\.[0-9]{2}\.[0-9]{4}$"),
    minLength : 8,
    maxLength : 10
  });

  // check customer input
  var formValidator = new Validation('lmorder', {onSubmit:false});
  formValidator.reset();
  if ( !formValidator.validate() ) {
    $('of_errorframe').style.display  =  'block';
    return false;
  }

  // write used indexes for user data fields into 'userdataindexes'
  var detailRow = new Array();
  var indexes   = new Array();
  detailRow     = $('of_persdetails').select('tr.person')

  while ( row = detailRow.shift() )
  {
    var inputName    = row.select('input')[0].name;
    inputName.match(/^name_(\d*)$/);
     indexes.push(RegExp.$1);
  }

  $('userdataindexes').value  = indexes.join('.');

  submitFormButton($('lmorder'));
}

function activeDate(caller, rowId)
{
  var bInput  = $('birth_' + rowId);

  if ( caller.value == 'Dieta') {
    bInput.enable();
    bInput.addClassName('required validate-birth');
 } else {
  bInput.value  = '';
  bInput.removeClassName('required validate-birth');
  bInput.removeClassName('validation-failed');
  $('advice-birth_'+rowId).style.display = 'none';
  bInput.disable();
}

}