










// $Id: addConcession.js 1253 2010-11-08 14:38:42Z clinton $
var PaxQuestionnaire = new Object();
PaxQuestionnaire.questionHistory = new Array();
PaxQuestionnaire.questionnaireCallback = null;
PaxQuestionnaire.questions = new Hash();
PaxQuestionnaire.rootQuestion = null;
PaxQuestionnaire.responses = new Hash();
PaxQuestionnaire.prefix = '';
PaxQuestionnaire.ie6 = false;
Event.observe(window, 'load', function(){
  if (Prototype.Browser.IE) {
    var appVersion = navigator.appVersion;
    appVersion = parseFloat(appVersion.substr(appVersion.indexOf("MSIE")+5, 4));
    if (appVersion <= 6) {
      PaxQuestionnaire.ie6=true;
    }
  }
});

PaxQuestionnaire.addConcession = function (callback, prefix) {
  if (prefix == null) this.prefix = '';
  else this.prefix = prefix;
  this.questionHistory = new Array();
  this.questionnaireCallback = callback;
  this.askQuestion(this.rootQuestion);
}

PaxQuestionnaire.askQuestion = function (qid) {
  var question = this.questions.get(qid);
  if (question == null) this.selectType('ADU');

  for (var h = 0; h < this.questionHistory.length; h++) {
    if (this.questionHistory[h] == qid){
      this.questionHistory = this.questionHistory.slice(0,h);
      break;
    }
  }

  var results = new Array();
  for (var i = 0; i < question.responses.length; i++) {
    results[results.length] = this.responses.get(question.responses[i]);
  }
  var content = "<h3>Concession Holder " + (this.countConcessions(this.prefix)+1)+"</h3>";
  content += '<fieldset>';
  //content += '<legend>' + question.text + ' </legend>';
  content += '<ol>';
  for (var i = 0 ; i < results.length; i++) {
    content += '<li>';
    if (results[i].question) content += '<button class="questionnaire" onclick="PaxQuestionnaire.askQuestion('+results[i].question+')">' + results[i].text + '</button>';
    else if (results[i].ptc) content += '<button class="questionnaire" onclick="PaxQuestionnaire.selectType(\''+results[i].ptc+'\')">' + results[i].text + '</button>';
    content += '</li>';
  }
  content += '</ol></fieldset>';
  if (question.moreInfo != '' )
    content += '<p style="text-align:center"><a href="' + question.moreInfo+'" target="_blank">More Information</a></p>';

  content += '<input type="image" style="" id="cancelButton" class="backButton" value="Cancel" src="'+urlBase+'/design/images/buttons/cancel.gif" onclick="PaxQuestionnaire.selectType();return false"/>';
  if (this.questionHistory.length > 0)
    content += '<input type="image" style="" id="backButton" class="backButton" value="Cancel" src="'+urlBase+'/design/images/buttons/back.gif" onclick="PaxQuestionnaire.askQuestion('+this.questionHistory[this.questionHistory.length-1]+'); return false;"/>';

  this.questionHistory[this.questionHistory.length] = qid;

  $('paxQuestionnaireContent').update(content);
  $('paxQuestionnaire').style.height = 'auto';
  if (PaxQuestionnaire.ie6) {
    showFloaty('paxQuestionnaire', null, {
      element: $(this.prefix+"ptc_CNC"),
      left: 50
    });
  } else {
    showFloaty('paxQuestionnaire');
  }

}

PaxQuestionnaire.selectType = function (ptc, showWarnings) {
  hideFloaty('paxQuestionnaire');
  if (showWarnings == null) showWarnings = true;
  if (ptc != null && paxTypes.get(ptc) != null) {
    if ($(this.prefix+'ptc_'+ ptc) != null && $(this.prefix+'ptc_'+ ptc).type == 'select-one') {
      AniteDDB.setValue($(this.prefix+'ptc_'+ ptc), parseFloat($F(this.prefix+'ptc_'+ ptc)) + 1);
      Effect.Pulsate(this.prefix+'ptc_'+ptc);
      displayPaxWarning(ptc, errorMessage(ERR_RAIL_NOT_CONCESSION), this.questionnaireCallback);
    } else if ($(this.prefix+'ptc_'+ ptc) != null && $(this.prefix+'ptc_'+ ptc).type == 'hidden') {
      $(this.prefix+'ptc_'+ ptc).value = parseFloat($F(this.prefix+'ptc_'+ ptc)) + 1;
      this.setListItem(ptc);
      if (this.questionnaireCallback) {
        this.questionnaireCallback();
      };
    } else {
      $(this.prefix+'concessionFields').insert({
        bottom:
        '<input type="hidden" class="paxType" name="ptc_'+ptc+'" id="'+this.prefix+'ptc_'+ptc+'" value="1"/>' +
        '<input type="hidden" name="ages_'+ptc+'" id="'+this.prefix+'ages_'+ptc+'" value=""/>'
      });
      this.setListItem(ptc);
      if (showWarnings) displayPaxWarning(ptc, null, this.questionnaireCallback);
      else if (this.questionnaireCallback) this.questionnaireCallback();
    }
  }
  AniteDDB.setValue($(this.prefix+'ptc_CNC'), this.countConcessions(this.prefix));
  if (this.countConcessions(this.prefix) > 0) {
    $(this.prefix+'ptc_CNC').disable();
    $(this.prefix+'concessionBlock').show();
  }
  $(this.prefix+'ptc_CNC').form.fire("anite:paxChange");
}

PaxQuestionnaire.setListItem = function (ptc) {
  var paxCount = parseFloat($F(this.prefix+'ptc_'+ ptc));
  var content = '<a class="remove imgReplace png" onclick="PaxQuestionnaire.delConcession(\''+ptc+'\',\''+this.prefix+'\')"><b>REMOVE</b><span></span></a>' +
  paxCount + " x " + (paxCount == 1 ? paxTypes.get(ptc).singular : paxTypes.get(ptc).name);

  if ($(this.prefix+'list_'+ptc) == null) {
    $(this.prefix+'concessionList').insert({
      bottom:'<li id="'+this.prefix+'list_'+ptc+'">' + content +'</li>'
    });
  } else {
    $(this.prefix+'list_'+ptc).update(content);
  }
}

PaxQuestionnaire.delConcession = function (ptc, prefix) {
  if (ptc == null || paxTypes.get(ptc) == null) return;
  if ($(prefix+'ptc_'+ ptc) != null && $(prefix+'ptc_'+ ptc).type == 'hidden') {
    var paxCount = parseFloat($F(prefix+'ptc_'+ ptc)) - 1
    if (paxCount == 0) {
      $(prefix+'ptc_' + ptc).remove();
      $(prefix+'list_' + ptc).remove();
      $(prefix+'ages_' + ptc).remove();
    } else {
      $(prefix+'ptc_'+ ptc).value = paxCount;
      this.setListItem(ptc);
      Effect.Pulsate(prefix+'list_'+ptc);
    }
  }
  AniteDDB.setValue($(prefix+'ptc_CNC'), this.countConcessions(prefix));
  if (this.countConcessions(prefix) == 0) {
    $(prefix+'ptc_CNC').enable();
    $(prefix+'concessionBlock').hide();
  }
  $(this.prefix+'ptc_CNC').form.fire("anite:paxChange");
}

PaxQuestionnaire.concessionCountChange = function (){
  var count = $F(this);
  var prefix = '';
  if (this.id != 'ptc_CNC' && this.id.endsWith('ptc_CNC')) prefix = this.id.substring(0, this.id.length-7)
  else prefix = '';
  var evalScript = "null";
  var fn = "PaxQuestionnaire.addConcession";
  if (count > 1) {
    for (var i = 0; i < count-1; i++){
      evalScript="function(){" + fn + "(" + evalScript + ",'" + prefix + "')}";
    }
  }
  evalScript=fn + "(" + evalScript  + ",'" + prefix + "')";
  //if (confirm(evalScript))
  eval(evalScript)
}

PaxQuestionnaire.countConcessions = function (prefix) {
  var total = 0;
  for (var i = 0; i < this.concessionTypes.length; i++) {
    if ($(prefix+'ptc_'+this.concessionTypes[i])) total += parseFloat($F(prefix+'ptc_'+this.concessionTypes[i]));
  }
  return total;
}

PaxQuestionnaire.reset = function(paxArray, prefix) {
  if (paxArray == null) {
    paxArray = null;
  }
  if (prefix == null) prefix = '';

  for (var i = 0; i < this.concessionTypes.length; i++) {
    var ptc = this.concessionTypes[i];
    $(prefix+'ptc_' + ptc) && $(prefix+'ptc_' + ptc).remove();
    $(prefix+'list_' + ptc) && $(prefix+'list_' + ptc).remove();
    $(prefix+'ages_' + ptc) && $(prefix+'ages_' + ptc).remove();
  }
  if (paxArray != null) {
    paxArray.each(function (pair){
      if (pair.value.qty > 0 && PaxQuestionnaire.concessionTypes.indexOf(pair.value.code) > -1) {
        for (var i = 0 ; i < parseFloat(pair.value.qty); i++) {
          PaxQuestionnaire.prefix = prefix;
          PaxQuestionnaire.selectType(pair.value.code, false);
        }
      }
    })
  };
  if (PaxQuestionnaire.countConcessions(prefix) == 0) {
    $(prefix+'ptc_CNC').enable();
    AniteDDB.setValue($(prefix+'ptc_CNC'), 0);
    $(prefix+'concessionBlock').hide();
  }
}

Event.observe(window, 'load', function() {
  if ($('ptc_CNC')) {
    Event.observe($('ptc_CNC'), 'change', PaxQuestionnaire.concessionCountChange.bindAsEventListener($('ptc_CNC')));
  }
});



  
  
    
  


PaxQuestionnaire.questions = new Hash();

  PaxQuestionnaire.questions.set(520977, {
  text: "",
  responses: [520978,520979],
  moreInfo: ''
  });
  
  PaxQuestionnaire.questions.set('ROOT', {
  text: "",
  responses: [520978,520979],
  moreInfo: ''
  });
  

  PaxQuestionnaire.questions.set(520976, {
  text: "Will you be using travel vouchers?",
  responses: [520974,520975],
  moreInfo: ''
  });
  

  PaxQuestionnaire.questions.set(520973, {
  text: "Which State issued the voucher?",
  responses: [520972,520970,520971],
  moreInfo: ''
  });
  

  PaxQuestionnaire.questions.set(520984, {
  text: "Senior Type",
  responses: [520980,520982,520983],
  moreInfo: 'http://www.greatsouthernrail.com.au/site/travelinfo/concessions.jsp'
  });
  

  PaxQuestionnaire.questions.set(521287, {
  text: "Agent Concession Type?",
  responses: [521313,521314,521315,521316],
  moreInfo: ''
  });
  
  PaxQuestionnaire.questions.set('AGENT', {
  text: "Agent Concession Type?",
  responses: [521313,521314,521315,521316],
  moreInfo: ''
  });
  



  PaxQuestionnaire.responses.set(520972, {ptc: 'PVN', text: 'Issued by New South Wales'});

  PaxQuestionnaire.responses.set(520970, {ptc: 'PVS', text: 'Issued by South Australia'});

  PaxQuestionnaire.responses.set(520971, {ptc: 'PVV', text: 'Issued by Victoria'});

  PaxQuestionnaire.responses.set(520975, {ptc: 'PEN', text: 'Guest is <b>not</b> using travel vouchers'});

  PaxQuestionnaire.responses.set(520980, {ptc: 'PHC', text: 'Guest is a Commonwealth Seniors Health Card holder'});

  PaxQuestionnaire.responses.set(520982, {ptc: 'SEN', text: 'Guest is a State Seniors Card holder registered with Great Southern Rail'});

  PaxQuestionnaire.responses.set(520983, {ptc: 'ADU', text: 'Guest is none of the above'});

  PaxQuestionnaire.responses.set(521313, {ptc: 'PEN', text: 'Guest is an Australian Pensioner'});

  PaxQuestionnaire.responses.set(521314, {ptc: 'SEN', text: 'Guest is a State Seniors Card holder registered with Great Southern Rail'});

  PaxQuestionnaire.responses.set(521315, {ptc: 'PHC', text: 'Guest is a Commonwealth Seniors Health Card holder'});

  PaxQuestionnaire.responses.set(521316, {ptc: 'ADU', text: 'Guest is none of the above.'});


  PaxQuestionnaire.responses.set(520978, {question: '520976', text: 'Guest is an Australian Pensioner'});

  PaxQuestionnaire.responses.set(520974, {question: '520973', text: 'Guest is using travel vouchers'});

  PaxQuestionnaire.responses.set(520979, {question: '520984', text: 'Guest is an Australian Seniors Concession Card holder'});

PaxQuestionnaire.rootQuestion = '520977';
PaxQuestionnaire.concessionTypes = ['PVN','PVS','PVV','PEN','PHC','SEN','PEN','SEN','PHC'].uniq();



