var knetbooks = {};

knetbooks.navigation = function(){
    //private
    function create_links(element){
        Event.observe(element, 'click', function(){
            link = element.down(1).href;
            location.href = link;
        });
    };
    function create_pointer(element){
        element = element.up();
        Event.observe(element, 'mouseover', function(){
            document.body.style.cursor = "pointer";
        });
        Event.observe(element, 'mouseout', function(){
            document.body.style.cursor = "auto";
        });
    };
    function create_hover_menu_and_pointer(element){
        original_element = element;
        element = element.up();
        Event.observe(element, 'mouseover', function(){
            document.body.style.cursor = "pointer";
            sub_menu = original_element.next();
            sub_menu.show();
        });
        Event.observe(element, 'mouseout', function(){
            document.body.style.cursor = "auto";
            sub_menu = original_element.next();
            sub_menu.hide();
        });
    };
    //public
    return {
        init_menu_links: function(){
            var nav_menu = $$('.nvElem .lnk');
            if (nav_menu) {
                nav_menu.each(function(menu_item){
                    create_links(menu_item);
                    if (menu_item.className.match("lnkArrow") == "lnkArrow") {
                        create_hover_menu_and_pointer(menu_item);
                    }
                    else {
                        create_pointer(menu_item);
                    }
                });
            }
        }
    };
}();

knetbooks.forms = function(){
    //private
    var clear = function(element){
        if (element.value != '') {
            element.defaultText = element.value;
        };
        element.onfocus = function(){
            element.value = '';
        };
        element.onblur = function(){
            if (element.value == '') {
                element.value = element.defaultText;
            };
                    };
    }
    
    //public
    return {
        clearText: function(){
            $$(".clrInpt").each(function(element){
                clear(element)
            });
        },
        submitForms: function(){
            $$("form").each(function(form){
                submit_link = form.down(".sbmtBtn")
                remote_submit = form.down(".rmtSbmtBtn")
                if (submit_link) {
                    Event.observe(submit_link, 'click', function(event){
                        Event.stop(event);
						form.submit();
                        
                    });
                }
                if (remote_submit) {
                    Event.observe(remote_submit, 'click', function(event){
                        Event.stop(event);
						form.onsubmit();
                        
                    });
                }
            })
        },
        codeInput: function(){
            var form = $('promoCode');
            if (form) {
                var code_boxes = form.getInputs('text');
                var code_length = 32;
                var number_of_boxes = code_boxes.length;
                var size_of_box = code_length / number_of_boxes;
                
                code_boxes.each(function(box, index){
                    new Form.Element.Observer(box, .1, function(element){
                        element.value = element.value.replace(/-|\s/gi, "");
                        
                        if (element.value.length > size_of_box) {
                            if (number_of_boxes != (index + 1)) {
                                temp_string = element.value.substring(size_of_box, element.value.length);
                                
                                next_box = element.next();
                                next_box.value = temp_string;
                                next_box.focus();
                                element.value = element.value.substring(0, size_of_box)
                            }
                            else {
                                element.blur();
                                element.value = element.value.substring(0, size_of_box)
                            }
                        }
                    })
                })
            }
        }
    };
}();

knetbooks.popups = function(){
    //private
    
    //public
    return {
        init: function(){
            $$(".popup").each(function(element){
                new Event.observe(element, 'click', function(event){
                    ele_id = element.id + "Content"
                    popup = $(ele_id)
                    popup.style.zindex = 100;
                    popup.style.position = "absolute";
                    popup.show();
                    
                    close_button = popup.down(".close")
                    
                    if (close_button) {
                        Event.observe(close_button, 'click', function(event){
                            popup.hide();
                        });
                    }
                });
            });
        }
    };
}();

knetbooks.books = function(){
    //private
    
    //public
    return {
        prices: function(){
            $$(".prces").each(function(element){
                new Ajax.Updater(element, '/javascript/price', {
                    parameters: {
                        isbn: element.id
                    },
                    method: "get",
                    onLoading: function(){
                        element.innerHTML = "<img src='/images/ajax-load.gif' >"
                    }
                });
            });
        },
        images: function(){
            $$(".bookListItm .photo").each(function(element){
                new Ajax.Updater(element, '/javascript/image', {
                    parameters: {
                        isbn: element.id
                    },
                    method: "get"
                });
            });
        }
    };
}();

knetbooks.accounts = function(){
    //private
    
    //public
    return {
        submit_current_rented_books: function(){
            var extend_submit = document.getElementById('my_account_extend_submit');
            if (extend_submit) {
                new Event.observe(extend_submit, 'click', function(event){
                    form = $('rental_actions_form');
                    input = document.createElement("input");
                    input.setAttribute("type", "hidden");
                    input.setAttribute("name", "type");
                    input.setAttribute("value", "extend");
                    return_submit.insert({
                        before: input
                    });
                    form.submit();
                });
            }
            
            var return_submit = document.getElementById('my_account_return_submit');
            if (return_submit) {
                new Event.observe(return_submit, 'click', function(event){
                    form = $('rental_actions_form');
                    input = document.createElement("input");
                    input.setAttribute("type", "hidden");
                    input.setAttribute("name", "type");
                    input.setAttribute("value", "return");
                    return_submit.insert({
                        before: input
                    });
                    form.submit();
                });
            }
            
            var purchase_submit = document.getElementById('my_account_purchase_submit');
            if (purchase_submit) {
                new Event.observe(purchase_submit, 'click', function(event){
                    form = $('rental_actions_form');
                    input = document.createElement("input");
                    input.setAttribute("type", "hidden");
                    input.setAttribute("name", "type");
                    input.setAttribute("value", "purchase");
                    return_submit.insert({
                        before: input
                    });
                    form.submit();
                });
            }
        }
    };
}();

loadKnetbooks = function(){
    document.observe("dom:loaded", function(){
        knetbooks.navigation.init_menu_links();
        knetbooks.forms.clearText();
        knetbooks.forms.submitForms();
        knetbooks.forms.codeInput();
        knetbooks.popups.init()
        //     knetbooks.books.images()
        knetbooks.books.prices()
        knetbooks.accounts.submit_current_rented_books()
    });
}();
