var Warranty = {

    Claim: {

        choice : function(arg, choice1, choice2){
            if (choice1 != choice2)
                return (arg == choice1) ? choice2 : choice1;
            return null;
        },

        resetControls : function(c){
            var cntrls = $A($(c).getElementsByTagName('input'));
            cntrls.each(function(c){
                //console.log(c);
                if (c.type == 'radio' || c.type == 'checkbox'){
                    c.checked = false;
                }else if (c.type == "text"){
                    c.value = '';
                }else{
                    ;
                }
                //console.log(c.id + '-' + c.name + '-' + c.value);
                if ( (c.value != '' && c.value != null) && ($(c.value)))
                    Warranty.Claim.hide(c.value);
            });
        },

        show : function(c){
            $(c).show(c);
            Warranty.Claim.resetControls(c);
        },

        hide : function(c){
            $(c).hide();
            Warranty.Claim.resetControls(c);
        },

        clickChecked : function(e){
            if ($(e).checked){
                Element.show($(e).value);
            }
        },

        save: function(){
            alert("This function not yet implemented");
        },

        quit: function(){
            ProgressSpinner.load("Cleaning Up And Closing Window");
            ProgressSpinner.show();
            var a = new Ajax.Request('/common/services/warranty/clearWarrSession_py', {
                onComplete: function(transport){
                    Warranty.Claim.close();
                }
            });
        },

        closeWithRefresh: function(){
            openClose(window.opener);
        },

        close: function(){
            window.close();
        },

        checkHistory: function(backButton){
            if ( window.history.length <= 1 )
                backButton.disable();
        },

        back: function(){
            if (window.history.length > 1){
                window.history.back();
            }else{
                alert("No History");
            }
        },

        prev: function(){
            popUp('previous_html','',650, 450);
        },

        pend: function(){
            popUp('pending_html','',650, 450);
        },

        index:{

            choose: function(e, yes, no){
                Warranty.Claim.show(Event.element(e).value);
                Warranty.Claim.hide(Warranty.Claim.choice(Event.element(e).value, yes, no));
            },

            edit: function(){
                return popUp("/common/services/accounts/edit_html", '', 750, 550);
            },

            save: function(e){
                Event.element(e).form.serno.optional = true;
            },


            claimNumberObject: function(){
                var claimnoYes = Element.extend(document.createElement("div"));
                claimnoYes.setAttribute('id', 'substitute_claimnumber');
                claimnoYes.setStyle({'display':'none'});

                var label = Element.extend(document.createElement('label'));
                label.setAttribute('for', 'claimno');
                label.update('Claim Number');

                var claimno = Element.extend(document.createElement('input'));
                claimno.setAttribute('id', 'claimno');
                claimno.setAttribute('type', 'text');
                claimno.setAttribute('name','claimno');

                var error = Element.extend(document.createElement('span'));
                error.setAttribute('id', 'claimnoExists');
                error.setStyle({'color':'red', 'display':'inline'});

                claimnoYes.appendChild(label);
                claimnoYes.appendChild(claimno);
                claimnoYes.appendChild(error);

                return claimnoYes;
            },

            claimNumber: function(e){
                if (e.checked){
                    if ($('substitute_claimnumber'))
                        $('substitute_claimnumber').parentNode.removeChild($('substitute_claimnumber'));
                    var n = this.claimNumberObject();
                    e.parentNode.appendChild(n);
                    $('substitute_claimnumber').show();
                    $('claimno').clear();
                    e.form.claimno.optional = false;
                }else{
                    $('substitute_claimnumber').hide();
                    if ($(e.form.claimno))
                        e.form.claimno.optional = true;
                }
            },

            claimNumber_click: function(event){
                Warranty.Claim.index.claimNumber(event.element());
            },

            claimnoChecked: function(e){
                if (e.checked){
                    Warranty.Claim.index.claimNumber(e);
                }
            },

            prepareForm:function(container){
                var i = Form.getInputs(container);
                i.each(function(i){
                    switch (i.id){
                        case "confirmedYes":
                            Event.observe(i, "click", Warranty.Claim.index.choose.bindAsEventListener(Warranty.Claim.index, "confirmed_Yes", "confirmed_No"));
                            Warranty.Claim.clickChecked(i);
                            break;
                        case "claimno_box":
                            Event.observe(i, "click", Warranty.Claim.index.claimNumber_click.bindAsEventListener(Warranty.Claim.index));
                            Warranty.Claim.index.claimnoChecked(i);
                            break;
                        case "confirmedNo":
                            Event.observe(i, "click", Warranty.Claim.index.choose.bindAsEventListener(Warranty.Claim.index, "confirmed_Yes", "confirmed_No"));
                            Warranty.Claim.clickChecked(i);
                            break;
                        case "serialYes":
                            Event.observe(i, "click", Warranty.Claim.index.choose.bindAsEventListener(Warranty.Claim.index, "serialized_Yes", "serialized_No"));
                            Warranty.Claim.clickChecked(i);
                            break;
                        case "serialNo":
                            Event.observe(i, "click", Warranty.Claim.index.choose.bindAsEventListener(Warranty.Claim.index, "serialized_Yes", "serialized_No"));
                            Warranty.Claim.clickChecked(i);
                            break;
                        case "start":
                            Event.observe(i, "click", Warranty.Claim.validSerial.bindAsEventListener(Warranty.Claim));
                            break;
                        case "start_no_script":
                            Event.observe(i, "click", Warranty.Claim.validClaimNumber.bindAsEventListener(Warranty.Claim));
                            break;
                        case "serno":
                            Event.observe(i, "keydown", Warranty.Claim.handleEnterKey.bindAsEventListener(Warranty.Claim, "start"));
                            break;
                        case "edit":
                            Event.observe(i, "click", Warranty.Claim.index.edit);
                            break;
                        case "back":
                            Warranty.Claim.checkHistory(i);
                            Event.observe(i, "click", Warranty.Claim.back);
                            break;
                        case "save":
                            //i.disable();
                            //Event.observe(i, "click", Warranty.Claim.save);
                            break;
                        case "quit":
                            Event.observe(i, "click", Warranty.Claim.quit);
                            break;
                        default:
                            break;
                    }
                });
            }
        },

        index2:{
            address: function(e){
                Warranty.Claim.show(Event.element(e).value);
                Warranty.Claim.hide(Warranty.Claim.choice(Event.element(e).value, "correctAddress", "call"));
            },

            expired_address: function(e){
                Warranty.Claim.show(Event.element(e).value);
                Warranty.Claim.hide(Warranty.Claim.choice(Event.element(e).value, "correctAddressEx", "call"));
            },

            register: function(){
                var s = Form.Element.serialize("serno").replace(/serno/g, "serialnumber");
                var d = Form.Element.serialize("dealers");
                var m = Form.Element.serialize("model");
                Windows.New.popUp("register.pt?"+s+"&"+d+"&"+m, 750, 550);
            },

            continued: function(e){
                Warranty.Claim.show(Event.element(e).value);
                Warranty.Claim.hide(Warranty.Claim.choice(Event.element(e).value, "continue", "edit"));
            },

            expired: function(e){
                Warranty.Claim.show(Event.element(e).value);
                Warranty.Claim.hide(Warranty.Claim.choice(Event.element(e).value, "expired", "edit"));
            },

            edit: function(e){
                Windows.New.popUp("common/services/warranty/new/edit.pt?"+Form.Element.serialize("serno")+"&"+Form.Element.serialize("model")+"&"+Form.Element.serialize("registered"), 750, 550);
            },

            prepareForm:function(container){
                var i = Form.getInputs(container);
                i.each(function(i){
                    switch (i.id){
                        case "correctTownYes":
                            Event.observe(i, "click", Warranty.Claim.index2.address.bindAsEventListener(Warranty.Claim.index2));
                            Warranty.Claim.clickChecked(i);
                            break;
                        case "correctTownNo":
                            Event.observe(i, "click", Warranty.Claim.index2.address.bindAsEventListener(Warranty.Claim.index2));
                            Warranty.Claim.clickChecked(i);
                            break;
                        case "correctTownExpiredYes":
                            Event.observe(i, "click", Warranty.Claim.index2.expired_address.bindAsEventListener(Warranty.Claim.index2));
                            Warranty.Claim.clickChecked(i);
                            break;
                        case "correctTownExpiredNo":
                            Event.observe(i, "click", Warranty.Claim.index2.expired_address.bindAsEventListener(Warranty.Claim.index2));
                            Warranty.Claim.clickChecked(i);
                            break;
                        case "correctAddressYes":
                            Event.observe(i, "click", Warranty.Claim.index2.continued.bindAsEventListener(Warranty.Claim.index2));
                            Warranty.Claim.clickChecked(i);
                            break;
                        case "correctAddressNo":
                            Event.observe(i, "click", Warranty.Claim.index2.continued.bindAsEventListener(Warranty.Claim.index2));
                            Warranty.Claim.clickChecked(i);
                            break;
                        case "correctAddressExpiredYes":
                            Event.observe(i, "click", Warranty.Claim.index2.continued.bindAsEventListener(Warranty.Claim.index2));
                            Warranty.Claim.clickChecked(i);
                            break;
                        case "correctAddressExpiredNo":
                            Event.observe(i, "click", Warranty.Claim.index2.continued.bindAsEventListener(Warranty.Claim.index2));
                            Warranty.Claim.clickChecked(i);
                            break;
                        case "register":
                            Event.observe(i, "click", Warranty.Claim.index2.register.bindAsEventListener(Warranty.Claim.index2));
                            break;
                        case "edit":
                            Event.observe(i, "click", Warranty.Claim.index2.edit.bindAsEventListener(Warranty.Claim.index2));
                            break;
                        case "back":
                            Warranty.Claim.checkHistory(i);
                            Event.observe(i, "click", Warranty.Claim.back);
                            break;
                        case "save":
                            //i.disable();
                            //Event.observe(i, "click", Warranty.Claim.save);
                            break;
                        case "quit":
                            Event.observe(i, "click", Warranty.Claim.quit);
                            break;
                        case "previous":
                            Event.observe(i, "click", Warranty.Claim.prev);
                            break;
                        case "pending":
                            Event.observe(i, "click", Warranty.Claim.pend);
                            break;
                        default:
                            break;
                    }
                });
            }
        },

        index2_1: {

            validate: function(event){
                var v = new Validator(event);
                var opt = ["address2", "company", "email", "areacode", "exchange", "number", "extension"];

                if ($("company") && $("company").value != ''){
                    opt = opt.concat(['first', 'last']);
                }

                v.setOpt(opt);
                return v.validate();
            },

            prepare: function(){
                var elements = $("cust_info").getElements();
                elements.each(function(e){
                    switch (e.id){
                        case "zip":
                            e.observe("blur", Forms.Data.cityStateCountryByZip_ajax.bindAsEventListener(Forms.Data));
                            break;
                        case "next":
                            Event.observe(e, "click", Warranty.Claim.index2_1.validate.bindAsEventListener(Warranty.Claim.index2_1));
                            break;
                        case "back":
                            Warranty.Claim.checkHistory(e);
                            Event.observe(e, "click", Warranty.Claim.back);
                            break;
                        case "quit":
                            Event.observe(e, "click", Warranty.Claim.quit);
                            break;
                        default:
                            break;
                    }
                });
                Form.findFirstElement("cust_info").focus();
                Forms.Init.preparePhone("phone");
                if ($("purch_date") && ($F("purch_date") != '')){
                    var date = new Date($F("purch_date"));
                }else{
                    var date = new Date();
                }
                Forms.Init.prepareDate("purchasedate", "Purchase Date", "purchase_date", date, parseInt(date.getFullYear(), 10)-5, date.getFullYear());
            }
        },


        index3:{

            ACCT_TYPE: new String(),

            validate: function(event){
                if (!($("parts").visible())){
                    if (!($("no_parts").checked)){
                        alert("Please either add parts or list logged labor hours");
                        Event.stop(event);
                        return false;
                    }
                };

                var v = new Validator(event);
                var opt = ["laborOnlyHours", "outsideRepairDescription", "outsideLaborCost",
                           "extenuatingCircumstancesDescription", "hoursUsed", "outsideLaborCostInvoice"];

                if ($("OR").visible())
                    opt = opt.without("outsideLaborCost", "outsideRepairDescription");

                if ($("LOContainer").visible())
                    opt = opt.without("laborOnlyHours");

                if ($("EC").visible())
                    opt = opt.without("extenuatingCircumstancesDescription");

                v.setOpt(opt);
                v.setNumeric(["zipcode", "outsideLaborCost"]);
                if (v.validate()){
                    ProgressSpinner.load("  Preparing Claim for Review...  ");
                    ProgressSpinner.show();
                    return true;
                }
                return false;
            },

            load: function(){
                $("parts_only").checked?$("LO").hide():$("LO").show();
                $("no_parts").checked?$("LO").show():$("LO").hide();
                $("outside_repair").checked?$("OR").show():$("OR").hide();
                $("extenuating_circumstances").checked?$("EC").show():$("EC").hide();
            },

            removeAttachment: function(event){
                Event.stop(event);
                var href = Event.element(event).href;
                var url = href.split("?")[0];
                var a = new Ajax.Request(url, {
                    method: "post",
                    parameters: {file:$F("attachedFile"), claimnumber:$F("claimno"), status:2},
                    onSuccess: function(transport){
                        var response = transport.responseXML.documentElement;
                        var removed = response.getElementsByTagName("removed")[0].firstChild.data;
                    }
                });
            },

            prepareForm:function(container){
                if ($F("failDate_js_var").empty()){
                    var dt = new Date();
                }else{
                    var dt = new Date($F("failDate_js_var"));
                }
                Warranty.Claim.index3.ACCT_TYPE = ($F("acct_type"));
                $("faildate").appendChild(FormControls.dateSelect("faildateSelect", 'failure_date', dt, dt.getFullYear()-5, dt.getFullYear()));
                Event.observe("addpart", "click", Warranty.Claim.details.partForm.open.bindAsEventListener(Warranty.Claim.details.partForm));
                Warranty.Claim.index3.load();
                Warranty.Claim.details.partForm.prepare();
                var i = Form.getInputs(container);
                i.each(function(i){
                    switch (i.id){
                        case "parts_only":
                            Event.observe(i, "click", Warranty.Claim.details.partsOnly.bindAsEventListener(Warranty.Claim.details));
                            break;
                        case "no_parts":
                            Event.observe(i, "click", Warranty.Claim.details.laborOnly.bindAsEventListener(Warranty.Claim.details));
                            break;
                        case "outside_repair":
                            Event.observe(i, "click", Warranty.Claim.details.outsideRepairs.bindAsEventListener(Warranty.Claim.details));
                            Warranty.Claim.details.outsideRepairs()
                            break;
                        case "extenuating_circumstances":
                            Event.observe(i, "click", Warranty.Claim.details.exCircumstances.bindAsEventListener(Warranty.Claim.details));
                            break;
                        case "previous":
                            Event.observe(i, "click", Warranty.Claim.prev);
                            break;
                        case "pending":
                            Event.observe(i, "click", Warranty.Claim.pend);
                            break;
                        case "next":
                            Event.observe(i, "click", Warranty.Claim.index3.validate.bindAsEventListener(Warranty.Claim.index3));
                            break;
                        case "back":
                            Warranty.Claim.checkHistory(i);
                            Event.observe(i, "click", Warranty.Claim.back);
                            break;
                        case "quit":
                            Event.observe(i, "click", Warranty.Claim.quit);
                            break;
                        default:
                            break;
                    }
                });
            }
        },

        details: {

            partsOnly: function(){
                if ($("parts_only").checked){
                    $("no_parts").disable();
                    $("outside_repair").disable();
                    $("extenuating_circumstances").disable();
                }else{
                    $("no_parts").enable();
                    $("outside_repair").enable();
                    $("extenuating_circumstances").enable();
                }
            },

            laborOnly: function(){
                if ($("no_parts").checked){
                    $("parts_only").disable();
                    new Effect.BlindDown("LO", {"duration":0.5});
                    Warranty.Claim.details.partControls.hide();
                    Warranty.Claim.details.partTable.PARTS.clear();
                    //if (!$("extenuating_circumstances").checked){
                    //    $("extenuating_circumstances").checked = true;
                    //    new Effect.BlindDown("EC", {"duration":0.5});
                    //    $("extenuating_circumstances").disable();
                    //}
                }else{
                    new Effect.BlindUp("LO", {"duration":0.5});
                    Warranty.Claim.details.partControls.show();
                    $("parts_only").enable();
                    //$("extenuating_circumstances").enable();
                    //if ($("extenuatingCircumstancesDescription").value == ""){
                    //    $("extenuating_circumstances").checked = false;
                    //    new Effect.BlindUp("EC", {"duration":0.5});
                    //}
                }
            },

            outsideRepairs: function(){
                if ($("outside_repair").checked){
                    new Effect.BlindDown("OR", {"duration":0.5});
                    $("parts_only").disable();
                }else{
                    new Effect.BlindUp("OR", {"duration":0.5});
                    $("parts_only").enable();
                }
            },

            exCircumstances: function(){
                if ($("extenuating_circumstances").checked){
                    new Effect.BlindDown("EC", {"duration":0.5});
                }else{
                    new Effect.BlindUp("EC", {"duration":0.5});
                }
            },

            partControls: {

                show: function(){
                    new Effect.SlideDown("parts_container", {duration:0.5});
                },

                hide: function(){
                    new Effect.SlideUp("parts_container", {duration:0.5});
                }
            },

            partTable:{

                PARTS: new Array(),

                loadStoredParts: function(parts){
                    if ($F("acct_type")){
                        Warranty.Claim.index3.ACCT_TYPE = $F("acct_type");
                    }
                    $A(parts).each(function(part){
                        Warranty.Claim.details.partTable.updatePartList(part);
                    });
                    if (Warranty.Claim.details.partTable.PARTS.length > 0){
                        Warranty.Claim.details.partTable.show();
                    }
                },

                updateFromEdit: function(){
                    var a = $A(arguments);
                    var e = a.shift();
                    var i = a.shift();
                    var v = a.shift();
                    var p = Warranty.Claim.details.partTable.PARTS;
                    p[i]['partnumber'] = $("pn").value;
                    p[i]['quantity'] = $("qty").value;
                    p[i]['description'] = $("desc").value;

                    if ($("cost_fields").visible()){
                        p[i]['cost'] = $("cpu").value;
                    }else{
                        p[i]['cost'] = null;
                    }

                    if (Warranty.Claim.index3.ACCT_TYPE == 'B'){
                        //p[i]['invoice'] = $("invoice").value;
                        //p[i]['freight'] = $("freight").value;
                        p[i]['handling'] = $("hand").value;
                    }
                    this.display();
                    Warranty.Claim.details.partForm.close();
                    Warranty.Claim.details.partForm.enableFields([]);
                    Event.stopObserving("add", "click", Warranty.Claim.details.partTable.cached_update);
                    Event.observe("add", "click", Warranty.Claim.details.partForm.cached_add);
                    $("add").value = v;
                },


                editPart: function(e){
                    var tr = Event.element(e).parentNode.parentNode;
                    var index = parseInt(tr.id.substring(5, tr.id.length));
                    Warranty.Claim.details.partForm.open();
                    if (Warranty.Claim.index3.ACCT_TYPE == 'B'){
                        Warranty.Claim.details.partForm.disableFields(["pn", "qty"])
                    }
                    var p = Warranty.Claim.details.partTable.PARTS;
                    $("pn").value = p[index]['partnumber'];
                    $("qty").value = p[index]['quantity'];
                    $("desc").value = p[index]['description'];

                    if ($("cost_fields").visible()){
                       $("cpu").value = p[index]['cost'];
                    }

                    if (Warranty.Claim.index3.ACCT_TYPE == 'B'){
                        //$("invoice").value = p[index]['invoice'];
                        //$("freight").value = p[index]['freight'];
                        $("hand").value = p[index]['handling'];
                    }
                    Event.stopObserving("add", "click", Warranty.Claim.details.partForm.cached_add);
                    Warranty.Claim.details.partTable.cached_update = Warranty.Claim.details.partTable.updateFromEdit.bindAsEventListener(Warranty.Claim.details.partTable, index, $("add").value);
                    Event.observe("add", "click", Warranty.Claim.details.partTable.cached_update);
                    $("add").value = " Update Part ";
                },

                deletePart: function(e){
                    var tr = Event.element(e).parentNode.parentNode;
                    var index = parseInt(tr.id.substring(5, tr.id.length));
                    var parts = Warranty.Claim.details.partTable.PARTS;
                    parts[index] = null;
                    parts = parts.compact();
                    Warranty.Claim.details.partTable.PARTS = parts;
                    if (Warranty.Claim.details.partTable.PARTS.size() == 0){
                        Warranty.Claim.details.partTable.hide();
                    }else{
                        Warranty.Claim.details.partTable.display();
                    }
                },

                part: function(index){
                    return this.PARTS[index];
                },

                row: function(index){
                    var p = this.part(index);
                    var pn = p['partnumber'];
                    var po = p['part_origin'];
                    var qty = p['quantity'];
                    cost = '';
                    if (p['cost'] != null){
                        var cost = parseFloat(p['cost']).toFixed(2);
                    }
                    var desc = p['description'];
                    //var invoice, freight, hand;
                    var hand;
                    if (Warranty.Claim.index3.ACCT_TYPE == 'B'){
                        //invoice = p['invoice'];
                        //freight = p['freight'];
                        hand = p['handling'];
                    }
                    var idText = "parts"+index;
                    var t = "Part "+pn;

                    var inv, fr, ha, co;
                    if (cost != ''){
                        co = Builder.node("td", {id:idText+"_cost"},
                                [ "$"+cost, Builder.node("input", {type:"hidden", name:"parts.cost:records", value:cost}) ]);
                    }else{
                        co = Builder.node("td", {id:idText+"_cost"},
                                [ cost ]);
                    }
                    if (Warranty.Claim.index3.ACCT_TYPE == 'B'){
                        //if (invoice){
                        //    inv = Builder.node("td", {id:idText+"_invoice"},
                        //               [ invoice, Builder.node("input", {type:"hidden", name:"parts.invoice:records", value:invoice}) ]);
                        //}else{
                        //    inv = Builder.node("td", '');
                        //}
                        //if (freight){
                        //    fr = Builder.node("td", {id:idText+"_freight"},
                        //               [ '$'+freight, Builder.node("input", {type:"hidden", name:"parts.freight:records", value:freight}) ]);
                        //}else{
                        //    fr = Builder.node("td", '');
                        //}
                        if (hand){
                            ha = Builder.node("td", {id:idText+"_handling"},
                                       [ '$'+hand, Builder.node("input", {type:"hidden", name:"parts.handling:records", value:hand}) ]);
                        }else{
                            ha = Builder.node("td", '');
                        }
                    }

                    var edit = Builder.node("img", {id:"edit_"+idText, className:"imageIcon", src:"/common/images/icons/black_edit.png", title:"Edit part "+pn});
                    var dele = Builder.node("img", {id:"delete_"+idText, className:"imageIcon", src:"/common/images/icons/black_delete.png", title:"Delete part "+pn});

                    var row = Builder.node("tr", {id:idText, className:idText, title:t},
                                [Builder.node("td", {id:idText+"_partnumber"},
                                     [ pn,
                                       Builder.node("input", {type:"hidden", name:"parts.partnumber:records", value:pn}),
                                       Builder.node("input", {type:"hidden", name:"parts.part_origin:records", value:po})
                                     ]),
                                 Builder.node("td", {id:idText+"_description"},
                                     [ desc, Builder.node("input", {type:"hidden", name:"parts.description:records", value:desc}) ]),
                                 Builder.node("td", {id:idText+"_quantity"},
                                     [ qty, Builder.node("input", {type:"hidden", name:"parts.quantity:records", value:qty}) ]),
                                 co, inv, fr, ha,
                                 Builder.node("td", {id:idText+"_controls"}, [ edit, dele ])
                              ]);

                    Event.observe(edit, "click", Warranty.Claim.details.partTable.editPart.bindAsEventListener(Warranty.Claim.details));
                    Event.observe(edit, "mouseover", Cursor.pointer.bindAsEventListener(Cursor));
                    Event.observe(edit, "mouseout", Cursor.normal.bindAsEventListener(Cursor));
                    Event.observe(dele, "click", Warranty.Claim.details.partTable.deletePart.bindAsEventListener(Warranty.Claim.details));
                    Event.observe(dele, "mouseover", Cursor.pointer.bindAsEventListener(Cursor));
                    Event.observe(dele, "mouseout", Cursor.normal.bindAsEventListener(Cursor));

                    return row;
                },

                partIndex: function(part){
                    var p = this.PARTS;
                    for (var x=0;x<p.length;x++){
                        if (p[x]['partnumber'] == part['partnumber']){
                            return x;
                        }
                    }
                    return null
                },

                updatePartList: function(part){
                    var i = this.partIndex(part);
                    if(i != null && (parseFloat(this.PARTS[i]["cost"]) === parseFloat(part['cost']))){
                        var qty = parseInt(this.PARTS[i]["quantity"]);
                        qty += parseInt(part["quantity"]);
                        this.PARTS[i]["quantity"] = qty;
                    }else{
                      part["id"] = "part"+(this.PARTS.length);
                      if (part['price_net'] && Warranty.Claim.index3.ACCT_TYPE === 'B') {part['cost'] = part['price_net'];}
                      this.PARTS.push(part);
                    }
                    this.display();
                },

                display: function(){
                    $("partList").update('');
                    for (var x=0;x<this.PARTS.length;x++){
                        var r = this.row(x);
                        $("partList").appendChild(r)
                    }
                    IE.alphaByClassName("partList", "imageIcon");
                },

                show: function(){
                    if (!$("parts").visible()){ new Effect.SlideDown("parts", {duration:0.5}); }
                    $('no_parts').checked = false;
                    $('laborOnly').disable();
                    if ($("LOContainer").visible()){
                        new Effect.Fade("LOContainer", {duration:0.5});
                        $("laborOnly").hide();
                    }
                },

                hide: function(){
                    if ($("parts").visible()){ new Effect.SlideUp("parts", {duration:0.5}); }
                    $('no_parts').checked = true;
                    $('laborOnly').enable();
                    if (!$("LOContainer").visible()){
                        new Effect.Appear("LOContainer", {duration:0.5});
                        $("laborOnly").show();
                    }
                }
            },

            partForm: {

                open: function(){
                    Warranty.Claim.details.partForm.enableFields([])
                    Warranty.Claim.details.partForm.disableFields(["pn", "qty"])
                    $A($("add_part").getInputs('text')).each(function(i){
                        i.setStyle({width:"250px"});
                    });
                    if (Warranty.Claim.index3.ACCT_TYPE == 'B'){
                        $("cost_fields").show();
                    }
                    $("add_part").show();
                    Position.center(document.body, $("add_part"));
                    if ($("add_part").visible()){
                        Form.findFirstElement($("add_part")).focus();
                    }
                },

                close: function(){
                    $("pn").value = '';
                    $("qty").value = '';
                    $("cpu").value = '';
                    $("desc").value = '';
                    $("units").value = '';
                    if (Warranty.Claim.index3.ACCT_TYPE == 'B'){
                        //$("invoice").value = '';
                        //$("freight").value = '';
                        $("hand").value = '';
                    }
                    try{$("parterror").style.display = "none";}catch(e){}
                    new Effect.Fade($("add_part"), {"duration": 0.5});
                },

                disableFields: function(except){
                    if (Warranty.Claim.index3.ACCT_TYPE == 'B'){
                        $A($("add_part").getInputs("text")).each(function(i){
                            if ( !(except.includes(i.id)) ){
                                $(i).disable();
                            }
                        });
                    }
                },

                enableFields: function(except){
                    if (Warranty.Claim.index3.ACCT_TYPE == 'B'){
                        $A($("add_part").getInputs("text")).each(function(i){
                            if ( !(except.includes(i.id)) ){
                                i.enable();
                            }
                        });
                    }
                },

                add: function(e){
                    if ( ($("part_origin").value != "crary") && ($("cost_fields").visible()) ){
                        if ($("distributor").value == 'True'){
                            //$("invoice").optional = true;
                            //$("freight").optional = true;
                            $("hand").optional = true;
                        }
                    }
                    if (verifyForm(Event.element(e).form)){
                        var part = {"partnumber": $F("pn"), "quantity": $F("qty"), "description":$F("desc"), "part_origin":$F("part_origin")}
                        if ($("cost_fields").visible()){
                            part["cost"] = $F("cpu");
                            part["units"] = $F("units");
                        }else{
                            part["cost"] = null;
                            part["units"] = null;
                        }
                        if (Warranty.Claim.index3.ACCT_TYPE == 'B'){
                            //part['invoice'] = $F("invoice");
                            //part['freight'] = $F("freight");
                            part['handling'] = $F("hand");
                        }
                        Warranty.Claim.details.partTable.show();
                        Warranty.Claim.details.partTable.updatePartList(part);
                        this.close();
                        return true;
                    }
                    return false;
                },

                nonCraryPart: function(){
                    $("cost_fields").show();
                    $("part_origin").value = "non-crary";
                    var parts = Warranty.Claim.details.partTable.PARTS;
                    var desc = '';
                    for (var x=0;x<parts.length;x++){
                        if (parts[x]['partnumber'] == $F("pn")){
                            desc = parts[x]['description'];
                            break;
                        }
                        continue;
                    }
                    $("desc").value = desc;
                    var width = Element.getDimensions("desc")['width'];
                    $("parterror").setStyle({backgroundColor:'yellow', width:(width-10)+"px", padding:"10px", textAlign:"justify"});
                    var msg = "#{partnumber} is not a valid Crary Industries part number.  ";
                    msg += "Please ensure the part number is correct.  ";
                    msg += "If correct, please be sure to include Cost and Description.  ";
                    msg += "<br/><br/><b>You will be required to provide invoices for any and all non-crary parts.  Currently, these will need to be mailed to the appropriate parties.</b>"

                    var t = new Template(msg);
                    try{
                        Warranty.Claim.details.partForm.enableFields([]);
                        Warranty.Claim.details.partForm.disableFields(["pn", "qty", "desc", "cpu"]);
                        $("parterror").update(t.evaluate({"partnumber":$F("pn")}));
                        if (!$("parterror").visible()){
                            new Effect.Appear($("parterror"), {duration:1.5});
                        }else{
                            new Effect.Highlight($("parterror"), {});
                        }
                    }catch (e){
                        alert(t.evaluate({"partnumber":$F("pn")}));
                    }
                },

                pAndD: function(){
                    var pn = $("pn");
                    if (!pn.value.empty()){
                        Ajax.Responders.register({
                            onCreate: function(transport){
                                ProgressSpinner.load("Gathering part information, please wait...");
                                ProgressSpinner.show();
                            },
                            onComplete: function(transport){
                                ProgressSpinner.hide();
                                delete ProgressSpinner;
                            }
                        });
                        var url = "/common/services/warranty/data/partData_py";
                        var a = new Ajax.Request(url, {
                            parameters: {xml:1, itemno:$F("pn"), acctno:$F("acctno"), dist:(Warranty.Claim.index3.ACCT_TYPE == 'B')?1:0},
                            method: "post",
                            onSuccess: function(transport){
                                ProgressSpinner.hide();
                                if (!($("distributor").value == 'True')){
                                    if ($("cost_fields").visible()){
                                        $("cost_fields").hide();
                                    }
                                    $("cpu").optional = true;
                                }
                                var response = transport.responseXML.documentElement;
                                if (response && response.hasChildNodes()){
                                    var description = response.getElementsByTagName("description");
                                    var units = response.getElementsByTagName("units");
                                    if (description && description[0].hasChildNodes()){
                                        try{new Effect.Fade($("parterror"), {duration:1.5});}catch(e){}
                                        $("desc").value = description[0].firstChild.data;
                                    }
                                    if (Warranty.Claim.index3.ACCT_TYPE == 'B'){
                                        $("cpu").value = response.getElementsByTagName("price")[0].firstChild.data;
                                        $("units").value = units[0].firstChild.data;
                                        //$("invoice").value = response.getElementsByTagName("invoice")[0].firstChild.data;
                                        //$("freight").value = response.getElementsByTagName("freight")[0].firstChild.data;
                                        $("hand").value = response.getElementsByTagName("handling")[0].firstChild.data;
                                    }
                                    $('part_origin').value = 'crary';
                                    Warranty.Claim.details.partForm.disableFields(["pn","qty"])
                                    $("qty").focus();
                                }else{
                                    Warranty.Claim.details.partForm.nonCraryPart();
                                }
                            },
                            onFailure: function(transport){
                                Warranty.Claim.details.partForm.nonCraryPart();
                            }
                        });
                    }
                },


                prepare: function(){
                    Event.observe("pn", "blur", Warranty.Claim.details.partForm.pAndD.bindAsEventListener(Warranty.Claim.details.partForm));
                    Event.observe("pn", "keydown", Warranty.Claim.handleEnterKey.bindAsEventListener(Warranty.Claim, "add"));
                    Event.observe("qty", "keydown", Warranty.Claim.handleEnterKey.bindAsEventListener(Warranty.Claim, "add"));
                    Event.observe("cpu", "keydown", Warranty.Claim.handleEnterKey.bindAsEventListener(Warranty.Claim, "add"));
                    Event.observe("desc", "keydown", Warranty.Claim.handleEnterKey.bindAsEventListener(Warranty.Claim, "add"));
                    if (Warranty.Claim.index3.ACCT_TYPE == 'B'){
                        //Event.observe("invoice", "keydown", Warranty.Claim.handleEnterKey.bindAsEventListener(Warranty.Claim, "add"));
                        //Event.observe("freight", "keydown", Warranty.Claim.handleEnterKey.bindAsEventListener(Warranty.Claim, "add"));
                        Event.observe("hand", "keydown", Warranty.Claim.handleEnterKey.bindAsEventListener(Warranty.Claim, "add"));
                    }
                    Warranty.Claim.details.partForm.cached_add = Warranty.Claim.details.partForm.add.bindAsEventListener(Warranty.Claim.details.partForm);
                    Event.observe("add", "click", Warranty.Claim.details.partForm.cached_add);
                    Event.observe("close", "click", Warranty.Claim.details.partForm.close.bindAsEventListener(Warranty.Claim.details.partForm));
                }
            }
        },

        index4: {

            openAttachment: function(event){
                Event.stop(event);
                return Windows.New.popUp(Event.element(event).href, 750, 550);
            },

            prepare: function(){
                if ($("attachment"))
                    Event.observe($("attachment"), "click", Warranty.Claim.index4.openAttachment.bindAsEventListener(Warranty.Claim.index4), true);
                $("form").getInputs("button").each(function(x){
                    switch (x.id){
                        case "back":
                            Warranty.Claim.checkHistory(x);
                            Event.observe(x, "click", function(event){
                                if (history.length >= 1)
                                    location.href = 'index3_html';
                            });
                            break;
                        case "print":
                            Event.observe(x, "click", Client.Page.print.bindAsEventListener(Client.Page));
                            break;
                        case "quit":
                            Event.observe(x, "click", Warranty.Claim.close.bindAsEventListener(Warranty.Claim));
                            break;
                        default:
                            break;
                    }
                });
            }
        },

        lists:{

            prepare:function(){
                var i = $A($("bottom").getElementsByTagName('input'));
                i.each(function(i){
                    if (i.name == "close"){
                        i.observe("click", Warranty.Claim.close.bindAsEventListener(Warranty.Claim));
                    }
                });
            }
        },


        validClaimNumber:function(e){
            f = Event.element(e).form;
            f.serno.optional = true;
            if (!$(f.claimno))
                return null;
            Event.stop(e);
            if (verifyForm(f)){
                ProgressSpinner.load("Validating Claim Number");
                ProgressSpinner.show();
                var a = new Ajax.Request('/common/services/warranty/data/claimNumberInUse.json', {
                    method: 'post',
                    evalJSON: true,
                    parameters: {claimnumber: $F("claimno")},
                    onSuccess: function(transport){
                        ProgressSpinner.hide();
                        response = transport.responseJSON;
                        $("claimnoExists").show()
                        if (response['inUse'] == 'true'){
                            $("claimnoExists").innerHTML = "Claim Number is in use, please enter a unique Claim Number.";
                        }else{
                            var claimno = $F("claimno");
                            if (claimno.match(/\D/g) != null){
                                $("claimnoExists").innerHTML = "Claim Number must be an positive whole number.";
                            }else{
                                $("claimnoExists").innerHTML = '';
                                f.action+="/"+f["start"].name.split(":")[0];
                                f.submit();
                            }
                        }
                    },
                    onComplete: function(){
                        ProgressSpinner.hide();
                    },
                    onFailure: function(){
                        ProgressSpinner.hide();
                        return false;
                    }
                });
                return true;
            }else{
                if ($("claimnoExists").visible()){
                    new Effect.Fade("claimnoExists", {duration:0.5})
                }
                ProgressSpinner.hide();
                return false;
            }
            return null;
        },

        validSerial:function(e){
            f = Event.element(e).form;
            Event.stop(e);
            if (verifyForm(f)){
                ProgressSpinner.load("Validating Serial Number");
                ProgressSpinner.show();
                var url = "/common/services/warranty/xml/validSerial.xml";
                var a = new Ajax.Request(url, {
                    parameters: {serno: f.serno.value.toUpperCase()},
                    method: "get",
                    onSuccess: function(transport){
                        var result = parseInt(transport.responseXML.documentElement.getElementsByTagName("result")[0].firstChild.data);
                        if ((result == 0) || (result == 3) || (result == 4)){
                            if(result == 4){
                                var msg = "The serial number #{serno} does not exist in our database.\n";
                                msg += "Please re-check it for accuracy and try again.\n\n";
                                msg += "If you continue to have problems, please call Crary Industries at: 1-800-247-7335.";
                                var t = new Template(msg);
                            }else if (result == 0){
                                var msg = "The serial number #{serno} is not valid for this product line.\n";
                                msg += "Please verify and try again.\n\n";
                                msg += "If you feel you have received this message due to an error, please call Crary Industries at: 1-800-247-7335.";
                                var t = new Template(msg);
                            }else{
                                var msg = "The serial number #{serno} does not map to a valid product.\n";
                                msg += "Please re-check it for accuracy and try again.\n\n";
                                msg += "If you continue to have problems, please call Crary Industries at: 1-800-247-7335.";
                                var t = new Template(msg);
                            }
                            $("sernoerror").innerHTML = t.evaluate({"serno":f.serno.value});
                            if ($("sernoerror").visible()){
                                new Effect.Highlight("sernoerror");
                            }else{
                                new Effect.Appear("sernoerror", {duration: 1.0});
                            }
                            ProgressSpinner.hide();
                            return false;
                        }else{
                            if ($("claimno")){
                                $("sernoerror").hide();
                                ProgressSpinner.load("Validating Claim Number");
                                ProgressSpinner.show();
                                var a = new Ajax.Request('/common/services/warranty/data/claimNumberInUse.json', {
                                    method: 'post',
                                    evalJSON: true,
                                    parameters: {claimnumber: $F("claimno")},
                                    onSuccess: function(transport){
                                        ProgressSpinner.hide();
                                        response = transport.responseJSON;
                                        if (response['inUse'] == 'true'){
                                            $("claimnoExists").update("Claim Number is in use, please enter a unique Claim Number.");
                                        }else{
                                            var claimno = $F("claimno");
                                            if (claimno.match(/\D/g) != null){
                                                $("claimnoExists").update("Claim Number must be an positive whole number.");
                                            }else{
                                                $("claimnoExists").update('');
                                                f.action+="/"+f["start"].name.split(":")[0];
                                                f.submit();
                                            }
                                        }
                                    }
                                });
                            }else{
                                f.action+="/"+f["start"].name.split(":")[0];
                                f.submit();
                            }
                            return true;
                        }
                    },
                    onComplete: function(){
                        ProgressSpinner.hide();
                    },
                    onFailure: function(){
                        ProgressSpinner.hide();
                        return false;
                    }
                });
            }else{
                if ($("sernoerror").visible()){
                    new Effect.Fade("sernoerror", {duration:0.5})
                }
                ProgressSpinner.hide();
                return false;
            }
            return null;
        },

        handleEnterKey:function(){
            var a = $A(arguments);
            var e = a.shift();
            var E = a.shift();
            if (e.keyCode == 13) {
                Event.stop(e);
                $(E).click();
            }
            return true;
        },

        Owner: {

            Edit: {

                validate: function(event){
                    var v = new Validator(event);
                    v.setOpt(["addr2", "extension", "email"]);
                    v.setNumeric(["zipcode"]);
                    return v.validate();
                },

                prepare: function(form){
                    Event.observe($(form), "submit", Warranty.Claim.Owner.Edit.validate.bindAsEventListener(Warranty.Claim.Owner.Edit));
                    var i = $(form).getInputs();
                    i.each(function(j){
                        switch (j.name){
                            case "zip":
                                j.observe("blur", Forms.Data.cityStateCountryByZip_ajax.bindAsEventListener(Forms.Data));
                                break;
                            case "close":
                                j.observe("click", Warranty.Claim.closeWithRefresh.bindAsEventListener(Warranty.Claim));
                                break;
                            default:
                                break;
                        }
                    });
                    Forms.Init.preparePhone("phone");
                }
            }
        },

        ProductRegistration: {

            validate: function(event){
                var v = new Validator(event);
                var opt = ["address2", "company", "email", "areacode", "exchange", "number", "extension",
                           "dealername", "dealeraddress", "dealeraddress2", "dealercity",
                           "dealerstate", "dealerzip", "dealercountry", "dealerareacode",
                           "dealerexchange", "dealernumber", "dealerextension"];
                if ($("dealerInfo") && $("dealerInfo").visible()){
                    opt = opt.without("dealername", "dealeraddress", "dealercity",
                                      "dealerstate", "dealerzip", "dealercountry",
                                      "dealerareacode", "dealerexchange", "dealernumber");
                }

                if ($("company") && $("company").value != ''){
                    opt = opt.concat(['first', 'last']);
                }

                v.setOpt(opt);
                return v.validate();
            },

            validatePurpose: function(event){
                var v = new Validator(event);
                return v.validateRadios("use", "Please Select a Purpose for your Product.");
            },

            companyGiven: function(event){
                if ($F(event.element()) != ''){
                    $("name_label").setStyle({fontWeight: 'normal'});
                }
            },

            prepare: function(){
                Event.observe($("registration"), "submit", Warranty.Claim.ProductRegistration.validate.bindAsEventListener(Warranty.Claim.ProductRegistration));
                var elements = $("registration").getElements();
                elements.each(function(e){
                    switch (e.id){
                        case "zip":
                            e.observe("blur", Forms.Data.cityStateCountryByZip_ajax.bindAsEventListener(Forms.Data));
                            if($("dealerSelect"))
                                e.observe("blur", Forms.Data.dealersByZip_ajax.bindAsEventListener(Forms.Data));
                            break;
                        case "company":
                            e.observe("blur", Warranty.Claim.ProductRegistration.companyGiven.bindAsEventListener(Warranty.Claim.ProductRegistration));
                            break;
                        case "dealer_zip":
                            e.observe("blur", Forms.Data.dealerCityStateCountryByZip_ajax.bindAsEventListener(Forms.Data));
                            break;
                        case "serialnumber":
                            e.observe("blur", Forms.Data.validSerial_ajax.bindAsEventListener(Forms.Data));
                            e.observe("blur", Forms.Data.modelNumber_ajax.bindAsEventListener(Forms.Data));
                            break;
                        case "register":
                            e.observe("click", Warranty.Claim.ProductRegistration.validatePurpose.bindAsEventListener(Warranty.Claim.ProductRegistration));
                            break;
                        case "close":
                            e.observe("click", Warranty.Claim.close.bindAsEventListener(Warranty.Claim));
                            break;
                        default:
                            break;
                    }
                });
                if (!$F("serialnumber").blank() || !$F("serialnumber").empty())
                    Form.Element.focus("serialnumber");
                Form.findFirstElement("registration").focus();
                Forms.Init.preparePhone("phone");
                var date = new Date();
                Forms.Init.prepareDate("purchasedate", "Purchase Date", "purchase_date", date, parseInt(date.getFullYear(), 10)-5, date.getFullYear());
            },

            registered: function(pe, parent){
                var a = new Ajax.Request("/common/services/warranty/data/isRegisteredProduct", {
                    method: "get",
                    parameters: {serno:$F("serno"), itemno:$F("model"), xml:1},
                    onSuccess: function(transport){
                        var response = transport.responseXML.documentElement;
                        var registered = response.firstChild.firstChild.data;
                        if (registered == "True"){
                            pe.stop();
                            ProgressSpinner.hide();
                            ProgressSpinner.load("Cleaning Up - Closing Window \n (If window doesn't close in 5 seconds, click here)");
                            ProgressSpinner.show();
                            var host = parent.opener.location.host;
                            var http = "http://";
                            var path = "/common/services/warranty/new/one.py";
                            var q = "?serno="+$F("serno")+"&confirmed=yes&serialized=serialized_Yes";
                            var url = http+host+path+q
                            parent.opener.location.replace(url);
                            parent.opener.focus();
                            parent.close();
                        }
                    },
                    onFailure: function(transport){}
                });
            },

            poll: function(parent, host){
                ProgressSpinner.load("Registering Product - Please Wait (Window will close Automatically)");
                ProgressSpinner.show();
                new PeriodicalExecuter(function(pe){
                    Warranty.Claim.ProductRegistration.registered(pe, parent, host);
                }, 5);
            }
        },


        Summary: {

            hasHistory: function(){
                return (window.history.length > 1)
            },

            backButton: function(button){
                if (Warranty.Claim.Summary.hasHistory()){
                    button.toggle();
                    button.observe("click", window.history.back.bindAsEventListener(window.history));
                }
            },

            submit: function(event, action, clk_action){
                //alert(action);
                //alert(clk_action);
                $("comments").action = action+"/"+clk_action+"_py";
                $("comments").submit();
            },

            submitQS: function(event, action, clk_action, qs){
                //alert(action);
                //alert(clk_action);
                event.stop();
                $("form").action = action+"/"+clk_action+"_py?"+qs;
                $("form").submit();
            },

            comments: function(event){
                clk_action = Event.element(event).id;
                $("comments").show();
                $("comments").getInputs("button").each(function(x){
                    switch (x.id){
                        case "sub":
                            Event.observe(x, "click", Warranty.Claim.Summary.submit.bindAsEventListener(Warranty.Claim.Summary, $("comments").action, clk_action))
                        default:
                            break;
                    }
                });
                $("form").getInputs("button").each(function(x){
                    x.enable();
                });
                $(clk_action).disable();

            },

            isDealer: function(){
                return ($F('deal') == 'True');
            },

            isCraryDealer: function(){
                return ($F('craryDeal') == 'True');
            },

            isDist: function(){
                return ($F('dist') == 'True');
            },

            isCrary: function(){
                return ($F('crary') == 'True');
            },

            isAR: function(){
                return ($F('ar') == 'True');
            },

            statusIs: function(status){
                return ($F("claimstatus") == status);
            },

            prepare: function(){
                Warranty.Claim.Summary.backButton($("back"));
                $("form").getInputs("submit").each(function(x){
                    switch (x.id){
                        case "resubmit":
                            if (Warranty.Claim.Summary.isDealer()){
                                if ( !( Warranty.Claim.Summary.statusIs(30) ||
                                        Warranty.Claim.Summary.statusIs(40) ||
                                        Warranty.Claim.Summary.statusIs(70) ) ){
                                    x.hide();
                                }
                                if ( ( Warranty.Claim.Summary.statusIs(70) &&
                                      !Warranty.Claim.Summary.isCraryDealer() ) ){
                                    x.hide();
                                }
                            }else if (Warranty.Claim.Summary.isDist()){
                                if ( !( Warranty.Claim.Summary.statusIs(60) ||
                                       Warranty.Claim.Summary.statusIs(70) ) ){
                                    x.hide();
                                }
                            }else{
                                x.hide();
                            }
                            Event.observe(x, "click", Warranty.Claim.Summary.submitQS.bindAsEventListener(Warranty.Claim.Summary, x.form.action, x.name, $("claimnumber").serialize()))
                            break;
                        default:
                            break;
                    }
                });
                $("form").getInputs("button").each(function(x){
                    switch (x.id){
                        case "accept":
                            if (Warranty.Claim.Summary.isDealer()){
                                if ( ( Warranty.Claim.Summary.statusIs(30) ) ){
                                    Event.observe(x, "click", Warranty.Claim.Summary.comments.bindAsEventListener(Warranty.Claim.Summary));
                                }else{
                                    x.hide();
                                }
                            }else if (Warranty.Claim.Summary.isDist()){
                                if ( ( Warranty.Claim.Summary.statusIs(60) ) ){
                                    Event.observe(x, "click", Warranty.Claim.Summary.comments.bindAsEventListener(Warranty.Claim.Summary));
                                }else{
                                    x.hide();
                                }
                            }else{
                                x.hide();
                            }
                            Event.observe(x, "click", Warranty.Claim.Summary.submit.bindAsEventListener(Warranty.Claim.Summary, x.form.action, x.name));
                            break;
                        case "applied":
                            if (Warranty.Claim.Summary.isDealer()){
                                x.hide();
                            }else{
                                Event.observe(x, "click", Warranty.Claim.Summary.comments.bindAsEventListener(Warranty.Claim.Summary));
                            }
                            break;
                        case "approve":
                            if (Warranty.Claim.Summary.isDealer()){
                                x.hide();
                            }else{
                                if ( ((Warranty.Claim.Summary.isDist()) && (Warranty.Claim.Summary.statusIs(20))) ){
                                    Event.observe(x, "click", Warranty.Claim.Summary.comments.bindAsEventListener(Warranty.Claim.Summary));
                                }else{
                                    x.hide();
                                }
                            }
                            break;
                        case "approvePlus":
                            if ( (Warranty.Claim.Summary.isCrary()) && (Warranty.Claim.Summary.statusIs(50)) ){
                                Event.observe(x, "click", Warranty.Claim.Summary.comments.bindAsEventListener(Warranty.Claim.Summary));
                            }else{
                                x.hide();
                            }
                            break;
                        case "deny":
                            if (Warranty.Claim.Summary.isDealer()){
                                x.hide();
                            }else{
                                if ( ((Warranty.Claim.Summary.isDist()) && (Warranty.Claim.Summary.statusIs(20))) ||
                                     ((Warranty.Claim.Summary.isCrary()) && (Warranty.Claim.Summary.statusIs(50))) ){
                                    Event.observe(x, "click", Warranty.Claim.Summary.comments.bindAsEventListener(Warranty.Claim.Summary));
                                }else{
                                    x.hide();
                                }
                            }
                            break;
                        case "info":
                            if (Warranty.Claim.Summary.isDealer()){
                                x.hide();
                            }else{
                                if ( ((Warranty.Claim.Summary.isDist()) && (Warranty.Claim.Summary.statusIs(20))) ||
                                     ((Warranty.Claim.Summary.isCrary()) && (Warranty.Claim.Summary.statusIs(50))) ){
                                    Event.observe(x, "click", Warranty.Claim.Summary.comments.bindAsEventListener(Warranty.Claim.Summary));
                                }else{
                                    x.hide();
                                }
                            }
                            break;
                        case "print":
                            Event.observe(x, "click", Client.Page.print.bindAsEventListener(Client.Page));
                            break;
                        case "quit":
                            Event.observe(x, "click", Warranty.Claim.close.bindAsEventListener(Warranty.Claim));
                            break;
                        default:
                            break;
                    }
                });
            }


       }
    }
}

