var _activeStep = 0;

_steps = new Array
(
  new Step("step 1", 0, false),
  new Step("step 2", 1, false),
  new Step("step 3", 2, false),
  new Step("step 4", 3, false),
  new Step("step 5", 4, false),
  new Step("step 6", 5, false)    
);

function initEvents()
{
  document.getElementById("kop0").onclick = jumpToStep;
  document.getElementById("kop1").onclick = jumpToStep;
  document.getElementById("kop2").onclick = jumpToStep;
  document.getElementById("kop3").onclick = jumpToStep;
  document.getElementById("kop4").onclick = jumpToStep;
  document.getElementById("kop5").onclick = jumpToStep;    
  _steps[0].render();
  window.setTimeout('sessionExpired()', 1000 * 60 * 60);  // minuten
}

function sessionExpired()
{
  window.onbeforeunload=function(){};
  alert('Uw sessie is verlopen. Omdat de prijs en beschikbaarheid van vliegtickets sterk fluctuerend zijn, moet u opnieuw de stappen doorlopen.');
  window.location.reload();
}

// class Step
function Step(name, id, valid) 
{
  var clickedStep;
  this.name = name;
  this.valid = valid;
  this.id = id;
}

  Step.prototype.myReady = function( r ) 
  {
    if ( r ) parseStep ( r, clickedStep );
  }

  Step.prototype.post = function() 
  {
    XFormSubmit( document.forms["step" + this.id], 'content' + this.id, this.myReady );
  }
  
  Step.prototype.render = function()
  {
    helpDiv = document.getElementById( "help" + this.id );
    helpDiv.style.visibility = 'visible';

  	document.getElementById( 'content' + (this.id) ).innerHTML = '<img src="../pics/wizard/loading.gif">';
 	
    location.hash = 'div' + (this.id);
    Xpost("xml/step" + this.id + ".php", "action=render", "content" + this.id, stepMyReady);
    google ( this.id + 1 );
  }

  function stepMyReady()
  {
    enableTooltips();
    // hack voor de hotels; initializeren!
    try
    {
      initSlide()
    }
    catch ( e )
    {}
  }

// ---



function parseStep( xmlObject, clickedStep )
{
  step = xmlObject.documentElement.getElementsByTagName('step')[0].firstChild.data;

  errorTree = xmlObject.documentElement.getElementsByTagName('errors');
  validTree = xmlObject.documentElement.getElementsByTagName('valid');

  if ( errorTree.length )
  {
    errorFields = errorTree[0].getElementsByTagName('field');
    for (x=0; x<errorFields.length; x++)
    {
      name = errorFields[x].getElementsByTagName('name')[0].firstChild.data;
      message = errorFields[x].getElementsByTagName('message')[0].firstChild.data;
      code = errorFields[x].getElementsByTagName('code')[0].firstChild.data;

      switch ( code )
      {
        case 'CONFIRM':
          hiLightError( name );
          if ( confirm ( message ) ) 
            completeStep( step, validTree, clickedStep);
        break;
        
        default:
          hiLightError(name, message);
        break;
      }
      break;
    }
  }
  else
  {
    if ( validTree.length )
    {
      completeStep( step, validTree, clickedStep);
    }
  }
}

function completeStep(step, validTree, clickedStep)
{
  toDiv = document.getElementById( "content" + step );
  
  validCode = validTree[0].getElementsByTagName("htmlcode");
  toDiv.innerHTML = validCode[0].firstChild.data;
  
  if ( subtotaal = document.getElementById('subtotaal_' + (_activeStep - 1) ) )
  subtotaal.style.display = "none";
  
  finishStep (_activeStep);
  activateStep(clickedStep);
}


function hiLightError(name, message)
{
  if ( fe = document.forms[0][name] )
  {
    if ( fe.style && fe.type != 'hidden' ) 
    {
      fe.style.backgroundColor='#fba';
      fe.focus();
    }
  }
  if ( message ) alert (message);
}

function activateStep(step)
{
  _steps[ step ].render();  

  div = document.getElementById("div" + step);
  div.className = "stepActive";

  _activeStep = step;
}

function disableStep(step)
{
  div = document.getElementById("div" + step);
  div.className = "step";

  helpDiv = document.getElementById( "help" + step );
  helpDiv.style.visibility = 'hidden';
}


function finishStep(step)
{
  div = document.getElementById("div" + step);
  div.className = "stepDone";

  helpDiv = document.getElementById( "help" + step );
  helpDiv.style.visibility = 'hidden';
}

function nextStep()
{
  clickedStep = _activeStep + 1;
  _steps[ _activeStep ].post();
}

function jumpToStep(e)
{
  var current, related;
  if (window.event) {          // IE
    current = this;
    related = window.event.toElement;
  }
  else {
    current = e.currentTarget;
    related = e.relatedTarget;
  }

  clickedStep = parseInt( current.id.replace(/kop/g, ""), 10 );
  _activeStep = parseInt( _activeStep, 10 );

  if ( clickedStep != _activeStep )
  {
    if ( clickedStep == _activeStep + 1 )
    {
      _steps[ _activeStep ].clickedStep = clickedStep;
      _steps[ _activeStep ].post();
    }
    else if ( clickedStep <= _activeStep)
    {
      for (x=0; x<_activeStep - clickedStep; x++)
      {
        if ( subtotaal = document.getElementById('subtotaal_' + (clickedStep - 1) ) )
        subtotaal.style.display = "";

        disableStep(_activeStep - x);
      }

      activateStep(clickedStep);
    }
    else
    {
      if ( message = document.getElementById( 'jump_error' ).innerHTML )
      {
        alert ( message );
      }
    }
  }
}

function disableRow( t, c )
{
  cbArray = getElementsByClassName(document, '*', c);
	if ( t.checked )
	{
		for ( x=0; x<cbArray.length-1; x++)
		{
	  	cbArray[x].disabled = true;
	  	cbArray[x].checked = false;
	  }
	}
	else
	{
	  if (c == 'annuleringExtra') return;
		for ( x=0; x<cbArray.length-1; x++)
	  	cbArray[x].disabled = false;
	}
}

function enableAanvullend ( c )
{
  cb = document.getElementById('aanvullend_' + c);
  cb.disabled = (cb.disabled?false:true);
}

function enableAllAanvullend ( c )
{
  cbArray = getElementsByClassName(document, '*', 'annuleringExtra');
  for ( x=0; x<cbArray.length-1; x++)
	{
	  	cbArray[x].checked = false;
	  	cbArray[x].disabled = true;
	}
  
  cb = document.getElementById('aanvullend_' + c);
  cb.disabled = (cb.disabled?false:true);  
  cb.checked = (cb.checked?false:false); 
}

function getElementsByClassName(oElm, strTagName, strClassName)
{
    var arrElements = (strTagName == "*" && document.all) ? document.all : oElm.getElementsByTagName(strTagName);
    var arrReturnElements = new Array();
    strClassName = strClassName.replace(/\-/g, "\\-");
    var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
    var oElement;
    for(var i=0; i<arrElements.length; i++)
    {
        oElement = arrElements[i];      
        if(oRegExp.test(oElement.className))
        {
            arrReturnElements.push(oElement);
        }   
    }
    return (arrReturnElements)
}

function renderFlightBlock( s )
{
  document.getElementById('loadingText').innerHTML = s;
  if( showIbox('#inner_content','', parseQuery('height=120&width=420') ) )
    showBG();
  Xpost("xml/getFlights.php", "x=1", "vluchtenContent", flightsMyReady);
}

  function flightsMyReady()
  {
    document.getElementById('hotelsVluchtenKnop').style.display = 'none';
    enableTooltips();
  
    try 
    {
      initSlide();
    }
    catch ( e )
    {}
    hideIbox();
  }

function startSearch( bedVerdeling, s1, s2 )
{
  document.getElementById('loadingText').innerHTML = s1;
  if( showIbox('#inner_content','', parseQuery('height=120&width=420') ) )
    showBG();

  Xpost("xml/getHotels.php", "bedVerdeling=" + bedVerdeling, "hotelsContent", function(r){renderFlightBlock(s2)});
}

function dateChange(x)
{
  Xpost('xml/datum.php', 'changeMyDate=' + x, 'datumContent', dateMyReady);
}

  function dateMyReady()
  {
    if ( document.getElementById('vluchtenContent') ) 
      document.getElementById('vluchtenContent').innerHTML = '';
    if ( document.getElementById('hotelsContent') )
      document.getElementById('hotelsContent').innerHTML = '';
    if ( document.getElementById('hotelsVluchtenKnop') )
      document.getElementById('hotelsVluchtenKnop').style.display = 'block';
    enableTooltips();
  }

function finalStep( lead_str, av_str, p_method_str )
{
  f = document.forms['step5'];
  opmerkingen = f['opmerkingen'].value;
  aanbetaling = ( f['aanbetaling'] ) ? f['aanbetaling'].value : null;
  
  lead = f['lead'].options[f['lead'].selectedIndex].value;

  /*
  try {
    for ( x=0; x<f['aanbetaling'].length; x++ )
    {
      if ( f['aanbetaling'][x].checked )
      {
        aanbetaling = f['aanbetaling'][x].value;
      } 
    }
  }
  catch(e)
  {}
  */
  
  if ( f['p_method'].options )
  {
	  p_method = f['p_method'].options[f['p_method'].selectedIndex].value;
	}
	else
	{
		p_method = f['p_method'].value;
	}
	
  av = f['av'].checked?true:false;

  if ( !lead )
  {
    hiLightError('lead', lead_str )
    return false;
  }

  if ( !av )
  {
    hiLightError('av', av_str )
    return false;
  }

  if ( !p_method )
  {
    hiLightError('p_method', p_method_str )
    return false;
  }

  url = 'action=final';
  
  if (opmerkingen) url += '&opmerkingen=' + encodeURIComponent(opmerkingen);
  if (lead) url += '&lead=' + encodeURIComponent(lead);
  if (p_method) url += '&p_method=' + encodeURIComponent(p_method);
  if (av) url += '&av=' + encodeURIComponent(av);
  if (aanbetaling) url += '&aanbetaling=' + encodeURIComponent(aanbetaling);

  showIbox('#loading_content','', parseQuery('height=80&width=70') );
  window.onbeforeunload=function(){};

  //Xpost('xml/step5.php', url, null, function(r){hideIbox(); document.write( r )});    // debug
  Xpost('xml/step5.php', url, null, function(r){hideIbox(); window.location.href=r}); //live
}

function updatePricePayMethod(f)
{
  try 
  {
    p_method = f.options[f.selectedIndex].value;
    if ( p_method == 'C' ) alert ('Voor creditcardbetalingen worden 3,5% transactiekosten in rekening gebracht.');
    Xpost('xml/payMethod.php', 'p_method=' + p_method, 'totaalbedrag', function(r){});
    //Xpost('xml/payMethod.php', 'p_method=' + p_method, 'totaalbedrag_aanbetaling_2', function(r){});
    Xpost('xml/payMethod.php', 'p_method=' + p_method + '&half=true', 'totaalbedrag_aanbetaling_1', function(r){});
  }
  catch ( e )
  {}
}

function updateActie(f)
{
  actiecode = f.value;
  Xpost('xml/actie.php', 'actiecode=' + actiecode, 'totaalbedrag', function(r)
  {
    if ( r )
    {
      document.getElementById('update_actie').innerHTML = '<img src="../pics/wizard/accepted.gif">';
    }
  }
  );
}

function imageList( img, webentiteit_id, groot )
{
  i = img.src;
  
  t = img.title;
  w = img.width;
  h = img.height;

  var klein = 'square';
  var groot = groot?groot:300;
  var current_id = i.replace(/http:\/\/.*\/([0-9]*)_squarepx.jpg/, "$1" );
  
  i = i.replace(klein, groot);      // groot formaat
  i = i.replace(40, groot);      // kleiner formaat

  if ( groot == 'full' )        // hack for pronto
  {
    i = i.replace('px', ''); 
  }
  
  multi = groot/w;                  // factor voor juiste ratio
  w *= multi;
  h *= multi;

  h = Math.floor( h ) + 150;
  w = Math.floor( w ) + 254;

  document.getElementById('fotoSrc').innerHTML = '<center><img name="shPic" id="shPic" title="venster sluiten" style="cursor:pointer" onclick="hideIbox()" src="' + i + '" /></center>';
  document.getElementById('fotoTitel').innerHTML = t;

  myReady = function()
  {
    i = new Image();
    i.src = document.images['shPic'].src;
   
    if ( i.height == 0 )
    {
      i.height = document.images['shPic'].height;
    }
    h = i.height;
    
    if ( h == 0 )
    {
      h = 300;
    } 
    
    h += 150;
   
    showIbox( '#foto_content', '', parseQuery('height=' + h + '&width=' + 600 ) );
    showBG();
  }
  var id = document.getElementById( 'fotoThumbnails' );

  Xpost( 'xml/image_list.php', 'webentiteit_id=' + webentiteit_id + '&current_id=' + current_id, 'fotoThumbnails', myReady )
}

function showImg(img)
{
  i = img.src;
  t = img.title;
  w = img.width;
  h = img.height;

  var klein = 90;
  var groot = 300;

  i = i.replace(klein, groot);      // groot formaat
  i = i.replace(40, groot);      // kleiner formaat
  
    
  multi = groot/w;                  // factor voor juiste ratio
  w *= multi;
  h *= multi;

  h = Math.floor( h ) + klein;
  w = Math.floor( w ) + klein;
  
  document.getElementById('fotoSrc').innerHTML = '<center><img title="venster sluiten" style="cursor:pointer" onclick="hideIbox()" src="' + i + '" /></center>';
  document.getElementById('fotoTitel').innerHTML = t;

  var tn = document.getElementById('fotoThumbnails');
  tn.innerHTML = '';

  showIbox( '#foto_content','', parseQuery('height=' + h + '&width=' + w) );
  showBG();
}

function showImgClean(src, title, width, height)
{
  i = new myImage(src, title, width, height);
  showImg( i ) ;
}
function myImage( src, title, width, height )
{
  this.src = src;
  this.title = title;
  this.width = width;
  this.height = height;
}

function showInfoBoebel( id, t )
{
   var boebel = document.getElementById( id );
   boebel.innerHTML = unescape( t );
   boebel.style.display = 'block';
}

function x(){}

function google( step )
{
  //urchinTracker("/boeking/stap" + step + ".html");
  pageTracker._trackPageview("/boeking/stap" + step + ".html");
}

function swapFlights( type, s1, s2 )
{
 
  a = getElementsByClassName(document, '*', 'hideFlight_' + type);
  
  for ( var x=0; x<a.length; x++ )
  {
    if ( a[x] )
    {
      if ( navigator.appName == "Microsoft Internet Explorer" )
      {
        a[x].style.display = a[x].style.display == 'inline' ? '' : 'inline';
      }
      else
      {
        a[x].style.display = a[x].style.display == 'table-row' ? '' : 'table-row';
      }
    }
  }

  a = getElementsByClassName( document, '*', 'avtButton_' + type )
  for ( var x=0; x<a.length; x++ )
  {
    if ( a[x] )
    {
      a[x].innerHTML = a[x].innerHTML == s1 ? s2 : s1;
    }
  }

}

function swapFlightsOld()
{
 
  a = getElementsByClassName(document, '*', 'hideFlight' );
  
  for ( var x=0; x<a.length; x++ )
  {
    if ( a[x] )
    {
      if ( navigator.appName == "Microsoft Internet Explorer" )
      {
        a[x].style.display = a[x].style.display == 'inline' ? '' : 'inline';
      }
      else
      {
        a[x].style.display = a[x].style.display == 'table-row' ? '' : 'table-row';
      }
    }
  }

  a = getElementsByClassName( document, '*', 'swapFlightsKnop' )
  for ( var x=0; x<a.length; x++ )
  {
    if ( a[x] )
    {
      a[x].innerHTML = a[x].innerHTML == 'Toon' ? 'Verberg' : 'Toon';
    }
  }

}


function hoofdboekSelect(t)
{
  cbArray = getElementsByClassName(document, '*', 'cb');
  eArray = getElementsByClassName(document, '*', 'email');
  etArray = getElementsByClassName(document, '*', 'emailText');

  r = t.parentNode.parentNode;
  document.getElementById('personalia').style.display = 'block';
  
  for ( x=0; x<eArray.length; x++ )
  {
    eArray[x].disabled = false;
    eArray[x].style.display='inline';
    eArray[x].parentNode.parentNode.className = 'clear';
    etArray[x].innerHTML = '';

    if ( x==t.value )
    {
      r.className = 'hoofdboeker';
      //eArray[x].style.display='none';
      //etArray[x].innerHTML = '<b>Vul het emailadres van de hoofdboeker hieronder in.</b>';
    }
  }
  return true;
}

function updateAirports( v )
{
  if ( v )
  {
  	document.getElementById( 'airportsContent' ).innerHTML = '<img src="../pics/wizard/loading.gif">';
    Xpost( "xml/getAirports.php", "region=" + v, "airportsContent", function(r){} );
  }
  else
  {
    document.getElementById( 'airportsContent' ).innerHTML = '';
  }
}

