
// A global variable (boolean) to determine if the user is clt or not
window.isCLT = (!!Cookie.read("ZapEmp") && !!Cookie.read("SiteMgr"));

window.addEvent('domready', function() {
    if(!$('livechat'))
        return false;

    JiveChat.showChatTextLink('clt@workgroup.chat.zappos.com','Live Help',document.getElement("#livechat"));
});

window.addEvent('domready', function() {
    console.group("Zappos Dom Ready");
    console.time("Timing zappos.js window.domready");
    
    console.time("Timing buttionize");
    zlib.buttonize('a.button, button.button', 6);
    zlib.shoppingCartButtonize('.add-to-cart', 'product-form');
    zlib.actionButtonize('a.action-button');
    zlib.buttonize('.sc-button', 6);
    console.timeEnd("Timing buttionize");
  
    zlib.createRoundedCorners();
  
    
    
    var departments = departments || $('more-departments-wrap');
       
    if($('view-more-departments')) {
        $('view-more-departments').addEvent('click', function() {
            this.blur();
            if ($('more-depts').hasClass('active')) {
                $('more-depts').removeClass('active');
                departments.setStyle('display', 'none');
            } else {
                departments.setStyle('display', 'block');
                $('more-depts').addClass('active');
            }
            return false;
        });
        $(document.body).addEvent('click', function() {
            if ($('more-depts').hasClass('active')) {
                $('more-depts').removeClass('active');
                if (departments.getParent()) 
                    departments.setStyle('display', 'none');
            }
        });  
    }
    
    console.timeEnd("Timing zappos.js window.domready");
    console.groupEnd();
});

var zlib = new Object();

zlib.buttonize = function(selector, spans) {
    $$(selector).each(function(button) {
        if (button.hasClass("button-x"))
            return;
        var begin = "";
        var end = "";
            (spans).times(function() {
                begin = begin + "<span>";
                end = end + "</span>";
            });
        button.set('html', begin + button.get('html') + end);
    });
};

zlib.shoppingCartButtonize = function(selector, form) {
    $$(selector).each(function(button) {
        var a = new Element('a', {'class': 'sc-button', 'href': '#'});
        a.set('html', button.get('value'));
        a.addEvent('click', function(e) {
            e.preventDefault();
            var hidden = new Element('input', {'type': 'hidden'});
            hidden.set('name', 'add-to-cart');
            hidden.set('value', 'true');
            $(form).grab(hidden, 'top');
            $(form).fireEvent('submit');
        });
        a.replaces(button);
    });
};

zlib.actionButtonize = function(selector) {
    document.getElements(selector).each(function(button) {
        button.set('class', 'sc-button');
    });
};

zlib.createRoundedCorners = function() {
  if (Browser.Engine.webkit420) //webkit 3 has border-radius thus doesn't need to spend time doing this
    return true;
    
  console.time("Timing createRoundedCorners()");
  
  var extra = new Element('div', {'class': 'rounded'});
  extra.grab(new Element('div'));
  var clearDiv = new Element('div', {'class': 'clear', 'style': {'clear': 'both', 'font-size': '1px', 'line-height': '1px'}});
  
  $$('.round').each(function(element) {
      if (element.get('tag') == 'h3') {
          var h3Wrap = new Element('div', {'class': 'round-h3-wrap'});
          h3Wrap.grab(extra.clone(), 'top');
          h3Wrap.wraps(element);
          var newPadding = element.getStyle('padding-top').toInt()-5;
          newPadding = (newPadding < 0) ? 0 : newPadding;
          element.setStyle('padding-top', element.getStyle('padding-top').toInt()-5);

          h3Wrap.setStyle('margin', element.getStyle('margin'));
          element.setStyle('margin', 0);
      } else {
          var divWrap = new Element('div', {'class': 'round-div-wrap'});
          divWrap.wraps(element, 'top');
          if (element.hasClass('round-important')) {
              var lightExtra = extra.clone();
              lightExtra.addClass('rounded-important');
              divWrap.grab(lightExtra);
          } else {
              divWrap.grab(extra.clone());
          }
          var newPadding = element.getStyle('padding-bottom').toInt()-5;
          newPadding = (newPadding < 0) ? 0 : newPadding;
          element.setStyle('padding-bottom', newPadding);

          element.grab(clearDiv.clone());
          divWrap.setStyle('margin', element.getStyle('margin'));
          element.setStyle('margin', 0);
          element.setStyle('margin-left', 1);
      }
  });
  
  delete extra;
  delete clearDiv;
  
  console.timeEnd("Timing createRoundedCorners()");
  return true;
};
/* Quick Launch to Other Zappos Sites */
window.addEvent('domready', function() {
  if(!$('headerSubsites')) 
    return false;

  var quickAs = $('headerSubsites').getElements('a');
  var quicP = $('headerSubsites').getElement('p.first');

  var subQuick = new Element('select');
  subQuick.grab(new Element('option',{'selected':'selected','text':quicP.get('text')})); 
  quickAs.each(function(element){
    subQuick.grab(new Element('option',{'value':element.get('href'),'text':element.get('text')})); 
  });

  subQuick.addEvent('change',function(){
    if(this.options[this.selectedIndex].value != ''){
      window.top.location.href=this.options[this.selectedIndex].value;
    };
  });

  $('headerSubsites').empty();
  $('headerSubsites').grab(subQuick);

});

/* Brand category column leveling */
window.addEvent('domready', function() {
	var expandables = document.getElements('#content ul.expandable');
	expandables.each(function(element){
		new ToggleList(element, {'moreText': 'More', 'lessText': 'Less', 'collapsed': 11});
	});
});

/* Search Header - Clears text for input box */
window.addEvent('domready', function() {
    var searchInput = document.getElements("form input.entire-search");
    searchInput.addEvent('focus', function() {
        if (this.get('value') == '--Search--')
            this.set('value', '');
    });
    searchInput.addEvent('blur', function() {  
        if (this.get('value') == '')
            this.set('value', '--Search--');
    });
    searchInput.fireEvent('blur');
    document.getElements(".search-form").addEvent('submit', function() {
        var input = this.getElement(".entire-search");
        input.set('value', input.get('value').replace('--Search--', ''));
    });
});

window.addEvent('domready', function() {
    var el = $('overnight-clothes');
    if (el)
        el.addEvent('click', function(event) {
            event.preventDefault();
            window.open('/c/free-overnight-shipping-clothing-terms-and-conditions',
                        'overnightclothes',
                        'status=0,toolbar=0,location=0,menubar=0,directories=0,resizeable=1,scrollbars=1,height=400,width=470');
        });
});

Array.implement({
    applyToEach: function(fn) {
        var args = Array.prototype.slice.call(arguments, 1);
        this.each(function(item) {
            item[fn].apply(item, args);
        });
    }
});

String.implement({
    encodeNonChar: function() {
        var newString = "";
        
        this.split("").each(function(c) {
            newString += (c.match(/[a-zA-Z0-9]/) ? c : "&#" + c.charCodeAt(0) + ";");
        });
        
        return newString.toString();
    },
    
    cleanASCII: function() {
        var newString = new String(this.toString());
        var regexp = new RegExp("(?:&#([0-9]+);)");
        var result = regexp.exec(newString.toString());
        while(result != null && $type(result[1]) != 'undefined') {
            newString = newString.replace("&#" + result[1] + ";", String.fromCharCode(result[1]));
            result = regexp.exec(newString.toString());
        }
        return newString;
    }
});


window.addEvent('domready',function(){
if(document.getElement('#footer')) {
    /* random 'core values' generator in footer */
    var pickCV = Math.floor(Math.random()*10);
    var coreArray = [
        "<a href=\"http://about.zappos.com/our-unique-culture/zappos-core-values/deliver-wow-through-service\">Deliver WOW Through Service</a>",
        "<a href=\"http://about.zappos.com/our-unique-culture/zappos-core-values/embrace-and-drive-change\">Embrace and Drive Change</a>",
        "<a href=\"http://about.zappos.com/our-unique-culture/zappos-core-values/create-fun-and-little-weirdness\">Create Fun and A Little Weirdness</a>",
        "<a href=\"http://about.zappos.com/our-unique-culture/zappos-core-values/be-adventurous-creative-and-open-minded\">Be Adventurous, Creative, and Open-Minded</a>",
        "<a href=\"http://about.zappos.com/our-unique-culture/zappos-core-values/pursue-growth-and-learning\">Pursue Growth and Learning</a>",
        "<a href=\"http://about.zappos.com/our-unique-culture/zappos-core-values/build-open-and-honest-relationships-communication\">Build Open and Honest Relationships With Communication</a>",
        "<a href=\"http://about.zappos.com/our-unique-culture/zappos-core-values/build-positive-team-and-family-spirit\">Build a Positive Team and Family Spirit</a>",
        "<a href=\"http://about.zappos.com/our-unique-culture/zappos-core-values/do-more-less\">Do More With Less</a>",
        "<a href=\"http://about.zappos.com/our-unique-culture/zappos-core-values/be-passionate-and-determined\">Be Passionate and Determined</a>",
        "<a href=\"http://about.zappos.com/our-unique-culture/zappos-core-values/be-humble\">Be Humble</a>"
    ]

    document.getElement('#footer div.core-values ol').setStyle('display','none');
    document.getElement('#footer div.core-values h5').set('html','Zappos Core Value #'+(pickCV+1)+': <span>'+coreArray[pickCV]+'</span>');
    document.getElement('#footer div.core-values h5').setStyle('margin','10px 0');
}
}); 


/* Gift Card and Certificate Terms and Conditions Popup */
window.addEvent('domready', function() {
  if(document.getElements('#content a.gift-terms-conditions')) {
    var terms = document.getElements('#content a.gift-terms-conditions');
    terms.each(function(term, i) {
      term.addEvent('click', function(event) {
        event.preventDefault();
        window.open('http://zeta.zappos.com/c/gift-terms-conditions', 'gifttermsconditions', 'status=0,toolbar=0,location=0,menubar=0,directories=0,resizeable=1,scrollbars=1,height=600,width=700');
      })
    })
  }
});


var tid = Cookie.read('tid');
if(!tid) {
    console.log('writing');
    tid = random_string();
    Cookie.write('tid', tid, {domain : 'zappos.com', path : '/', duration : 999});
}

  function random_string() {
    var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz";
    var randomstring = '';
    for (var i = 0; i < 32; i++) {
     	var rnum = Math.floor(Math.random() * chars.length);
     	randomstring += chars.substring(rnum, rnum + 1);
    }
    return randomstring;
  }
