var TEMPLATE_ROOT = 'jst/';
var VIS_ROOT = '';
var VISINIT = {};

var ENABLE_BROWSER_CACHE = false;

var DIR_OUTWARD = '1';
var DIR_RETURN  = '0';


var JOURNEY_TYPE_RETURN        = 'R';
var JOURNEY_TYPE_OPEN          = 'O';
var JOURNEY_TYPE_ONEWAY        = 'W';
var JOURNEY_TYPE_ADMINISTRATIVE = 'A';


var PAGES = { 'indexmainpage': {'template': 'index_mainpage.tpl',
                                'hotspots': [{'id': 'findServices', 'handler': handler_Index_FindServices}],
                                'onload': handler_Index_onLoad
                               },  
              'index': {'template': 'index.tpl',
                        'hotspots': [{'id': 'findServices', 'handler': handler_Index_FindServices},
                                     {'id': 'travcond', 'handler': function() {OpenPopup(IMAGE_ROOT+(VIS_LANG=='en' ? 'en/':'')+'showtravcond_hu.php', 600, 400);}},
                                     {'id': 'opencond', 'handler': function() {OpenPopup(IMAGE_ROOT+(VIS_LANG=='en' ? 'en/':'')+'showopencond_hu.php', 300, 165);}}],
                        'onload': handler_Index_onLoad,
                        'onreturn': function (oldpage) {loadPage('index')}
                       },
              'search': {'template': 'search.tpl',
                         'hotspots': [{'id': 'PrevPage', 'handler': handler_ListRoutes_prevPage}]
                        },
              'listweek': {'template': 'listweek.tpl',
                           'hotspots': [{'id': 'FirstPage', 'page': 'index'}],
                           'onreturn': function(oldpage) {vis_doback();}},
              'listreturnroutes': {'template': 'listreturnroutes.tpl',
                                   'hotspots': [{'id': 'PrevPage', 'handler': listRoutes_init}], 
                                   'onreturn': function() {vis_doback(); }},
              'passengerdata': {'template': 'passengerdata.tpl',
                               'hotspots': [{'id': 'PrevPage', 'handler': listRoutes_init},
                                            {'id': 'sendconfirmation', 'handler': passengerdata_sendConfirmation },
                                            {'id': 'invoicenone', 'handler': function() { passengerdata_invoiceRequest(0); }},
                                            {'id': 'invoicerequest', 'handler': function() { passengerdata_invoiceRequest(1); }},
                                            {'id': 'invoicesameaddress', 'handler': function() { passengerdata_invoiceAddress(0); }},
                                            {'id': 'invoicediffaddress', 'handler': function() { passengerdata_invoiceAddress(1); }}
                                           ],
                               'onreturn': function() {passengerdata_init();}},
              'confirmation': {'template': 'confirmation.tpl',
                               'hotspots': [{'id': 'PrevPage', 'handler': passengerdata_init},
                                            {'id': 'Payment', 'handler': confirmation_payment},
                                            {'id': 'travcond', 'handler': function() {OpenPopup(IMAGE_ROOT+(VIS_LANG=='en' ? 'en/':'')+'showtravcond_int_hu.php', 600, 400);}}]},
              'payment_ok': {'template': 'payment_ok.tpl',
                                 'hotspots': [{'id': 'printconfirmation', 'handler': function() {PrintConfirmationPopup();}}],
                             'onload': handler_registerUtm},
              'payment_error': {'template': 'payment_error.tpl',
                                'hotspots': [{'id': 'again', 'handler': function () {VIS.skipunload = true; document.location.href=VISCONFIG.mainurl+'&pg=payment'}},
                                             {'id': 'again_btn', 'handler': function () {VIS.skipunload = true; document.location.href=VISCONFIG.mainurl+'&pg=payment'}},
                                             {'id': 'delete', 'handler': function () {handler_onUnLoad(); document.location.href=VISCONFIG.mainurl}},
                                             {'id': 'delete_btn', 'handler': function () {handler_onUnLoad(); document.location.href=VISCONFIG.mainurl}}]},
              'print_confirmation': {'template': 'print_confirmation.tpl'}};

var VISCONFIG = {'onunload': handler_onUnLoad,
                 'indexmainpage': 'indexmainpage',
                 'indexpage': 'index',
                 'progress_timer': 300,
                 'mainurl': './'}

var VIS = {'tmp': {},
           'current_page': {},
           'journey_type': JOURNEY_TYPE_RETURN,
           'outward_transfers': null,
           'return_transfers': null,
           'outward_weekoffset': 0,
           'return_weekoffset': 0,
           'outward_week': null,
           'return_week' : null,
           'progressbar': null,
           'skipunload': null}

/** Handlers start here **/
var cities = [];
var hungarian_cities = [];
var from_ac;
var to_ac;


function handler_onUnLoad() {
    if (VIS.skipunload) return;
    advAJAX.get({'url': VIS_ROOT+'releaselocks.php'});
}

function handler_Index_onLoad() {
    var indexmainpage = VIS.currpage=='indexmainpage' ? true : false;
    
    from_ac = new Autocompleter.Local('city_from', 'city_from_autocomplete', cities, {choices: 100});
    to_ac   = new Autocompleter.Local('city_to', 'city_to_autocomplete', cities, {choices: 100});
    to_ac.selectEntry = function() {
        this.active = false;
        this.updateElement(this.getCurrentEntry());
        index_checkCountry();
    }
    
    if (!cities.length) {
        advAJAX.get({'url': VIS_ROOT+'getcities.php',
                     'onSuccess': function(obj) {
                                                var parts = obj.responseText.split('|');
                                                cities = parts[0].split(':');
                                                hungarian_cities = parts[1].split(':');
                                                from_ac.options.array = cities;
                                                to_ac.options.array = cities;
                                                index_checkCountry();
                                               }});
    }
    advAJAX.get({'url': VIS_ROOT+'indexpage.php',
                 'onSuccess': function(obj) {var ret = parseJSON(obj.responseText);
                                             if(VISINIT.city_from) $('city_from').value = VISINIT.city_from; else $('city_from').value = ret.city_from ? ret.city_from : '';
                                             if(VISINIT.city_to) $('city_to').value = VISINIT.city_to; else $('city_to').value = ret.city_to ? ret.city_to : '';
                                             if(VISINIT.outward_date) $('outward_date').value = VISINIT.outward_date; else $('outward_date').value = ret.outward_date ? ret.outward_date : '';
                                             if(VISINIT.return_date) $('return_date').value = VISINIT.return_date; else $('return_date').value = ret.return_date ? ret.return_date : '';
                                             if(VISINIT.journey_type) {
                                                 var radios = document.getElementsByName('journey_type');
                                                 for(var i=0;i<radios.length;i++) {
                                                     if(radios[i].value==VISINIT.journey_type) {
                                                         radios[i].checked = true;
                                                         index_journeyType(radios[i].value);
                                                         break;
                                                     }
                                                 }                                              
                                             }
                                             else {
                                                 $(ret.journey_type_id).checked = 'checked';                                              
                                                 index_journeyType(ret.journey_type);
                                             }
                                             if(!indexmainpage) {
                                                 index_cleanPassengers();
                                                 index_setPassengers(ret.passengers);
                                             }
                                             index_checkCountry();
                                             if (ret.city_from_readonly) $('city_from').readOnly=true;}
                });
    if(!indexmainpage) {
        advAJAX.get({'url': VIS_ROOT+'getadvert.php',
                     'onSuccess': function (obj) {var adv = $('advert'); if (!adv) return; adv.innerHTML = obj.responseText;}});
    }
    Event.observe('city_to', 'change', index_checkCountry);
}

function index_checkCountry() {
    if (!$('city_to')) return;
    
    var tVal = $('city_to').value.match(/^\s*(.*[^\s])\s*$/);
    var val = tVal?tVal[1].toUpperCase():'';
    
    for (var i=0; i<hungarian_cities.length; i++) {
        if (hungarian_cities[i].toUpperCase() == val) {
            var elem = $('journey_type_open');
            elem.disabled=true;
            if (elem.checked) {
                $('journey_type_oneway').checked=true;
            }
            return;
        }
    }
    $('journey_type_open').disabled=false;
}

function index_cleanPassengers() {
    var ps = $('passengers');
    var curr = ps.firstChild;
    var next;
    while (curr) {
        next = curr.nextSibling;
        while (curr && curr.nodeType == 3) {
            ps.removeChild(curr);
            curr = next;
            next = curr ? curr.nextSibling : null;
        }
        curr = next;
    };
}

function index_setPassengers(p) {
    $('passenger_num').selectedIndex = p.length-1;
    index_updatePassengers();
    var pos =0;
    var node = $('passengers').firstChild;
    while (node && pos < p.length) {
        var select = node.getElementsByTagName('SELECT');
        for (var i=0; i<select.length; i++) {
            switch (select[i].className) {
                case 'year': select[i].value = p[pos].year; break;
                case 'month': select[i].value = p[pos].month; break;
                case 'day': select[i].value = p[pos].day; break;
            }
        }
        node.getElementsByTagName('INPUT')[0].checked = p[pos].student ? true : false;
        node = node.nextSibling;
        pos++;
    }
}

function index_journeyType(type) {
    if (type==JOURNEY_TYPE_RETURN) {
        Element.show('return_date_block');
    } else {
        Element.hide('return_date_block');
    }
}

function handler_Index_FindServices(e) {
    var indexmainpage = VIS.currpage=='indexmainpage' ? true : false;

    var error = 0;
    var outward_regs;
    var return_regs;
    if (!this.form.city_from.value) {
        Element.addClassName('city_from_label', 'error');
        error++;
    } else {
        Element.removeClassName('city_from_label', 'error');
    }
    if (!this.form.city_to.value) {
        Element.addClassName('city_to_label', 'error');
        error++;
    } else {
       Element.removeClassName('city_to_label', 'error');
    }
    if (!this.form.outward_date.value) {
        Element.addClassName('outward_date_label', 'error');
        error++;
    } else if (validdate(this.form.outward_date.value)) {
        alert(STRINGTABLE.invalid_outward_date);
        Element.addClassName('outward_date_label', 'error');
        error++;
    } else if (index_dateBeforeNow(this.form.outward_date.value)) {
        Element.addClassName('outward_date_label', 'error');
        error++;
    } else {
        Element.removeClassName('outward_date_label', 'error');
    }
    
    
    var journey_type = index_getJourneyType();
    
    if (journey_type == JOURNEY_TYPE_RETURN) {
        if (!this.form.return_date.value) {
            Element.addClassName('return_date_label', 'error');
            error++;
        } else if (validdate(this.form.return_date.value)) {
            alert(STRINGTABLE.invalid_return_date);
            Element.addClassName('return_date_label', 'error');
            error++;
        } else if (index_dateBeforeNow(this.form.return_date.value)) {
            Element.addClassName('return_date_label', 'error');
            error++;
        } else if (index_dateBefore(this.form.return_date.value, this.form.outward_date.value)) {
            Element.addClassName('return_date_label', 'error');
            error++;
        } else {
            Element.removeClassName('return_date_label', 'error');
        }
    }
    
    if(!indexmainpage) {
        var passenger = $('passengers').firstChild;
        while (passenger) {
            if (!index_checkPassenger(passenger)) error++;
            passenger = passenger.nextSibling;
        }
    
        Element.removeClassName('journey_type_label', 'error');
    }
    
    if (error) {
        document.getElementById('error_description').innerHTML = STRINGTABLE.invalid_fields;
        Element.show('error_description');
        return;
    } else {
        Element.hide('error_description');
    }
    
    if(!indexmainpage) {
        disableForm($('indexform'));
        index_showAdvert();
        doProgress(10);
        VIS.journey_type = journey_type;
        advAJAX.get({ url: VIS_ROOT+'storeinput.php?'+Form.serialize('indexform'), onSuccess: index_InputStored});
    }
    else {
        document.indexform.submit();      
    }
}

function index_showAdvert() {
    var content = $('searchcontent');
    var advert  = $('advert');
    if (!content || !advert) return;
    content.style.display = 'none';
    advert.style.display = '';
}

function index_hideAdvert() {
    var content = $('searchcontent');
    var advert  = $('advert');
    if (!content || !advert) return;
    content.style.display = '';
    advert.style.display = 'none';
}

function index_dateBefore(datestr1, datestr2) {
    var date1 = index_getDate(datestr1);
    var date2 = index_getDate(datestr2);
    if (!date1 || !date2) return true;
    return date1.valueOf()<date2.valueOf();
}

function index_dateBeforeNow(datestr) {
    var date = index_getDate(datestr);
    if (!date) return true;
    var now = new Date();
    now.setHours(0, 0, 0, 0);
    return date.valueOf()<now.valueOf();
}

function index_getDate(datestr) {
    var regs = datestr.match(/^([\d]{4})-([\d]{2})-([\d]{2})$/)
    if (!regs) return false;
    return new Date(regs[1], regs[2]-1, regs[3]);
}

function index_checkPassenger(passenger) {
    var items = passenger.getElementsByTagName('SELECT');
    for (var i =0; i<items.length; i++) {
        if (!items[i].value) {
            passenger.className='passenger error';
            return false;
        }
    }
    passenger.className='passenger';
    return true;
}

/**
 * Visszaadja a kivalasztott utvonal tipust
 */
function index_getJourneyType() {
    var t;
    if ((t = $F('journey_type_return')) != undefined) return t;
    else if ((t = $F('journey_type_open')) != undefined) return t;
    else if ((t = $F('journey_type_oneway')) != undefined) return t;
    else if ((t = $F('journey_type_administrative')) != undefined) return t;
    else return null;
}

/**
 * Elmentettuk a kiindulo adatokat, most lehet keresni
 */
function index_InputStored(obj) {
    var res = parseJSON(obj.responseText);
    if (res.error) {
        index_Error(res);
        return;
    }
    
    VIS.outward_transfers = null;
    VIS.return_transfers = null;
    VIS.outward_weekoffset = 0;
    VIS.return_weekoffset = 0;
    VIS.outward_week = null;
    VIS.return_week  = null;
    doProgress(20);
    advAJAX.get({'url': VIS_ROOT+'findservices.php',
                 'parameters': {'direction': DIR_OUTWARD},
                 'onSuccess': index_ReceiveServices,
                 'tag': {'direction': DIR_OUTWARD}});
    if (VIS.journey_type == JOURNEY_TYPE_RETURN) {
        advAJAX.get({'url': VIS_ROOT+'findservices.php',
                     'parameters': {'direction': DIR_RETURN},
                     'onSuccess': index_ReceiveServices,
                     'tag': {'direction': DIR_RETURN}});
    }
}

function index_ReceiveServices(obj) {
    var res = parseJSON(obj.responseText);
    doProgress(20);
    
    if (res.error) return index_Error(res);
    
    if (obj.tag.direction == DIR_OUTWARD) {
        VIS.outward_transfers = res;
        VIS.outward_weekoffset = 0;
    }
    else if (obj.tag.direction == DIR_RETURN) {
        VIS.return_transfers = res;
        VIS.return_weekoffset = 0;
    }
    if (VIS.outward_transfers && 
        (VIS.journey_type == JOURNEY_TYPE_ONEWAY ||
         VIS.journey_type == JOURNEY_TYPE_OPEN ||
         VIS.journey_type == JOURNEY_TYPE_ADMINISTRATIVE ||
         VIS.return_transfers)) 
    {
        index_ParseServices(obj.tag.date_selected != undefined);
    }
}

function index_ParseServices(date_selected) {
    var outward_ok = VIS.outward_transfers.transfers.length > 0;
    var return_ok  = VIS.journey_type == JOURNEY_TYPE_ONEWAY || 
                     VIS.journey_type == JOURNEY_TYPE_OPEN ||
                     VIS.journey_type == JOURNEY_TYPE_ADMINISTRATIVE ||
                     VIS.return_transfers.transfers.length > 0;
    VIS.tmp.both_ok = outward_ok && return_ok;
        
    if (!outward_ok || !return_ok || date_selected) {
        listWeek_loadWeek(VIS.outward_weekoffset, VIS.return_weekoffset);
    } else {
        listRoutes_init();
    }
    
}

function index_updatePassengers() {
    var selectednum=$('passenger_num').value;
    var container = $('passengers');
    var current = 1;
    var node = container.firstChild;
    var next;
    
    while (node.nextSibling && current < selectednum) {
        current++;
        node = node.nextSibling;
    } 
    
    if (current >= selectednum) {
        while (node.nextSibling) {
            next = node.nextSibling;
            container.removeChild(next);
        }
    }
    else if (current < selectednum) {
        while (current < selectednum) {
            current++;
            next = node.cloneNode(true);
            next.id = 'passengers['+(current-1)+']_label';            
            next.getElementsByTagName('SPAN')[0].innerHTML = current;
            var selects = next.getElementsByTagName('SELECT')
            for (var i in selects) {
                selects[i].name = 'passengers['+(current-1)+']['+selects[i].className+']';
            }
            next.getElementsByTagName('INPUT')[0].name = 'passengers['+(current-1)+'][student]';
            container.appendChild(next);
        }
    }
}


function listWeek_loadWeek(outward_weekoffset, return_weekoffset) {
    if (outward_weekoffset != VIS.outward_weekoffset) {
        VIS.outward_week = null;
    }
    if (return_weekoffset != VIS.return_weekoffset) {
        VIS.return_week = null;
    }
    doProgress(10);
    
    if (!VIS.outward_week) {
        advAJAX.get({'url': VIS_ROOT+'listweek.php',
                     'parameters': { 'offset': outward_weekoffset, 'direction': DIR_OUTWARD},

                     'onSuccess': function(obj) {VIS.outward_week = parseJSON(obj.responseText);
                                                 VIS.outward_weekoffset = VIS.outward_week.offset;
                                                 doProgress(20);},
                     'group': 'listweek',
                     'onGroupLeave': listWeek_displayWeek
                     });
    }
    if (VIS.journey_type == JOURNEY_TYPE_RETURN && !VIS.return_week) {
        advAJAX.get({'url': VIS_ROOT+'listweek.php',
                     'parameters': { 'offset': return_weekoffset, 'direction': DIR_RETURN},
                     'onSuccess': function(obj) {VIS.return_week = parseJSON(obj.responseText);
                                                 VIS.return_weekoffset = VIS.return_week.offset;
                                                 doProgress(20);},
                     'group': 'listweek',
                     'onGroupLeave': listWeek_displayWeek
                     });

    }
}

function listWeek_displayWeek() {
    var data = {};
    data.outwardweek = VIS.outward_week;
    data.returnweek = VIS.return_week;
    data.outward_weekoffset = VIS.outward_weekoffset;
    data.return_weekoffset  = VIS.return_weekoffset;
    data.can_continue = VIS.tmp.both_ok || (data.outwardweek.accepted && (!data.returnweek || data.returnweek.accepted));
    doProgress(20);
    loadPage('listweek', data);
}

/**
 * Esetleges hiba kezelese a nyito oldalon
 */
function index_Error(res) {
    doneProgress();
    if (res.errorTag) {
        document.getElementById('error_description').innerHTML = eval('(STRINGTABLE.'+res.errorTag+')');
        if (res.errorReplacement) {
            $('error_description').innerHTML = $('error_description').innerHTML.replace('%s', res.errorReplacement);
        }
        if (res.errorTag == 'invalid_journey') {
            var repl = '';
            for (var i=0; i<res.journeys.length; i++) {
                if (repl.length) {
                    repl += ' '+STRINGTABLE['and']+' ';
                }
                repl += '<em>'+STRINGTABLE[res.journeys[i]]+'</em>';
            }
            $('error_description').innerHTML = $('error_description').innerHTML.replace('%s', repl);
        }
        else if (res.errorTag == 'no_service' && res.period != undefined) {
            var repl = STRINGTABLE['service_period'];
            repl = repl.replace('%s', res.period.from);
            repl = repl.replace('%s', res.period.to);
            $('error_description').innerHTML += ' '+repl;
        }
        Element.show('error_description');
        enableForm($('indexform'));
        index_hideAdvert();
        return;
    }
    for (var i=0; i<res.errorFields.length; i++) {
        Element.addClassName(res.errorFields[i]+'_label', 'error');
    }
    document.getElementById('error_description').innerHTML = STRINGTABLE.invalid_fields;
    Element.show('error_description');
    enableForm($('indexform'));
    index_hideAdvert();
    return;
}

function listWeek_chooseDate(departure_date, direction) {
    if (direction == DIR_OUTWARD) {
        VIS.outward_week = null;
    } else {
        VIS.return_week = null;
    }
    advAJAX.get({'url': VIS_ROOT+'findservices.php',
                 'parameters': {'date': departure_date,
                                'direction': direction},
                 'onSuccess': index_ReceiveServices,
                 'tag': {'direction': direction, 'date_selected': true}});
}

function listWeek_advance() {
    VIS.outward_week = null;
    VIS.return_week  = null;
    listRoutes_init();
}

function listRoutes_init() {
    doProgress(30);
    advAJAX.get({'url': VIS_ROOT+'listroutes.php',
                 'parameters': {'direction': 1},
                 'onSuccess': function (obj) {doProgress(20); loadPage('search', parseJSON(obj.responseText));}});
}

function listRoutes_selectJourney(transfer_id, bill_id) {
    doProgress(30);
    advAJAX.get({'url': VIS_ROOT+'selectroute.php',
                 'parameters': {'transfer': transfer_id, 'bill': bill_id},
                 'onSuccess': listRoutes_journeySelected});
}

function listRoutes_journeySelected(obj) {
    var res = parseJSON(obj.responseText);
    doProgress(20);
    
    if (res.nextpage == 'listreturnroutes') {
        advAJAX.get({'url': VIS_ROOT+'listreturnroutes.php',
                     'onSuccess': function (obj) {doProgress(20); loadPage('listreturnroutes', parseJSON(obj.responseText));}});
    } else {
        passengerdata_init();
    }
}

function handler_ListRoutes_prevPage() {
    if (VIS.current_page.direction == DIR_RETURN) {
        listRoutes_init();
    } else {
        doProgress(10);
        loadPage('index');
    }
}

function listReturnRoutes_selectJourney(transfer_id) {
    doProgress(20);
    advAJAX.get({'url': VIS_ROOT+'selectreturnroute.php',
                 'parameters': {'transfer': transfer_id},
                 'onSuccess': function (obj) {doProgress(20); parseJSON(obj.responseText); passengerdata_init()}});
}

function passengerdata_init() {
    doProgress(20);
    advAJAX.get({'url': VIS_ROOT+'passengerdata.php',
                 'onSuccess': function(obj) {
                                  doProgress(20);
                                  var res = parseJSON(obj.responseText);
                                  if (res.error && res.errorTag=='lost_locks') {
                                      alert(STRINGTABLE.lost_locks);
                                      listRoutes_init();
                                      return;
                                  }
                                  loadPage('passengerdata', res);
                              }
                });
}

function passengerdata_sendConfirmation() {
    var error = 0;
    var emailregex = /^[\w\$\%\&\*\+\-\~\{\}]+(\.[\w\$\%\&\*\+\-\~\{\}]+)*@([A-Za-z0-9\-]+\.)+[A-Za-z\-]+$/;
    if (!this.form.name.value) {
        Element.addClassName('name_label', 'error');
        error++;
    } else {
        Element.removeClassName('name_label', 'error');
    }
    if (!this.form.email.value || !emailregex.test(this.form.email.value)) {
        Element.addClassName('email_label', 'error');
        error++;
    } else {
        Element.removeClassName('email_label', 'error');
    }
    for (var i=0; i<this.form.elements.length; i++) {
        var element = this.form.elements[i];
        if (element.name.substr(0,10) == 'passengers' || 
            element.name.substr(0,3) == 'pid' ||
            element.name.substr(0,8) == 'pcontact' ||
            element.name.substr(0,13) == 'pticketnumber')
        {
            if (!element.value) {
                Element.addClassName(element.id+'_label', 'error');
                error++;
            } else {
                Element.removeClassName(element.id+'_label', 'error');
            }
        }
    }
    // szamlazas ellenorzese
    var invoiceradio = (!$('confirmform').invoice[0].checked && !$('confirmform').invoice[1].checked) ? false : true;
    var addressradio = (!$('confirmform').invoicedetails[0].checked && !$('confirmform').invoicedetails[1].checked) ? false : true;
// invoiceshipping kikerult, kikommentezve  
/*
    var shippingradio = (!$('confirmform').invoiceshipping[0].checked && !$('confirmform').invoiceshipping[1].checked && !$('confirmform').invoiceshipping[2].checked) ? false : true;
*/
    if(!invoiceradio) {
        Element.addClassName('invoicenone_label', 'error');
        Element.addClassName('invoicerequest_label', 'error');
        error++;
    }
    else {
        Element.removeClassName('invoicenone_label', 'error');
        Element.removeClassName('invoicerequest_label', 'error');
    }

    if($('confirmform').invoice[1].checked && !addressradio) {
        Element.addClassName('invoicesameaddress_label', 'error');
        Element.addClassName('invoicediffaddress_label', 'error');
        error++;
    }
    else {
        Element.removeClassName('invoicesameaddress_label', 'error');
        Element.removeClassName('invoicediffaddress_label', 'error');
    }
        
// invoiceshipping kikerult, kikommentezve  
/*
    if($('confirmform').invoice[1].checked && !shippingradio) {
        Element.addClassName('invoiceshippingwalkin_label', 'error');
        Element.addClassName('invoiceshippingnoticeaddress_label', 'error');
        Element.addClassName('invoiceshippingreceiveaddress_label', 'error');        
        error++;
    }
    else {
        Element.removeClassName('invoiceshippingwalkin_label', 'error');
        Element.removeClassName('invoiceshippingnoticeaddress_label', 'error');
        Element.removeClassName('invoiceshippingreceiveaddress_label', 'error');        
    }
*/
    if(addressradio && !$('invoicename').value) {
        Element.addClassName('invoicename_div', 'error');
        error++;
    }
    else {
        Element.removeClassName('invoicename_div', 'error');
    }
    if(addressradio && !$('invoiceaddress').value) {
        Element.addClassName('invoiceaddr_div', 'error');
        error++;
    }
    else {
        Element.removeClassName('invoiceaddr_div', 'error');
    }

    if (error) {
        return;
    }
    disableForm($('confirmform'));
    doProgress(10);
    advAJAX.get({'url': VIS_ROOT+'storepassengers.php?'+Form.serialize('confirmform'),
                 'onSuccess': confirmation_init});
}


function confirmation_init() {
    doProgress(30);
    advAJAX.get({'url': VIS_ROOT+'passengerdata.php',
                 'onSuccess': function(obj) {
                                  doProgress(20);
                                  var res = parseJSON(obj.responseText);
                                  if (res.error && res.errorTag=='lost_locks') {           
                                      alert(STRINGTABLE.lost_locks);           
                                      listRoutes_init();           
                                      return;           
                                  }           
                                  
                                  loadPage('confirmation', res);
                              }
                });
}

function confirmation_payment() {
    var accepted = document.getElementById('accepted');
    if (accepted && !accepted.checked) {
        alert(STRINGTABLE.not_approved);
        return;
    }
    doProgress(10);
    
    advAJAX.get({'url': VIS_ROOT+'payment.php',
                 'onSuccess': confirmation_paymentAccepted});
    
}

function confirmation_paymentAccepted(obj) {
    doProgress(30); 
    var res = parseJSON(obj.responseText);
    if (res.skippayment) {
        advAJAX.get({'url': VIS_ROOT+res.url,
                     'onSuccess': function(obj) {doProgress(50);
                                                 var res=parseJSON(obj.responseText);
                                                 loadPage('payment_ok', res);}});
    } else {
        if (res.error || !res.url) {
            if (res.errorTag == 'lost_locks') {
                alert(STRINGTABLE.lost_locks);
                listRoutes_init();
                return;
            }
            else if (res.errorTag) {
                alert(eval('(STRINGTABLE.'+res.errorTag+')'));
            }
            document.location.refresh();
            return;
        } else {
            VIS.skipunload = true;
            document.location.href = res.url;
        }
    }
}

function paymentReturn() {
    var query_string = document.location.href.replace(/(^[^\?]*)\?/,'');
    advAJAX.get({'url': VIS_ROOT+'payment_return.php?'+query_string,
                 'onSuccess': paymentReturn_responseChecked});
}

function paymentReturn_responseChecked(obj) {
    doProgress(20);
    var res=parseJSON(obj.responseText);
    if (res.error || !res.url || !res.saki_tr_id || !res.perm_id) {
        loadPage('payment_error', res);
        return;
    } else {
        if (res.approved) {
            loadPage('payment_ok', res);
        } else {
            VIS.skipunload = true;
            advAJAX.get({'url': VIS_ROOT+res.url,
                         'parameters': {'saki_tr_id': res.saki_tr_id,
                                        'perm_id': res.perm_id},
                         'onSuccess': function(obj) {doProgress(5);
                                                     var res=parseJSON(obj.responseText);
                                                     loadPage('payment_ok', res);}});
        }
    }
}

function highlight(id) {
    var obj = document.getElementById(id);
    if (!obj) return;
    new Effect.Highlight(obj, {duration: 1, startcolor: '#fdb927'});
}

var utmtries = 30;
function handler_registerUtm() {
    if (document.getElementById('utmtrans')) {
        var browser=navigator.appName;
        var b_version=navigator.appVersion;
        try {

            __utmSetTrans();
            advAJAX.post({'url': VIS_ROOT+'store_utmt.php',
                          'parameters': {'data': $('utmtrans').value,
                                         'browser': browser+' '+b_version}});
        } catch (e) {
            try {
                if (!utmtries--) {
                    window.setTimeout('_utmLastTry()', 2000);
                    return;
                }
                window.setTimeout('handler_registerUtm()', 2000);
                advAJAX.post({'url': VIS_ROOT+'store_utmt.php',
                              'parameters': {'data': 'error occoured: '+e.message + " "+(e.description ? e.description : ''),
                                             'browser': browser+' '+b_version}});
            } catch (ee) {
            }
        }
    } else {
        try {
            advAJAX.post({'url': VIS_ROOT+'store_utmt.php',
                          'parameters': {'data': 'no utmtrans field found, location: '+document.location.href,
                                         'browser': browser+' '+b_version}});
        } catch (e) {
        }
    }
}

function _utmLastTry() {
  window.onerror = function(msg, uri, ln) {
      var browser=navigator.appName;
      var b_version=navigator.appVersion;
      advAJAX.post({'url': VIS_ROOT+'store_utmt.php',
                    'parameters': {'data': 'error occoured: '+ msg + "\nlocation: "+uri+" line: "+ln,
                                   'browser': browser+' '+b_version}});
  }
  __utmSetTrans();
  return;
}

function passengerdata_invoiceRequest(request) {
    $('invoiceaddressrow').hide();
    // invoiceshipping kikerult, kikommentezve  
/*
    $('invoiceshippingrow').hide();
*/
    if(!request) {
        $('invoiceinformationrow').hide();
        $('invoicesameaddress').checked = false;
        $('invoicediffaddress').checked = false;
// invoiceshipping kikerult, kikommentezve  
/*
        $('invoiceshippingwalkin').checked = false;
        $('invoiceshippingnoticeaddress').checked = false;
        $('invoiceshippingreceiveaddress').checked = false;
*/
    }
    else {
        $('invoiceinformationrow').show();
        // invoiceshipping helyett, csak tajekoztato szoveg
    }
}

function passengerdata_invoiceAddress(request) {
    $('invoiceaddressrow').show();
    // invoiceshipping kikerult, kikommentezve  
/*
    $('invoiceshippingrow').show();
*/
    if(!request) {
        $('invoiceinformationrow').show();
        $('invoicename').setAttribute('readonly', 'readonly');
        $('invoicename').value = $('name').value;
        $('invoiceaddress').setAttribute('readonly', 'readonly');
        $('invoiceaddress').value = $('address').value;
        $('invoicename').setAttribute('class', 'input_disabled');
        $('invoiceaddress').setAttribute('class', 'input_disabled');
    }
    else {
        $('invoicename').removeAttribute('readonly');
        $('invoicename').value = '';
        $('invoiceaddress').value = '';
        $('invoiceaddress').removeAttribute('readonly');
        $('invoicename').removeAttribute('class', 'input_disabled');
        $('invoiceaddress').removeAttribute('class', 'input_disabled');
    }
}

function passengerdata_invoiceAddressModify() {
    if($('invoicesameaddress').checked) {
        $('invoicename').value = $('name').value;
        $('invoiceaddress').value = $('address').value;
    }
}
