// quickview functions
var skuSelect;

function showBackImage () {
    switch_image('back');
}

function quickview_switchImage (image_name) {
    switch_image('front');
}

function switch_image (view) {
    var postData = "item_id=" 
                 + skuSelect.item_id 
                 + '&color_id=' 
                 + skuSelect.color_id
                 + '&view='
                 + view;
    document.getElementById('quickview_dyn').innerHTML = '<img src="/images/wait.gif" />';
    var callback = {
        success: function(o) {
            var old = document.getElementById('quickview_dyn');
            if (o.responseText.length > 0) {
                old.innerHTML = o.responseText;                
            }
        },
        failure: function (o) {}
    };

    YAHOO.util.Connect.asyncRequest(
        'POST',
        '/ajax/getImage',
        callback,
        postData);
}


function select_none() {
    var tabs = document.getElementById('tabs').childNodes;
    for (var i=0; i<tabs.length; i++) if (tabs[i].nodeType == 1) {
        tabs[i].className = "";
    }
    document.getElementById('overview').style.display = 'none';
    document.getElementById('more_info').style.display = 'none';
    document.getElementById('media').style.display = 'none';
}

function select_product_tab(href, content_id) {
    href.blur();
    select_none();
    href.parentNode.className = "selected";
    document.getElementById(content_id).style.display = 'block';
}


var zoom_image_src, alt_image_src;


function swap_zooms() {
    var a = document.getElementById("zoom_image");
    var b = document.getElementById("alt_image");
    var c = a.src;
    a.src = b.src;
    b.src = c;
}


function get_quickview(id, type, default_color, default_size, default_qty) {
    var defaults = default_color || default_size || default_qty;
    
    // if the window already exists:
    if (typeof wait == 'undefined'){
    // Initialize the temporary Panel to display while waiting for external content to load
        wait =
            new YAHOO.widget.Panel(
                'det',
                {
                  width:"534px",
                  fixedcenter: true,
                  close:false,
                  draggable:false,
                  zindex:101,
                  modal:true,
                  visible:false,
                  underlay:'none',
                  constraintoviewport: true,
                  iframe:false
                }
            );
    }

    var callback = {
        success: function(o) {
            wait.setBody(o.responseText);
            wait.render(document.body);
            wait.show();
            var e = document.getElementById("qv_js");
            if (e) {
                eval(e.innerHTML);
            }
            hideSwatchName(null);

            /* Underlay/Mask closes when it's clicked */
            var underlay = document.getElementById('det_mask');
            if(underlay)
                YAHOO.util.Event.addListener(underlay, "click", function(){wait.hide();});
            else
                alert("Mask doesn't exit");

            var shadow = initQuickviewShadow();
            // ie6 hack
            var iframe = buildIframe();

            wait.hideEvent.subscribe(function(){
                iframe.style.display = "none";
                shadow.style.display = "none";
            });

            var updatePos = function  () {
                iframe.style.left = (parseInt(YAHOO.util.Dom.getX('det'))-2) + 'px';
                iframe.style.top  = YAHOO.util.Dom.getY('det') + 'px';
                shadow.style.left = (YAHOO.util.Dom.getX('det') - 2) + 'px';
                shadow.style.top  = (YAHOO.util.Dom.getY('det') - 1) + 'px';
            }

            wait.moveEvent.subscribe(updatePos);
            //updateRecent();
        },
        failure: function (o) {
            wait.hide();
        }
    };
    
    var post_data = 'item_id=' + id;
    if (defaults) { 
        if(default_color != undefined)
            post_data += '&default_color=' + default_color;
        if(default_size != undefined)
            post_data += '&default_size=' + default_size;
        if(default_qty != undefined)
            post_data += '&default_qty=' + default_qty;
    };
    
    //to prevent next and prev item links from showing on overlay
    if (type == 'upsell' || type == 'pwp') {
        post_data += '&no_next=1';
    }
    
    YAHOO.util.Connect.asyncRequest(
        'POST',
        "/quickview?" + post_data,
        callback,
        '');
    return false;
}
// shadow: we are not using underlay
function initQuickviewShadow () {

    if (document.getElementById('qv_shadow') || false) {
        var shadow = document.getElementById('qv_shadow');
        shadow.style.display = 'block';
    }
    else{
        var shadow = document.createElement('div');
        shadow.id = "qv_shadow";
        document.body.appendChild(shadow);
    }

    shadow.style.width = '544px';
    shadow.style.height = document.getElementById('det').offsetHeight + 4 + 'px';
    shadow.style.left = (YAHOO.util.Dom.getX('det') - 2) + 'px';
    shadow.style.top = (YAHOO.util.Dom.getY('det') - 1) + 'px';

    return shadow;
}


/* Wishlist */
function printWishlist() {
    var sUrl = "/wishlist/print";
    popup(sUrl, 'print', 970, 761, true);
}
function printGroup() {
    var x = '';
    for (var i=0; i < skus_select.length; i++) {
        x += skus_select[i].item_id + ',';
    };
    var sUrl = "/g/print?ids=" + x;
    popup(sUrl, 'print', 970, 761, true);
}

function validateQvSizeQty () {
    var line_id = 0;
    var customError = document.getElementById('custom-alert');
    var alertQvDiv = document.getElementById('qv_errors');
    var errCount = 0;

    if (alertQvDiv) alertQvDiv.style.display = 'none';
    if (customError) customError.innerHTML = '';


    var e = document.getElementById('qty_select_' + line_id);
    if (e.value == null || e.value == '') {
        customError.innerHTML = qtySelectError;
        errCount++;
    }

    e = document.getElementById('size_select_' + line_id);
    if (e.options.length > 1 && (e.value == null || e.value == '')) {
        if (errCount) customError.innerHTML += '<br/>';
        customError.innerHTML += sizeSelectError;
        errCount++;
    }

    if (errCount) {
        alertQvDiv.style.display = 'block';
    }

    if(errCount == 0){
        skuSelect.addToBag();
    }
}

/**
 * this function is in charge of adding bundle items to cart
 */

function validateQvSizeQtyBundle(){
    var customError = document.getElementById('custom-alert');
    var alertQvDiv = document.getElementById('qv_errors');
    
    if (alertQvDiv) 
        alertQvDiv.style.display = 'none';
    if (customError) 
        customError.innerHTML = '';
    
    var error = true;
    var sizeWarning;
    var qtyWarning;
    
    var item_num;
    for (var i = 0; i < skuSelect.length; i++) {
        var e = document.getElementById('qty_select_' + i);
        if (e.value == null || e.value == '' || e.value == 0) {
            item_num = document.getElementById("item_hidden_"+i).value;
            customError.innerHTML += 'Please choose a qty below for item '+item_num+' and click "add to cart" to continue<br/>';
            qtyWarning = true;
        }
        else qtyWarning = false;
        
        
        e = document.getElementById('size_select_' + i);
        if (e.options.length > 1 && (e.value == null || e.value == '')) {
            customError.innerHTML += 'Please choose a size below for item '+i+' and click "add to cart" to continue<br/>';
            sizeWarning = true;
        }
        else sizeWarning = false;
        
        if(!sizeWarning && !qtyWarning) error = false;    
    }
    
    
    if (error) {
        alertQvDiv.style.display = 'block';
    }

    if(!error){
        var ids = [];
        var colors = [];
        var sizes = [];
        var qtys = [];
        var idx = 0;
        for (var i = 0; i < skuSelect.length; i++) {
            if (skuSelect[i].getValue('item_id') &&
            skuSelect[i].getValue('color_id') &&
            skuSelect[i].getValue('size_id') &&
            skuSelect[i].getValue('qty')) {
                ids[idx] = skuSelect[i].getValue('item_id');
                colors[idx] = skuSelect[i].getValue('color_id');
                sizes[idx] = skuSelect[i].getValue('size_id');
                qtys[idx] = skuSelect[i].getValue('qty');
                idx++;
            }
        }   
        var postData = 'i=' + ids.join() + '&c=' + colors.join() + '&s=' + sizes.join() + '&q=' + qtys.join();
        
        var callback = {
            success:function(o) {
                if (typeof weAreInCart != "undefined" && weAreInCart == true) {
                    window.location.reload();
                    return;
                }
                if (o.responseText == undefined) return;
                if (typeof wait != 'undefined') wait.hide();
                
                //check if item was added or there was an availability change
                var add_success = o.responseText.match(/<br \//i);
                if(add_success){
                    responses = o.responseText.split('<br />');
                    open_header_cart(responses[0]);
                    document.getElementById('shopping_bag_counter').innerHTML = responses[1];
                    updateRecent();
                }
                else{
                    open_header_cart("There was an error while adding the item to your bag.");
                }
            },
            failure:function(o) {
                if (o.responseText == undefined) return;
                open_header_cart("There was an error while adding the item to your bag.");
            }
        };
        
        return YAHOO.util.Connect.asyncRequest('POST', "/cart/ajaxadd", callback, postData);
    }
}

var miniStoreLocator;
/**
 * opens the panel with the info of stores for a certain item
 * @param {Object} idx          item instance
 */
function searchInStore(idx) {
    var item_id = document.getElementById("item_hidden_"+idx).value;
    var color_id = document.getElementById("color_id_"+idx).value;
    var size_id = document.getElementById("size_select_"+idx).value;
    var zip = document.getElementById("zip_"+idx).value;
    if(typeof item_id == undefined || typeof color_id == undefined || typeof size_id == undefined){
        alert("This is not a valid product, please reload page or go back to the catalog and choose another product.")
        return;
    }
    
    if(typeof zip == undefined){
        alert("Please type in your zip code.")
        return;
    }
    
    var postData = 'item='+item_id+'&color='+color_id+'&size='+size_id+'&zip='+zip;
    var Url = "/detail/searchInStore";
    var callback = {
        success:function(o) {
            if (o.responseText == undefined) return;
            document.getElementById("searchInStore_base").innerHTML = o.responseText;
            var pos_x = (document.body.clientWidth - 620)/2;
            miniStoreLocator =
                new YAHOO.widget.Panel(
                    'searchInStore_base',
                    {
                      width:'620px',
                      x: pos_x,
                      y: 100,
                      close:false,
                      draggable:false,
                      iframe:true,
                      close:false,
                      zindex:300,
                      modal:true,
                      constraintoviewport: false,
                      scope:this,
                      fixedcenter: true
                    }
                );
            miniStoreLocator.render(document.body);
            miniStoreLocator.show();
        },
        failure:function(o) {

        }
    };

    return YAHOO.util.Connect.asyncRequest('POST', Url, callback, postData);    
}

function closeSearchInStore() {
    miniStoreLocator.hide();
}

function setStoreCookie(value){
    var c_name = "local_store";
    var expiredays = 30;
    var exdate=new Date();
    exdate.setDate(exdate.getDate()+expiredays);
    document.cookie=c_name+ "=" +escape(value)+
    ((expiredays==null) ? "" : ";expires="+exdate.toGMTString()+"; path=/");
}

function getCookie(c_name){
    var a = document.cookie;
    if (document.cookie.length>0)
      {
      c_start=document.cookie.indexOf(c_name + "=");
      if (c_start!=-1){
        c_start=c_start + c_name.length+1;
        c_end=document.cookie.indexOf(";",c_start);
        if (c_end==-1) c_end=document.cookie.length;
            return unescape(document.cookie.substring(c_start,c_end));
        }
      }
    return "";
}


function isArray(obj) {
   if (obj.constructor.toString().indexOf("function Array") == -1)
      return false;
   else
      return true;
}

var surchargePanel;

function openSurchargeNotice() {
    
    var body = '<div id="surcharge_panel" style="position: relative;"><div style="padding: 5px 30px 5px; top:100px; left:155px; position:absolute; border: 1px solid #522c1b; background-color:white;"><p style="color: #522c1b;">2<sup>nd</sup> Day Air shipments will be at a higher surcharge rate</p></div></div>';
    
    surchargePanel = new YAHOO.widget.Panel("surcharge_panel", {
                        width:"591px",
                        height:"153px",
                        constraintoviewport: true,
                        fixedcenter: true,
                        underlay:"none",
                        close:false,
                        visible:false,
                        draggable:false,
                        modal: false
                    });
    surchargePanel.setBody(body);

    surchargePanel.render(document.body);
    surchargePanel.show();
}

function closeSurchargeNotice(){
	surchargePanel.hide();
	return false;
}