function client_login() {
    new Ajax.Request('includes/client_login.php', {
        method: 'post',
        parameters: $('flogin').serialize(true),
        onSuccess: function (transport) {
            var response = transport.responseText || '';
            var re = new RegExp('__LOGIN_OK__');
            if (re.match(response)) {
                try {window.location.href = 'client_home.php'} catch (err) {alert(err);}
            /*
            } if (response.match(/^\/.+ctrl.+/)) {
                if (confirm('Dank u wel voor uw bezoek. Mogen wij u vragen om uw meterstanden voor de jaarnota 2010 in te vullen? U kunt daarna opnieuw inloggen op uw persoonlijke pagina. Dank u.')) {
                    window.location.href = response;
                }
            */
            } else {
                $('errmsg').innerHTML = '<span style="color: #c00;">'+response+'</span>';
            }
        },
        onFailure: function() {}
    });
}
function client_home() {
    new Ajax.Request('includes/client_home.php', {
        method: 'get',
        onSuccess: function (transport) {
            var response = transport.responseText || "No response!";
            $('client_page').innerHTML = response
        },
        onFailure: function() {alert('Failed!');}
    });
}

function save_readings() {
    new Ajax.Request('client_content.php?ctab=save_readings', {
        method: 'post',
        parameters: $('readings_form').serialize(true),
        onSuccess: function (transport) {
            // remove highlight
            $$('#readings_form span.val input').each(function (next_field) {
                if ($(next_field.id) != null && $(next_field.id).hasClassName('err'))
                    $(next_field.id).removeClassName('err');
            });
            var response = transport.responseText.evalJSON() || 'Failed to submit readings! No response from remote service.';
            var text_result = '<span class="err">' + response.errs + '</span><br/>' + '<span class="msgs">' + response.msgs + '</span>';
            if (response.result == 'true') {
                $('conn_info').hide();
                $('readings_form').hide();
                text_result += '<br/><a href="#" onclick="add_more_link(); return false;" style="color: #c00;">Voeg meer standen toe</a>';
            } else {
                response.inv_fields.each(function (field_id) {
                    if ($(field_id) != null) {
                        $(field_id).addClassName('err');
                    }
                });
            }
            //$('readings_msgs').innerHTML = text_result;
            if (response.result == 'true') {
                $('readings_msgs').innerHTML = text_result;
            }
            if (response.result != 'true') {
                $('readings_msgs').innerHTML = '';
                $('div_msgs_popup').show();
                $('readings_msgs_2').update(text_result);
            }
        },
        onFailure: function() {$('readings_msgs').innerHTML = '<span class="err">Save failed!</span>';}
    });
}
function save_estimates() {
    new Ajax.Request('client_content.php?ctab=save_estimates', {
        method: 'post',
        parameters: $('estimate_form').serialize(true),
        onSuccess: function (transport) {
            // remove highlight
            $$('#estimate_form span.val input').each(function (next_field) {
                if ($(next_field.id) != null && $(next_field.id).hasClassName('err'))
                    $(next_field.id).removeClassName('err');
            });
            var response = transport.responseText.evalJSON() || 'Failed to submit estimates! No response from remote service.';
            var text_result = '<span class="err">' + response.errs + '</span><br/><span class="msgs">' + response.msgs + '</span>';
            if (response.result == 'true') {
                //$('estimate_form').hide();
                //text_result += '<br/><a href="#" onclick="add_more_link(); return false;">Add more readings</a>';
            } else {
                response.inv_fields.each(function (field_id) {
                    if ($(field_id) != null) {
                        $(field_id).addClassName('err');
                    }
                });
            }
            //$('div_msgs').innerHTML = text_result;
            $('div_msgs_popup2').show();
            $('readings_msgs_2').update(text_result);
        },
        onFailure: function() {$('div_msgs').innerHTML = '<span class="err">Submit failed!</span>';}
    });
}
/**
 * Update customer address
 */
function update_caddress() {
    new Ajax.Request('client_content.php?ctab=update_caddress', {
        method: 'post',
        parameters: $('address_form').serialize(true),
        onSuccess: function (transport) {
            // remove highlight
            $$('#address_form span.val input').each(function (next_field) {
                if ($(next_field.id) != null && $(next_field.id).hasClassName('err'))
                    $(next_field.id).removeClassName('err');
            });
            //alert(transport.responseText);
            var response = transport.responseText.evalJSON() || 'Failed to submit address change! No response from remote service.';
            var text_result = '<span class="err">' + response.errs + '</span><br/>';
            if (response.result == 'true') {
                text_result = '<span class="msgs">' + response.msgs + '</span><br/>';
            } else {
                response.inv_fields.each(function (field) {
                    var field_id = 'af_'+field;
                    if ($(field_id) != null) {
                        $(field_id).addClassName('err');
                    }
                });
            }
            //$('div_msgs').innerHTML = text_result;
            $('div_msgs_popup2').show();
            $('readings_msgs_2').update(text_result);
        },
        onFailure: function() {$('div_msgs').innerHTML = '<span class="err">Update failed!</span>';}
    });
}
/**
 * Update customer address
 */
/* use more general function execute_action
function update_payment_info() {
    new Ajax.Request('client_content.php?ctab=update_payment_info', {
        method: 'post',
        parameters: $('payment_info_form').serialize(true),
        onSuccess: function (transport) {
            // remove highlight
            $$('#payment_info_form span.val input').each(function (next_field) {
                if ($(next_field.id) != null && $(next_field.id).hasClassName('err'))
                    $(next_field.id).removeClassName('err');
            });
            var response = transport.responseText.evalJSON() || 'Failed to submit payment info change! No response from remote service.';
            var text_result = '<span class="err">' + response.errs + '</span><br/>';
            if (response.result == 'true') {
                text_result = '<span class="msgs">' + response.msgs + '</span><br/>';
            } else {
                response.inv_fields.each(function (field) {
                    var field_id = 'f_'+field;
                    if ($(field_id) != null) {
                        $(field_id).addClassName('err');
                    }
                });
            }
            $('div_msgs').innerHTML = text_result;
        },
        onFailure: function() {$('div_msgs').innerHTML = '<span class="err">Update failed!</span>';}
    });
}
*/
function add_more_link() {
    $('readings_form').show();
    $('conn_info').show();
    $('readings_msgs') = '&nbsp;';
    $('rf_0_eanCode').value = '';
    $('rf_0_contractregelID').value = '';
    $('rf_0_hoog').value = '';
    $('rf_0_laag').value = '';
    $('rf_1_eanCode').value = '';
    $('rf_1_contractregelID').value = '';
    $('rf_1_hoog').value = '';
}
function select_connectoin(connType, eanCode, ContractRegelID) {
    var re = /Elektra/i;
    if (re.match(connType)) {
        $('laag').show();
        $('hoog').innerHTML = 'Meterstand 1 (kWh):';
    } else {
        $('laag').hide();
        $('hoog').innerHTML = 'Meterstand (m3):';
    }
    $('rf_ean_code').value = eanCode;
    show_conn_info(ContractRegelID);
}
function select_connections(c_ids, id) {
    try {
        $$('table.sortable tr').each(function(row) {row.removeClassName('selected');});
        $(id).addClassName('selected');
        // get data
        new Ajax.Request('client_content.php?ctab=show_conns_info&ids='+c_ids+'&tr_id='+id, {
            method: 'get',
            onSuccess: function (transport) {
                var response = transport.responseText.evalJSON() || 'Failed to get connection info!';
                var conn_info = response.conn_info;
                // empty msgs
                $('readings_msgs').innerHTML = '';
                // remove highlight
                $$('#readings_form span.val input').each(function (next_field) {
                    if ($(next_field.id) != null && $(next_field.id).hasClassName('err'))
                        $(next_field.id).removeClassName('err');
                });
                // set to ''
                $('rf_0_eanCode').value = '';
                $('rf_0_contractregelID').value = '';
                $('rf_0_hoog').value = '';
                $('rf_0_laag').value = '';
                $('el_last_read_peak').innerHTML = '';
                $('el_last_read_peak_date').innerHTML = '';
                $('el_last_read_offpeak').innerHTML = '';
                $('el_last_read_offpeak_date').innerHTML = '';
                // gas
                $('rf_1_eanCode').value = '';
                $('rf_1_contractregelID').value = '';
                $('rf_1_hoog').value = '';
                $('gas_last_read').innerHTML = '';
                $('gas_last_read_date').innerHTML = '';
                $('Gas').hide();
                $('Electricity').hide();
                $('rf_0_visible').setValue('no');
                $('rf_1_visible').setValue('no');
                //
                //$('form_button').setStyle({cursor: 'pointer', display: 'inline'});
                //$('form_button').show();

                //iDEAL

                var i = 0;
                conn_info.each(function(conn) {
                    if (i === 0) {
                        $('street').innerHTML = conn.street;
                        $('str_nr').innerHTML = conn.str_nr;
                        $('toev').innerHTML = conn.toev;
                        // iDEAL
                    }
                    if (conn.segment == 'Elektra') {
                        $('Electricity').show();
                        $('rf_0_visible').setValue('yes');
                        $('rf_0_eanCode').value = conn.ean;
                        $('rf_0_contractregelID').value = conn.contractregelID;
                        $('el_last_read_peak').innerHTML = conn.reading.hoog;
                        $('el_last_read_peak_date').innerHTML = conn.reading.date;
                        $('el_last_read_offpeak').innerHTML = conn.reading.laag;
                        $('el_last_read_offpeak_date').innerHTML = conn.reading.date;
                    }if (conn.segment == 'Gas') {
                        $('Gas').show();
                        $('rf_1_visible').setValue('yes');
                        $('rf_1_eanCode').value = conn.ean;
                        $('rf_1_contractregelID').value = conn.contractregelID;
                        $('gas_last_read').innerHTML = conn.reading.hoog;
                        $('gas_last_read_date').innerHTML = conn.reading.date;
                    }
                    // more than 2 meters per address ?
                    if (++i > 2) throw $break;
                });
            },
            onFailure: function() {$('conn_info').innerHTML = 'Failed to get connection info!';}
        });
    } catch (err) { }
}
function select_connections2(c_ids, id) {
    try {
        $$('table.sortable tr').each(function(row) {row.removeClassName('selected');});
        $(id).addClassName('selected');
        // get data
        new Ajax.Request('client_content.php?ctab=show_conns_info&ids='+c_ids+'&tr_id='+id, {
            method: 'get',
            onSuccess: function (transport) {
                var response = transport.responseText.evalJSON() || 'Failed to get connection info!';
                var conn_info = response.conn_info;
                // empty msgs
                $('div_msgs').innerHTML = '';
                // remove highlight
                $$('#estimate_form span.val input').each(function (next_field) {
                    if ($(next_field.id) != null && $(next_field.id).hasClassName('err'))
                        $(next_field.id).removeClassName('err');
                });
                // set to ''
                $('f_0_contractregelID').setValue('');
                $('f_0_eanCode').setValue('');
                $('f_0_hoog').setValue('');
                $('f_0_laag').setValue('');
                $('Electricity').hide();
                $('f_0_visible').setValue('no');
                // gas
                $('f_1_contractregelID').setValue('');
                $('f_1_eanCode').setValue('');
                $('f_1_hoog').setValue('');
                $('Gas').hide();
                $('f_1_visible').setValue('no');

                var i = 0;
                conn_info.each(function(conn) {
                    if (i === 0) {
                        $('street').innerHTML = conn.street;
                        $('str_nr').innerHTML = conn.str_nr;
                        $('toev').innerHTML = conn.toev;
                    }
                    if (conn.segment == 'Elektra') {
                        $('Electricity').show();
                        $('f_0_visible').setValue('yes');
                        $('f_0_eanCode').setValue(conn.ean);
                        $('f_0_contractregelID').setValue(conn.contractregelID);
                    }if (conn.segment == 'Gas') {
                        $('Gas').show();
                        $('f_1_visible').setValue('yes');
                        $('f_1_eanCode').setValue(conn.ean);
                        $('f_1_contractregelID').setValue(conn.contractregelID);
                    }
                    // more than 2 meters per address ?
                    if (++i > 2) throw $break;
                });
            },
            onFailure: function() {$('div_msgs').innerHTML = 'Failed to get connection info!';}
        });
    } catch (err) {}
}
function setupCalendars() {
    Calendar.setup({
        dateField: 'date_field',
        triggerElement: 'date_button'
    });
}
function load_tab(tab) {
    new Ajax.Request('client_content.php?ctab='+tab, {
        method: 'get',
        onSuccess: function (transport) {
            var response = transport.responseText || "No response!";
            //activate_tab('tab_'+tab);
            $('client_page_content').innerHTML = response;
            sortables_init();
            if (tab == 'load_address_form') {
                setupCalendars();
            }
        },
        onFailure: function() {alert('Failed!');}
    });
}
function load_page(tab, options) {
    new Ajax.Updater('client_page_content', 'client_content.php?ctab='+tab, {
        method: 'get',
        evalScripts: true,
        onSuccess: function () {
            //activate_tab('tab_'+tab);
        },
        onComplete: function () {
            if (typeof options != "undefined") {
                options = $H(options);
                options.each(function(opt) {
                    switch(opt.key) {
                        case 'sort_init': sortables_init(); break;
                        case 'setup_calendar': setupCalendars(); break;
                        case 'calendar_init': setupCalendars(); break;
                        case 'scroll_init': load_scroll(); break;
                        case 'form_params':
                            var f_params = $H(opt.value);
                            f_params.each(function(f_param) {
                                var re_form = /^f_/; // form fields start with f_
                                if ($(f_param.key) != null) {
                                    if (re_form.match(f_param.key)) $(f_param.key).setValue(f_param.value);
                                    else $(f_param.key).update(f_param.value);
                                }
                            });
                        default: break;
                    }
                });
            }
            page_event_handlers(tab);
        },
        onFailure: function() {alert('Failed!');}
    });
}
function activate_tab(tab) {
    //var tabs =['tab_connections', 'tab_my_data', 'tab_contact', 'tab_invoices', 'tab_changes', 'tab_readings', 'tab_edit_address'];
    var tabs = $$('#client_menu span');
    tabs.each(function(next_tab) {
        if (next_tab.id == tab) $(next_tab.id).addClassName('active');
        else $(next_tab.id).removeClassName('active');
    });
}
function fill_out_f(kost) {
    if ($('f_betaalwijze').getValue() == 'KZ') {
        $('BetaalwijzeKostExcl').setValue(kost + ' Euro');
        $('BetaalwijzeFact').checked = true;
        $('label_reknr').update('Rekeningnummer');
    } else {
        $('label_reknr').update('Rekeningnummer');
        $('BetaalwijzeKostExcl').setValue('');
        $('BetaalwijzeFact').checked = false;
        if ($('f_betaalwijze').getValue() == 'IC') {
            $('label_reknr').update('Rekeningnummer *');
        }
    }
}
/**
 * Shows change request (mutatie) in client area.
 */
function show_change(trid, change_id) {
    $$('table.sortable tr').each(function(row) {row.removeClassName('selected');});
    $(trid).addClassName('selected');
    new Ajax.Updater('change_info', 'client_content.php?ctab=change_info&id='+change_id, {
        method: 'get',
        //evalScripts: true,
        //onSuccess: function () {},
        onFailure: function() {alert('Failed to get information!');}
    });
}
function remove_highlight(form_id) {
    var css_selector = '#' + form_id + ' span.val';
    css_selector = css_selector + ' input, ' + css_selector + ' textarea';
    // remove highlight
    $$(css_selector).each(function (next_field) {
        if ($(next_field.id) != null && $(next_field.id).hasClassName('err'))
            $(next_field.id).removeClassName('err');
    });
    // remove class from message area
    if ($('div_msgs').hasClassName('err')) $('div_msgs').removeClassName('err');
    if ($('div_msgs').hasClassName('msg')) $('div_msgs').removeClassName('msg');
    if ($('readings_msgs_2')) {
        if ($('readings_msgs_2').hasClassName('err')) $('readings_msgs_2').removeClassName('err');
        if ($('readings_msgs_2').hasClassName('msg')) $('readings_msgs_2').removeClassName('msg');
    }
}
function add_highlight(response) {
    if (response.result == 'true') {
        if ($('div_msgs_popup2')) {
            $('readings_msgs_2').addClassName('msg');
            $('div_msgs_popup2').show();
            $('readings_msgs_2').update(response.msgs);
        } else {
            $('div_msgs').addClassName('msg');
            $('div_msgs').update(response.msgs);
        }
    } else {
        response.inv_fields.each(function (field) {
            var field_id = 'f_'+field;
            if ($(field_id) != null) {
                $(field_id).addClassName('err');
            }
        });
        if ($('div_msgs_popup2')) {
            $('readings_msgs_2').addClassName('err');
            $('div_msgs_popup2').show();
            $('readings_msgs_2').update(response.errs);
        } else {
            $('div_msgs').addClassName('err');
            $('div_msgs').update(response.errs);
        }
    }
}
function execute_action(func_name, form_id) {
    new Ajax.Request('client_content.php?ctab=' + func_name, {
        method: 'post',
        parameters: $(form_id).serialize(true),
        onSuccess: function (transport) {
            remove_highlight(form_id);
            var response = transport.responseText.evalJSON() || func_name + 'failed! Please contact customer service.';
            add_highlight(response);
        },
        onFailure: function() {alert(func_name + 'failed! Please contact customer service.');}
    });
}
function show_hide_c_info(id, img_id) {
    $(id).toggle();
    if ($(id).visible()) {
        $(img_id).innerHTML = 'verberg'
    } else {
        $(img_id).innerHTML = 'toon'
    }
}
function page_event_handlers(page) {
    switch(page) {
        case 'contact_form': 
            Element.observe('contact_form', 'keypress', function(event) {
                if (event.keyCode == Event.KEY_RETURN) {
                    event.stop();
                }
            });
            Element.observe('form_button', 'click', function(event) {
                execute_action('send_new_service_request', 'contact_form');
            });
            break;

        case 'readings':
            Element.observe('readings_form', 'keypress', function(event) {
                if (event.keyCode == Event.KEY_RETURN) {
                    event.stop();
                }
            });
    }
}
