var searchBtnOff = new Image(); searchBtnOff.src = '/images/search-off.gif';
var searchBtnOn = new Image();  searchBtnOn.src = '/images/search-on.gif';

function searchSetup() {
    var text = element('searchTxt');
    var button = element('searchBtn');
    
    if (!text || !button) {
        return;
    }
    
    var overFunc = function() {
        button.src = searchBtnOn.src;
    };
    var outFunc =  function() {
        if (text.className == 'text') {
            button.src = searchBtnOff.src;
        }
    };
    var onSubmit = function() {
        if (text.value == '' || text.value == text.defaultValue) {
            return false;
        } else {
            return true;
        }
    }
    
    addEvent(button, 'onmouseover', overFunc);
    addEvent(button, 'onmouseout',  outFunc);
    addEvent(button.form, 'onsubmit', onSubmit);
    
    
    var focusFunc = function() {
        if (!text.defaultValue) {
            text.defaultValue = button.value;
        }
        var body = document.getElementsByTagName('body').item(0);
        if (body.className.indexOf('search') == -1) {
            text.value = '';
        }
        button.src = searchBtnOn.src;
        text.className = 'focused text';
    };
    var blurFunc = function() {
        var body = document.getElementsByTagName('body').item(0);
        if (text.value == '' && body.className.indexOf('search') == -1) {
            text.value = text.defaultValue;
            button.src = searchBtnOff.src;
            text.className = 'text';
        }
    };
    
    addEvent(text, 'onfocus', focusFunc);
    addEvent(text, 'onblur',  blurFunc);
}

addEvent(window, 'onload', searchSetup);

function navSetup() {
    
    for (var i = 0; i < 8; i++) {
        var td = element('nav' + i);
        
        if (!td) {
            continue;
        }
        
        var overFunc = function(e) {
            this.style.background = '#000';
        };
        
        if (i == 0 || i == 7) {
            var outFunc = function() {
                if (this.getElementsByTagName) {
                    var link = this.getElementsByTagName('a').item(0);
                    link.style.color = '#FFF';
                }
                this.style.background = '#696969 url(/images/info-grad.gif) repeat-x bottom';
            };
        } else {
            var outFunc = function() {
                if (this.getElementsByTagName) {
                    var link = this.getElementsByTagName('a').item(0);
                    link.style.color = '#FFF';
                }
                this.style.background = '#444 url(/images/nav-grad.gif) repeat-x bottom';
            };
        }
        
        var downFunc = function() {
            if (this.getElementsByTagName) {
                var link = this.getElementsByTagName('a').item(0);
                link.style.color = '#000';
            }
            this.style.background = '#FFCC80';
            this.style.borderBottom = '4px solid #000';
        };
        
        if (td.getElementsByTagName && td.getAttribute) {
            var upFunc = function() {
                var link = this.getElementsByTagName('a').item(0);
                link.style.color = '#FFF';
                this.style.background = '#000';
                this.style.borderBottom = '4px solid #DEDEDE';
                window.location = link.getAttribute('href');
            };
            td.style.cursor = 'pointer';
        } else {
            var upFunc = function() {
                this.style.background = '#000';
            };
        }
        
        addEvent(td, 'onmouseover', overFunc);
        addEvent(td, 'onmouseout',  outFunc);
        addEvent(td, 'onmousedown', downFunc);
        addEvent(td, 'onmouseup',   upFunc);
    }
}

addEvent(window, 'onload', navSetup);

function subNavSetup() {
    if (!document.getElementsByTagName || !document.getElementById) {
        return;
    }
    
    var body = document.getElementsByTagName('body').item(0);
    var subnav = document.getElementById('subnav');
    
    if (!subnav || body.className == 'order') {
        return;
    }
    
    var cells = subnav.getElementsByTagName('td');
    
    for (var i = 0; i < cells.length; i++) {
        var cell = cells.item(i);
        
        if (cell.className.indexOf('section') != -1) {
            continue;
        }
        
        var overFunc = function() {
            this.parentNode.style.borderBottom = '4px solid #000';
        };
        var outFunc = function() {
            var body = document.getElementsByTagName('body')[0];
            if (body.className.indexOf(this.parentNode.className) != -1 ||
                this.parentNode.className.indexOf('selected') != -1) {
                this.parentNode.style.borderBottom = '4px solid #F90';
            } else {
                this.parentNode.style.borderBottom = '4px solid #DEDEDE';
            }
        };
        
        addEvent(cell.firstChild, 'onmouseover', overFunc);
        addEvent(cell.firstChild, 'onmouseout', outFunc);
    }
}

addEvent(window, 'onload', subNavSetup);

function addImageBorders() {
    var images = cssQuery('img.border');
    if (images.length == 0) {
        return;
    }
    
    for (var i = 0; i < images.length; i++) {
        if (images[i].parentNode.nodeName == 'A') {
            var link = images[i].parentNode;
            var div = link.parentNode;
        } else {
            var link = false;
            var div = images[i].parentNode;
        }
        
        div.style.position = 'relative';
        
        var border = document.createElement('div');
        div.appendChild(border);
        border.className = 'image_border';
        border.style.position = 'absolute';
        border.style.top = '0px';
        border.style.left = images[i].offsetLeft + 'px';
        border.style.width = (images[i].offsetWidth - 2) + 'px';
        border.style.height = (images[i].offsetHeight - 2) + 'px';
        
        if (link) {
            (function(link) {
                border.style.cursor = 'pointer';
                border.onmouseover = function() {
                    var href = link.getAttribute('href');
                    if (href.substr(0, 7) == 'http://') {
                        window.status = href;
                    } else if (href.substr(0, 1) == '/') {
                        window.status = 'http://' + window.location.host + href;
                    } else {
                        window.status = window.location + href;
                    }
                }
                border.onmouseout = function() {
                    window.status = '';
                }
                border.onclick = function() {
                    if (typeof(link.onclick) == 'undefined') {
                        window.location = link.getAttribute('href');
                    } else {
                        link.onclick();
                    }
                }
            })(link);
        }
    }
}

//addEvent(window, 'onload', addImageBorders);

function addDlSeparators() {
    var divs = cssQuery('dl div.separator');
    for (var i = 0; i < divs.length; i++) {
        var div = divs[i];
        var parent = div.parentNode;
        var before = div.previousSibling;
        var after = div.nextSibling;
        var target_width = parent.offsetWidth
                           - before.offsetWidth
                           - after.offsetWidth;
        while (div.offsetWidth < target_width - 5) {
            var old_html = div.innerHTML;
            div.innerHTML += '. ';
        }
        div = innerHTML = old_html;
    }
}

addEvent(window, 'onload', addDlSeparators);

function linkIcons() {
    if (!document.getElementsByTagName) {
        return;
    }
    var links = document.getElementsByTagName('a');
    for (var i = 0; i < links.length; i++) {
        var images = links[i].getElementsByTagName('img');
        if (images.length > 0 && images[0].src.indexOf('-off.') != -1) {
            links[i].onmouseover = function() {
                var img = this.getElementsByTagName('img')[0];
                img.orig_src = img.src;
                var start = img.src.lastIndexOf('-off.');
                img.src = img.src.substr(0, start) + '-on.' +
                          img.src.substr(start + 5);
            }
            links[i].onmouseout = function() {
                var img = this.getElementsByTagName('img')[0];
                img.src = img.orig_src;
            }
        }
    }
}

addEvent(window, 'onload', linkIcons);

function checkQuery() {
    var loc = '' + location.href;
    if (loc.indexOf('edit') != -1) {
        set_cookie('edit', 1);
    } else if (loc.indexOf('logout') != -1) {
        set_cookie('edit', 0);
    }
}

addEvent(window, 'onload', checkQuery);

function setupImagePager() {
    var pager = element('image_pager');
    
    if (!pager || !document.getElementsByTagName) {
        return;
    }
    
    var links = pager.getElementsByTagName('a');
    if (!links || links.length == 0) {
        return;
    }
    for (var i = 0; i < links.length; i++) {
        (function(i) {
            links[i].onmouseover = function() {
                document.getElementById('image_thumb' + image_thumb_default).style.visibility = 'hidden';
                var thumb = document.getElementById('image_thumb' + i);
                if (thumb) {
                    thumb.style.visibility = 'visible';
                    thumb.style.border = '1px solid #666';
                    document.getElementById('thumbs_help').style.visibility = 'visible';
                    document.getElementById('thumbs_help').style.marginTop = (thumb.offsetHeight + 4) + 'px';
                }
            }
            links[i].onmouseout = function() {
                var thumb = document.getElementById('image_thumb' + i);
                if (thumb) {
                    thumb.style.visibility = 'hidden';
                    thumb.style.border = '1px solid #CCC';
                }
                document.getElementById('image_thumb' + image_thumb_default).style.visibility = 'visible';
                document.getElementById('thumbs_help').style.visibility = 'hidden'; 
            }
            
        })(i);
    }
    
    var height = 0;
    var thumbs = cssQuery('div.image div.thumb');
    for (var i = 0; i < thumbs.length; i++) {
        if (thumbs[i].offsetHeight > height) {
            height = thumbs[i].offsetHeight;
        }
    }
    
    var new_bottom = thumbs[0].offsetTop + height;
    
    var main = document.getElementById('main');
    
    var curr_bottom = main.offsetTop + main.offsetHeight;
    if (30 + new_bottom - curr_bottom > 0) {
        main.style.paddingBottom = (30 + new_bottom - curr_bottom) + 'px';
    }
    
}

addEvent(window, 'onload', setupImagePager);

var image_thumb_default = 1;
var loc = '' + window.location;
var matches;
if (matches = loc.match(/\?image=([0-9]+)/)) {
    var image_thumb_current = matches[1];
    if (matches[1] > 1) {
        image_thumb_default = 0;
    }
}

function alignInlineSeries() {
    var divs = cssQuery('div.inline_series');
    if (divs.length < 2) {
        return;
    }
    
    var row_count = 0;
    var cols = [];
    for (var i = 0; i < divs.length; i++) {
        cols[i] = cssQuery('div.book_image_main', divs[i]);
        if (cols[i].length > row_count) {
            row_count = cols[i].length;
        }
    }
    
    for (var i = 0; i < row_count; i++) {
        var top = 0;
        for (var j = 0; j < divs.length; j++) {
            var div = cols[j][i];
            if (div && div.offsetTop > top) {
                top = div.offsetTop;
            }
        }
        for (var j = 0; j < divs.length; j++) {
            var div = cols[j][i];
            if (div && div.offsetTop < top) {
                div.style.paddingTop = (top - div.offsetTop) + 'px';
            }
        }
    }
}

addEvent(window, 'onload', alignInlineSeries);

function alignImagePager() {
    
    if (navigator.appName == 'Microsoft Internet Explorer') {
        var pager = element('image_pager');
        if (pager) {
            pager.style.display = 'none';
        }
    }
    
    var table = cssQuery('.image table.pager');
    var img = cssQuery('.book_image_main img');
    
    if (!img || !table || img.length == 0 || table.length == 0) {
        return;
    }
    
    var holder = cssQuery('div.image')[0];
    var margin = img[0].offsetLeft - holder.offsetLeft;
    table[0].style.marginLeft = margin + 'px';
    var thumbs = cssQuery('div.image div.thumb');
    for (var i = 0; i < thumbs.length; i++) {
        thumbs[i].style.marginLeft = margin + 'px';
        if (navigator.appName == 'Microsoft Internet Explorer') {
            thumbs[i].style.display = 'none';
        }
    }
    document.getElementById('thumbs_help').style.marginLeft = margin + 'px';
    
}

addEvent(window, 'onload', alignImagePager);

function shippingAddress(checkbox) {
    var shipping = document.getElementById('shipping');
    shipping.style.display = checkbox.checked ? 'none' : 'block';
}

function prepareShippingAddress() {
    if (!document.getElementById('one_address').checked) {
        return;
    }
    var fields = ['address', 'city', 'state', 'zip', 'country'];
    for (var i = 0; i < fields.length; i++) {
        document.getElementById('shipping_' + fields[i]).value =
            document.getElementById(fields[i]).value;
    }
}
