

/**
 * AutoQuote
 * Gets Loan and Insurance quotes for all vehicles and updates the price <element>
 * @author		D.Harding - ChapterEight
 */

var additionalcontent = false;

var AutoQuote = new Class({
	Implements: [Options, Chain],
	options: {
        url: '/index:listing.json',
		className: 'price'
	},
	initialize: function(options) { 

		this.setOptions(options);
        outerform = $('CalculationRequests');
        loanform = $('frm_loan');
        showinsuranceform = $('btn_showinsuranceform');
        insuranceform = $('frm_insurance');
        financeresults = $('finance_results');
        var btn_calculate = $('btn_calculate');
        if(!btn_calculate) { return false; }

        if(financeresults && insuranceform && loanform && outerform) {
            loancontent = loanform.get('html');
            insurancecontent = insuranceform.get('html');
            additionalcontent = financeresults.get('html');
            outerform.empty();
            outerform.set('html', loancontent);
            if($('frm_fieldset')) {
                this.doDetailedRequest(); 
            } else {
                this.initNoFinanceForm();
                this.initDetailForm();
            }
        }
        loading_el = "<div class='busy'>Loading...</div>";
        ref = this;
        return;
	},

    initNoFinanceForm: function() {
        $('btn_showloanform').addEvent('click', function(event) {
            // additionalcontent = financeresults.get('html');
            outerform.set('html', loancontent);
            financeresults.set('html', additionalcontent);
            current_form = 'Loan';
            Cookie.write('current_form', current_form);
        });
        // showinsuranceform.addEvent('click', function() {
        $('btn_showinsuranceform').addEvent('click', function(event) {
            // additionalcontent = financeresults.get('html');
            outerform.set('html', insurancecontent);
            financeresults.set('html', additionalcontent);
            current_form = 'Insurance';
            Cookie.write('current_form', current_form);
        });    
    },

    initDetailForm: function() {
        try {
            var showloanform = $('btn_showloanform');
            loanform = $('frm_loan');
            var showinsuranceform = $('btn_showinsuranceform');
            var insuranceform = $('frm_insurance');
            var financeresults = $('finance_results');
            var btn_calculate = $('btn_calculate');

            outerform = $('CalculationRequests');
            validate_inputs = new Array('Title','Gender','CoverType',
                                        'NoClaimsDiscount','Mileage','HasAccident',
                                        'HasConviction','HasTracker','IsGaraged',
                                        'Forename','Surname','DateOfBirth',
                                        'PostCode','Email');


            // showloanform.addEvent('click', function() {
            $('btn_showloanform').addEvent('click', function(event) {
                // additionalcontent = financeresults.get('html');
                outerform.set('html', loancontent);
                financeresults.set('html', additionalcontent);
                current_form = 'Loan';
                Cookie.write('current_form', current_form);
                return addCalculateEvent();
            });
            // showinsuranceform.addEvent('click', function() {
            $('btn_showinsuranceform').addEvent('click', function(event) {
                // additionalcontent = financeresults.get('html');
                outerform.set('html', insurancecontent);
                financeresults.set('html', additionalcontent);
                current_form = 'Insurance';
                Cookie.write('current_form', current_form);
                return addCalculateEvent();
            });


            addPurchaseEvents = function() {
                purchase_buttons = $$('.finance_row');
                purchase_buttons.each(function(bt) {
                    bt.addEvent('click', function() {
                        if($('detailed_finance_rows')) {
                            var details_style = ($('detailed_finance_rows').getStyle('display') == 'none') ? 'block' : 'none';
                            $$('.finance_row').each(function(el,ind) {
                                el.setStyle('display', 'none');
                            });
                            $('typicalapr').setStyle('display', 'none');
                            $('detailed_finance_rows').setStyle('display', details_style);
                        }
                        return false;
                    });
                });       
            }

            addCalculateEvent = function() { 
                $('btn_calculate').addEvent('click', function() {
                   // console.log("addCalculateEvent"); return false; 
                   try {

                        testvar = "foobar";

                        validate_inputs.each(function(inp) { if($(inp)) { $(inp).setStyle('border','1px solid #666666'); } });
                        var myRequest = new Request({method: 'post',
                            onRequest: function() { 
                                $('finance_results').set('html', "<div class='busy'>Loading...</div>");
                                return false; 
                            },
                             onFailure: function() {
                                $('finance_results').set('html', '<center><p>Sorry, an error occurred.</p></center>');
                                return false;
                             },
                             onSuccess: function(responseText,responseXml) {
                                var r = this.response;

                                $('finance_results').set('html', responseText);
                                $('finance_results').setStyle('display','block');
                                $('finance_results').fade('in');
                                addPurchaseEvents();
                                return false;
                             }, 
                            url: '/index:detailed.json'
                        });
                        if($('CalculationRequests')) {
                            errs = false;
                            validate_inputs.each(function(inp) {
                                // console.log(inp);
                                if($chk($(inp))) {
                                    if($(inp).get('value').trim() == '' || $(inp).get('value').trim() == 'Please Select') { 
                                        errs = true;
                                        $(inp).setStyle('border','1px solid #CC0000');
                                        $(inp).addEvents({
                                            'focus': function() {  this.setStyle('border','1px solid #555555');
                                            },
                                            'blur': function() { 
                                                if(this.get('value').trim() == '') {  this.setStyle('border','1px solid #CC0000'); }  }
                                        });
                                    }
                                }
                            });
                            if($chk(errs)) {  
                                return false; 
                            }
                            var params = $('CalculationRequests').toQueryString();
                            // alert(params);
                            myRequest.send(params);
                            return false;
                        }
                    } catch(e) {


                    } finally { return false; }      
                });
                return false;
            }
            addPurchaseEvents();
            addCalculateEvent();
            return false;
        } catch(e) {
 
            return false; 
        }
    },
    doDetailedRequest:function() {
        financeresults = $('finance_results');
        validate_inputs = new Array('Forename','Surname','DateOfBirth','PostCode','Gender');
        try {
            ref = this;
            // console.log(this);
            var myRequest = new Request({method: 'post',
                 onRequest: function() {
                    financeresults.set('html', "<div class='busy'>Loading...</div>");
                    return false;
                 },
                 onFailure: function() {
                    financeresults.set('html', '<center><p>Sorry, an error occurred.</p></center>');
                    return false;
                 },
                 onSuccess: function(responseText, responseXml) {
                    cond = $('IsNew').get('value');
                    financeresults.set('html', responseText);
                    financeresults.setStyle('display','block');
                    // $('detailed_finance_row').setStyle('display','block'); 
                    ref.initDetailForm();
                    financeresults.fade('in');
                    return false;
                 }, 
                url: '/index:detailed.json'
            });
            if($('CalculationRequests')) {
                errs = false;
                validate_inputs.each(function(inp) {
                    // console.log(inp);
                    if($chk($(inp))) {
                        // console.log($(inp));
                        if($(inp).get('value').trim() == '' || $(inp).options.selectedIndex == 0) { 
                            errs = true;
                            $(inp).setStyle('border','1px solid #CC0000');
                            $(inp).addEvents({
                                'focus': function() {  this.setStyle('border','1px solid #555555');
                                },
                                'blur': function() { 
                                    if(this.get('value').trim() == '' || $(inp).options.selectedIndex == 0) {  this.setStyle('border','1px solid #CC0000'); }  }
                            });
                        }
                    }
                });
                if($chk(errs)) {  
                    return false; 
                }
            }
            var params = $('CalculationRequests').toQueryString();                                
            myRequest.send(params);
        } catch(e) {


        } finally {
            return false;
        } 
    }
});


window.addEvent('domready', function() {
    var auto_quote = new AutoQuote();
});
