
  //loading this Array in step6
  var inputArray = Array();//input fields names
  var msgArray   = Array();//validation messages
  
  function setErrorStyle(obj,_c)
  {
    try{
        obj.style.borderColor = '#d43500';
      obj.style.backgroundColor = '#ffe0d6';
    }catch(e){
      //alert(e.message);
    }
    return false;
  }
  function setOkStyle(obj, _c)
  {
    try{
    if(obj && obj.tagName == 'INPUT' && (obj.type.toUpperCase()=="RADIO" || obj.type.toUpperCase()=="CHECKBOX"))
      {
        obj.style.border = '0px';
        obj.style.backgroundColor = 'inherit';
      }
      else
      {
        obj.style.borderColor = '';
        obj.style.backgroundColor = 'white';
      }
    }catch(e){
      //alert(e.message);
    }
    return true;
  }

  function unicodehtml2utfhtml(s)
  {
    var hex = "0123456789ABCDEF";
    while   ( ((i=s.indexOf('%C3%'))>=0) || ((i=s.indexOf('%c3%'))>=0) )
    { s=s.substring(0,i)+'%'+hex.charAt(parseInt(s.substring(i+4,i+5),16)+4)+s.substring(i+5);
    }
    return(s);
  }

  function sendReservationIBE(acceptQuestion, transfer)
  {
    document.transfer = transfer;
    sendReservation(acceptQuestion);
    return false;
  }


   function checkDate(_month, _day, _year) {
     return true;
     if(!_day || !_year){
       _year  = _month.substr(4,4);
       _day   = _month.substr(0,2);
       _month = _month.substr(2,2);
     }
    var myDate = new Date();

    myDate.setFullYear( parseInt(_year), parseInt(_month)-1, parseInt(_day) );
    myDate.setMonth(parseInt(_month)-1);
    myDate.setDate(parseInt(_day));
    if ( myDate.getMonth() != parseInt(_month)-1 ) 
      return false;
     else 
      return true;
    
  }

  function sendReservation(acceptQuestion)
  {
    var i=0, inp=0, elem,  maxlength=0;
    var err = new Array();
    var resForm = document.getElementById('reservation');
    var errCount = 0;
    var url = '';
    var urltran = '';
    var msgTran = '';
    var mod  = document.searchtype;
    var tran = document.transfer;
    var errAlert = false;

    if( (resForm) && (inputArray) && (inputArray.length) )
    {

      //chack al dates
      
      for( inp=0; inp<inputArray.length; inp++ )
      { 
        if( resForm.elements[inputArray[inp]] )
        { 
          elems = resForm.elements[inputArray[inp]];
          i=0;
          do
          { 
            if (elems.length)
              elem = elems[i];
            else
              elem = elems;
            if (elem)
            { 
              if(elem.name == 'participant_age[]'||elem.name == 'payer_age[]'){
                if(!checkDate(elem.value)){
                  err[0] = elem;
                  err[1] = 10;
                  setErrorStyle(elem);
                  ++errCount;
                }
                else
                  setOkStyle(elem);
              }
              else if ( ((elem.type=='text') && (elem.value.length==0)) ||
                   ((elem.type=='checkbox') && (elem.checked==false)) ||
                    !isFilledCorrect(elem) )
              {
                err[0] = elem;
                err[1] = inp;
                setErrorStyle(elem);
                ++errCount;
              }
              else
              { setOkStyle(elem);
                //url += inputArray[inp]+'='+encodeURI(elem.value) + '&';
              }
            }
            i++;
          } while( i<elems.length )
        }
      }//end for

      if ((mod=='NH') && (tran==1))
      { //if (!(urltran=GetTransfersArrayIBE()))
        if (!GetTransfersArrayIBE())
        { //row.style.backgroundColor='#ebf6be';
          msgTran = msgArray[15];
        }
      }

      if( !err.length && (msgTran=='') )
      {
        if( confirm( acceptQuestion ) )
        {
          resForm.submit();
          return false;
        }
      }
      if( msgArray )
      { if ( (errCount > 1) && msgArray[13] )
        { alert(msgArray[14]+' !' );
          errAlert = true;
        }
        else if( msgArray[err[1]] )
        { alert( msgArray[err[1]]+' !' );
          errAlert = true;
        }
      }
      if ( (!errAlert) && (msgTran != '') )
      { alert(msgTran);
      }
    }
    return false;
  }

  function fillForm(formName)
  {
    var resForm = document.getElementById('reservation');
    resForm['payer_firstname[]'].value    = 'Alan';
    resForm['payer_lastname[]'].value     = 'Test';
    resForm['payer_street[]'].value       = 'TestStreet';
    resForm['payer_citycode[]'].value     = '53173';
    resForm['payer_city[]'].value         = 'Bonn';
    resForm['payer_privphone[]'].value    = '00000000';
    resForm['payer_note[]'].value         = '00000000';
    resForm['payer_email[]'].value        = 'test@testxxxxxx.com';
    resForm['payer_contactphone[]'].value = '00000000';
    resForm['payer_esquire[]'].value      = 'Mr';
    var putage = 30;
    var now = new Date();
    var putmonth = parseInt(now.getMonth(),10)+1;
    putmonth = putmonth < 10 ? '0'+putmonth : putmonth;
    var putyear = new Number(parseInt(now.getFullYear(),10) - putage);
    putyear = putyear.toString(10).substr(2, 2);
    resForm['payer_age[]'].nextSibling.value = '01'; //now.getDate();
    resForm['payer_age[]'].nextSibling.onchange();
    resForm['payer_age[]'].nextSibling.nextSibling.value = putmonth;
    resForm['payer_age[]'].nextSibling.nextSibling.onchange();
    resForm['payer_age[]'].nextSibling.nextSibling.nextSibling.value = putyear;
    resForm['payer_age[]'].nextSibling.nextSibling.nextSibling.onchange();
    for( var i=0; i<resForm['participant_firstname[]'].length; i++)
    {
      resForm['participant_lastname[]'][i].value   = 'Test';
      resForm['participant_firstname[]'][i].value  = 'TEST'+String.fromCharCode(65+i);
      if (resForm['participant_sex[]'][i].value == 'B' || resForm['participant_sex[]'][i].value == 'K')
        continue;
      resForm['participant_sex[]'][i].value        = 'H';
      resForm['participant_age[]'][i].nextSibling.value = '01'; //now.getDate();
      resForm['participant_age[]'][i].nextSibling.onchange();
      resForm['participant_age[]'][i].nextSibling.nextSibling.value = putmonth;
      resForm['participant_age[]'][i].nextSibling.nextSibling.onchange();
      resForm['participant_age[]'][i].nextSibling.nextSibling.nextSibling.value = putyear;
      resForm['participant_age[]'][i].nextSibling.nextSibling.nextSibling.onchange();
    }
    checkForm();
  }

  function tmgSendForm(formid)
  {
    var resForm = document.getElementById(formid);

    if(!resForm)
    {
      throw new Error('No form');
      return true;
    }
    var err = Array();
    function c(/*field */name, id/*in msgArray*/)
    {
      try{
      if(resForm[name].value.length > 0)
        return setOkStyle(resForm[name]);
      else
      {
        err[err.length] = msgArray[id];
        return setErrorStyle(resForm[name]);
      }
      }catch(e){
        //alert(e.message+'\nfield name'+name);
      }
    }
    function d(name, id, i)
    {
      if(resForm[name][i].value.length > 0)
        return setOkStyle(resForm[name][i]);
      else
      {
        err[err.length] = '('+(i+1) +') '+msgArray[id];
        return setErrorStyle(resForm[name][i]);
      }
    }

    function n(name, id, i)
    {
      if(resForm[name][i].value == Number(resForm[name][i].value))
        return setOkStyle(resForm[name][i]);
      else
      {
        err[err.length] = '('+(i+1) +') '+msgArray[id];
        return setErrorStyle(resForm[name][i]);
      }
    }

    c('payer_firstname[]',1);
    c('payer_lastname[]',0);
    c('payer_street[]',2);
    c('payer_citycode[]',3);
    c('payer_city[]',4);
    c('payer_privphone[]',5);

    for( var i=0; i<resForm['participant_firstname[]'].length; i++)
    {
      d('participant_lastname[]',8,i);
      d('participant_firstname[]',9,i);
      n('participant_age[]',10,i);
    }
    if(err.length > 0)
    {
      alert(err.join('\n'));
      return false;
    }
    else
      return true;
  }
  
function GetTransfersArrayIBE()
{ //var elem=document.forms.TransferForm.elements;
  var elem = new Array();
  elem[0]  = document.getElementById("t11");
  elem[1]  = document.getElementById("t12");
  elem[2]  = document.getElementById("t13");
  elem[3]  = document.getElementById("t14");
  elem[4]  = document.getElementById("t15");
  elem[5]  = document.getElementById("t16");
  elem[6]  = document.getElementById("t17");
  elem[7]  = document.getElementById("t18");
  elem[8]  = document.getElementById("t19");
  elem[9]  = document.getElementById("t20");
  elem[10]  = document.getElementById("t21");
  elem[11]  = document.getElementById("t22");
  elem[12]  = document.getElementById("t23");
  elem[13]  = document.getElementById("t24");
  elem[14]  = document.getElementById("t25");
  elem[15]  = document.getElementById("t26");
  elem[16]  = document.getElementById("t27");
  elem[17]  = document.getElementById("t28");
  elem[18]  = document.getElementById("t29");
  elem[19]  = document.getElementById("t30");
  var i=0;
  //var url=new Array();
  var status = true;
  l=elem.length;
  for (i=0;i<l;i++)
  { //url[url.length]=(elem[i].name+'='+elem[i].value);
     // check typed values
    if (elem[i] && elem[i].value.length != 0)
    {  //day
       if (elem[i].id=='t11' || elem[i].id=='t21')
       {  if (isNaN(elem[i].value)) 
            elem[i].value = '';
          else if ((elem[i].value < 1) || (31 < elem[i].value))
            elem[i].value = '';
          else if (elem[i].value < 10)
          { var vv = elem[i].value;
            vv = '0' + vv;
            elem[i].value = vv.substr(vv.length - 2, 2);
          }
       }
       //month
       if (elem[i].id=='t12' || elem[i].id=='t22')
       {  if (isNaN(elem[i].value)) 
            elem[i].value = '';
          else if ((elem[i].value < 1) || (12 < elem[i].value))
            elem[i].value = '';
          else if (elem[i].value < 10)
          { var vv = elem[i].value;
            vv = '0' + vv;
            elem[i].value = vv.substr(vv.length - 2, 2);
          }
       }
       //year
       if (elem[i].id=='t13' || elem[i].id=='t23')
       {  if (isNaN(elem[i].value)) 
            elem[i].value = '';
          else if ((elem[i].value < 2007) || (2030 < elem[i].value))
            elem[i].value = '';
       }
       //date valid
       if (elem[i].id=='t11' || elem[i].id=='t21')
       { if ((elem[i].value.length != 0) && (elem[i+1].value.length != 0) && (elem[i+2].value.length != 0))
         {  //var dd = elem[i].value + '.' + elem[i+1].value + '.' + elem[i+2].value;
            //is date?  no ==> 
            //elem[i+1].id = '';
            //elem[i+2].id = '';
         }
       }
       else if(elem[i].id == 't14' || elem[i].id == 't24')
       {  //fly no
       }
       else if(elem[i].id == 't15' || elem[i].id == 't16'
            || elem[i].id == 't25' || elem[i].id == 't26')
       {  //FROM - to
         if(elem[i].value.length != 3)
           elem[i].value ='';
       }
       
       //hour
       if (elem[i].id == 't17' || elem[i].id == 't19' || elem[i].id == 't27' || elem[i].id == 't29')
       {  if (isNaN(elem[i].value)) 
            elem[i].value = '';
          else if ((elem[i].value < 0) || (23 < elem[i].value))
            elem[i].value = '';
          else if (elem[i].value < 10)
          { var vv = elem[i].value;
            vv = '0' + vv;
            elem[i].value = vv.substr(vv.length - 2, 2);
          }
       }
       //minute
       if (elem[i].id == 't18' || elem[i].id == 't20' || elem[i].id == 't28' || elem[i].id == 't30')
       {  if (isNaN(elem[i].value)) 
            elem[i].value = '';
          else if ((elem[i].value < 0) || (59 < elem[i].value))
            elem[i].value = '';
          else if (elem[i].value < 10)
          { var vv = elem[i].value;
            vv = '0' + vv;
            elem[i].value = vv.substr(vv.length - 2, 2);
          }
       }
     }
     
     //check and automatic fill
     if (elem[i] && elem[i].value.length == 0)
     { status = false;
       //elem[i].className += ' errField';
       setErrorStyle(elem[i]);
       
       if (elem[i].id=='t11')
       {  if ((elem[i+1].value.length==0) && (elem[i+2].value.length==0))
            { //var td = document.forms.SearchForm['tripdate[]'].value;
              //var td = document.forms[0].elements.datestart.value;
              var td = '{mi:datestart}';  //dd.mm.yyyy
              elem[i].value   = td.substr(0,2);
              elem[i+1].value = td.substr(3,2);
              elem[i+2].value = td.substr(6,4);
            }
       }
       else if (elem[i].id =='t21')
       {  //elem[i].value = document.forms.SearchForm['tripdatemax[]'].value;
          if ((elem[i+1].value.length==0) && (elem[i+2].value.length==0))
            { //var td = document.forms.SearchForm['tripdatemax[]'].value;
              //var td = document.forms[0].elements.dateend.value;
              var td = '{mi:dateend}';  //dd.mm.yyyy
              elem[i].value   = td.substr(0,2);
              elem[i+1].value = td.substr(3,2);
              elem[i+2].value = td.substr(6,4);
            }
       }
       else if (elem[i].id =='t16' || elem[i].id =='t25')
         elem[i].value = document.forms[0].elements.desCode.value;
     }
     else
     {  setOkStyle(elem[i]);
     }
  }
  //if(status)
  //  return url;
  //else
  //  return false;
  return status;
}

function openwin()
{
  if ((arg=openwin.arguments).length==5)
    openwin2(arg[0],arg[1],arg[2],arg[3],arg[4]);
  else
    openwin1(arg[0],arg[1]);
}

function openwin2(name, width, height, path, onTop)
{
  alwaysOnTop = onTop;
  var myWin = window.open(path, name, 'channelmode=0,directories=0,fullscreen=0,location=0,menubar=1,resizable=1,scrollbars=1,status=0,titlebar=0,toolbar=0,width='+width+',height='+height);
  try     {myWin.focus();}
  catch(e){};
}

function openwin1(url,name)
{
  url=url.replace(/amp;/g,'');
  if ((name=='MASK') || (name=='MASKX'))
    params='width=740,height=780,scrollbars=1,resizable=1,menubar=1';
  else
    params='';
  if (url.indexOf('searchtype')>=0)
    window.open(url+"&sid="+document.forms.SearchForm['sid'].value,name,params);
  else
    window.open(url+"&sid="+document.forms.SearchForm['sid'].value+"&searchtype="+document.searchtype,name,params);
}


function bdate(pr,lv)
{
  while (lv>0) {lv--;pr=pr.previousSibling};
  var sl=pr;
  var od='';
  var i;
  for (i=1;i<4;i++){ sl=sl.nextSibling; od+=''+sl.value}
  pr.value=od;
}

function bfval(obj,req)
{
  try{
    var x;
    if (obj.name=='esquire[]')
      if (x=document.getElementById('f110'))
        x.selectedIndex=obj.seletecIndex;
    
    if (obj.name=='payer_firstname[]')
      if (x=document.getElementById('f111'))
        x.value=obj.value;
    
    if (obj.name=='payer_lastname[]')
      if (x=document.getElementById('f112'))
        x.value=obj.value;
    if (obj.getAttribute('vtype')=='day' && obj.id == 'f104')
    {
      if (x=document.getElementById('f114'))
      {
        x.value=obj.value;
        x.onchange();
      }
    }
    if (obj.getAttribute('vtype')=='month' && obj.id == 'f105')
    {
      if (x=document.getElementById('f115'))
      {
        x.value=obj.value;
        x.onchange();
      }
    }
    if (obj.getAttribute('vtype')=='year' && obj.id == 'f106')
    {
      if (x=document.getElementById('f116'))
      {
        x.value=obj.value;
        x.onchange();
      }
    }
  }catch(ex){}
  if ((obj.getAttribute('req')!='true') && (obj.value==''))
  {
    setOkStyle(obj)
    obj.className='inp_ok '+(obj.type || 'text');
    return true;
  }
    
  if (isFilledCorrect(obj))
  {
    setOkStyle(obj)
    obj.className='inp_ok '+(obj.type || 'text');
    return true;
  }
  setErrorStyle(obj);
  obj.className='inp_err';// '+obj.type;
  return false;
}

function checkForm()
{
   var elem=document.getElementById('reservation').elements;
   var ok=true;
   for (var i=0;i<elem.length;i++)
     if (!bfval(elem[i])) ok=false;
     
   return ok;  
}

function isFilledCorrect(obj)
{
  var vtype=obj.getAttribute('vtype');
  switch (vtype)
  {
    case 'month':
    case 'day':
    case 'year':
    case 'gender': return obj.value!='';
    case 'text': return obj.value.length>2;
    case 'code':
       obj.value=obj.value.replace(/([^0-9a-z\-])+/i,'');
       return obj.value.length>4;    
    case 'phone': 
       obj.value=obj.value.replace(/([^0-9()\-+\/])+/i,'');
       return obj.value.length>6;
       
    case 'num': return obj.value.length>2;        
    case 'email': return /^[^\s()<>@,;:\/]+@\w[\w\.-]+\.[a-z]{2,}$/i.test(obj.value);
    
    case 'street': return /^.+?\s+[0-9\/]+$/i.test(obj.value);
    
    default:
      return true;    
  }

}

