var $j = jQuery;

/* inputPrompt */
$j.fn.inputPrompt = function(options) {
   var defaults = {
      activeColor:'#000000',
      inactiveColor:'#999999'
   };

   var opts = $j.extend(defaults, options);
   if ( ! 'prompt' in opts)
      return false;

   var input = $(this);

   input.val(opts.prompt);
   input.addClass('inputprompt-off');
   //input.css({color:opts.inactiveColor});

   input.focus(function() {
      if (input.val() == opts.prompt)
         input.val('');

      //input.css({color:opts.activeColor});
      input.removeClass('inputprompt-off').addClass('inputprompt-on');
   });

   input.blur(function() {
      if (input.val() == '')
         input.val(opts.prompt);

      //input.css({color:opts.inactiveColor});
      input.removeClass('inputprompt-on').addClass('inputprompt-off');
   });
}

/* Generic function to open a popup window, with defaults */
function popup(url, height, width) {
   height = (height == null) ? 600 : height;
   width = (width == null) ? 525 : width;
	window.open(url, 'window','width=' + width + ',height=' + height + ',scrollbars=yes,resizable=1');
	return false;
}

/* detail zoom */
function enableZoom(element) {
   if (element == undefined) element = 'a#jblink';
   $j(element).jqzoom({
      zoomWidth: 200,
      zoomHeight: 200, 
      xOffset: 10,
      yOffset: 0,
      title: false,
      position: "right",
      preloadImages: false
   });
}

/* scroll widget */
$j.fn.scrollWidget = function() {
   $(this).find('ul li').hover(function() {
      $(this).find('a.scr-txtlink').animate({
         marginBottom:'-20px'
      },
      200);
      $j('p#' + this.id + '-desc').insertAfter("#scroll-widget ul");
   },
   function() {
      $(this).find('a.scr-txtlink').animate({
         marginBottom:'0'
      },
      200);
   });
}

function alternate(div_1, div_2) {
    $j('#' + div_1).toggle();
    $j('#' + div_2).toggle();
}

function fmtShippingCost(cost) {
    if (cost == 0) return 'FREE';
    else return '$' + (cost/100);
}

// read a cookie by name
function readCookie(name) {
   var nameEQ = name + "=";
   var ca = document.cookie.split(';');
   for(var i=0;i < ca.length;i++) {
      var c = ca[i];
      while (c.charAt(0)==' ') c = c.substring(1,c.length);
      if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
   }
   return null;
}

function createCookie(name,value,days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        var expires = "; expires="+date.toGMTString();
    }
    else var expires = "";
    document.cookie = name+"="+value+expires+"; path=/";
}

function eraseCookie(name) {
    createCookie(name,"",-1);
}

// decode a URL encoded string
function url_decode(str) {
     return unescape(str.replace(/\+/g, " "));
}

// decode a base64 encoded string
function base64_decode(input) {
   var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
   var output = "";
   var chr1, chr2, chr3;
   var enc1, enc2, enc3, enc4;
   var i = 0;
 
   input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
 
   while (i < input.length) {
 
      enc1 = keyStr.indexOf(input.charAt(i++));
      enc2 = keyStr.indexOf(input.charAt(i++));
      enc3 = keyStr.indexOf(input.charAt(i++));
      enc4 = keyStr.indexOf(input.charAt(i++));
 
      chr1 = (enc1 << 2) | (enc2 >> 4);
      chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
      chr3 = ((enc3 & 3) << 6) | enc4;
 
      output = output + String.fromCharCode(chr1);
 
      if (enc3 != 64) {
      output = output + String.fromCharCode(chr2);
      }
      if (enc4 != 64) {
      output = output + String.fromCharCode(chr3);
      }
 
   }
 
   return output;
}

function loginMsg(settings)
{
   if ( ! settings.baseurl_ssl)
      return false;

   if ( ! settings.loginphrase)
      settings.loginphrase = 'Log In';

   if ( ! settings.logoutphrase)
      settings.logoutphrase = 'Log Out';

   if ( ! settings.registerphrase)
      settings.registerphrase = 'Register';

   if ( ! settings.compact)
      settings.compact = false;

   var lin = readCookie('lin');
   if ( ! lin)
   {
      if (settings.compact) {
         var currentLinks = document.getElementById('toplinks2');
         currentLinks.innerHTML = '<a href="' + settings.baseurl_ssl + '/cust">' + settings.loginphrase + '</a> <span style="color:#666;">or</span> <a href="' + settings.baseurl_ssl + '/cust/register">' + settings.registerphrase + '</a> | ' + currentLinks.innerHTML;
      } else {
         document.getElementById('usermsg').innerHTML = '<a href="' + settings.baseurl_ssl + '/cust">' + settings.loginphrase + '</a> | <a href="' + settings.baseurl_ssl + '/cust">Your Account</a>';
      }
      return false;
   }

   lin = base64_decode(url_decode(lin)).split('\t');
   if ( ! lin[0])
      return false;

   var helloMsg = '<span>Hello, '  + lin[0] + '. <a href="/cust/logout">' + settings.logoutphrase + '</a>. (<a style="margin:0" href="/cust/logout">Not ' + lin[0] + '</a>?)</span>';
   if ( ! settings.compact)
      helloMsg = helloMsg + ' | <a href="' + settings.baseurl_ssl + '/cust">Your Account</a>';

   document.getElementById('usermsg').innerHTML = helloMsg;
   return true;
}

//Function to pick up current url parameters returns hash 
function getUrlVars() {
    var map = {};
    var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) {
        map[key] = value;
    });
    return map;
}

//function to add functions to existing body onload event so that you don't overwrite existing functions
function AddOnload(myfunc) {
    if(window.addEventListener)
        window.addEventListener('load', myfunc, false);
    else if(window.attachEvent)
        window.attachEvent('onload', myfunc);
}

/*
    Developed by Robert Nyman, http://www.robertnyman.com
    Code/licensing: http://code.google.com/p/getelementsbyclassname/
*/
var getElementsByClassName = function (className, tag, elm){
    if (document.getElementsByClassName) {
        getElementsByClassName = function (className, tag, elm) {
            elm = elm || document;
            var elements = elm.getElementsByClassName(className),
                nodeName = (tag)? new RegExp("\\b" + tag + "\\b", "i") : null,
                returnElements = [],
                current;
            for(var i=0, il=elements.length; i<il; i+=1){
                current = elements[i];
                if(!nodeName || nodeName.test(current.nodeName)) {
                    returnElements.push(current);
                }
            }
            return returnElements;
        };
    }
    else if (document.evaluate) {
        getElementsByClassName = function (className, tag, elm) {
            tag = tag || "*";
            elm = elm || document;
            var classes = className.split(" "),
                classesToCheck = "",
                xhtmlNamespace = "http://www.w3.org/1999/xhtml",
                namespaceResolver = (document.documentElement.namespaceURI === xhtmlNamespace)? xhtmlNamespace : null,
                returnElements = [],
                elements,
                node;
            for(var j=0, jl=classes.length; j<jl; j+=1){
                classesToCheck += "[contains(concat(' ', @class, ' '), ' " + classes[j] + " ')]";
            }
            try {
                elements = document.evaluate(".//" + tag + classesToCheck, elm, namespaceResolver, 0, null);
            }
            catch (e) {
                elements = document.evaluate(".//" + tag + classesToCheck, elm, null, 0, null);
            }
            while ((node = elements.iterateNext())) {
                returnElements.push(node);
            }
            return returnElements;
        };
    }
    else {
        getElementsByClassName = function (className, tag, elm) {
            tag = tag || "*";
            elm = elm || document;
            var classes = className.split(" "),
                classesToCheck = [],
                elements = (tag === "*" && elm.all)? elm.all : elm.getElementsByTagName(tag),
                current,
                returnElements = [],
                match;
            for(var k=0, kl=classes.length; k<kl; k+=1){
                classesToCheck.push(new RegExp("(^|\\s)" + classes[k] + "(\\s|$)"));
            }
            for(var l=0, ll=elements.length; l<ll; l+=1){
                current = elements[l];
                match = false;
                for(var m=0, ml=classesToCheck.length; m<ml; m+=1){
                    match = classesToCheck[m].test(current.className);
                    if (!match) {
                        break;
                    }
                }
                if (match) {
                    returnElements.push(current);
                }
            }
            return returnElements;
        };
    }
    return getElementsByClassName(className, tag, elm);
};

(function($) {
   $.fn.tabwidget = function(options) {
      var widget = $(this);

      var headings = $('.tabwidget-pane > a.tabwidget-title');
      var panes = $('.tabwidget-pane');

      if (headings.length != panes.length)
         return false;

      widget.prepend('<ul class="tabwidget-tabs clearfix"></ul>');
      var tabs = $(this).find('ul.tabwidget-tabs');

      var selected_tab = false;
      var hash = document.location.hash.substring(1);
      if (hash) {
         hash = hash.split(':');
         selected_tab = hash[0];
         selected_res = hash[1];
      }

      for (i = 0; i < panes.length; i++) {
         var badge = '';

         /* --- Temporary --- */
         if ($(headings[i]).attr('title') == 'Customer Photos')
            badge = '<img style="position: absolute; right: -14px; top: -16px;" src="/images/new_badge.png">';
         /* --- /Temporary --- */

         tabs.append('<li><a href="#' + $(headings[i]).attr('name') + '">' + $(headings[i]).attr('title') + '</a>' + badge + '</li>');
         panes[i].id = 'tabwidget-pane-' + $(headings[i]).attr('name');
      }

      tabs.find('a').click(function() {
         widget.find('.tabwidget-pane').css({display:'none'});
         var anchor = $(this).attr('href').replace(/(.*)#/, '');
         widget.find('div[id*=tabwidget-pane-' + anchor + ']').css({display:'block'});
         tabs.find('li.selected').removeClass('selected');
         $(this).parent('li').addClass('selected');
         return false;
      });


      if (selected_tab)
         tabs.find('a[href*=#' + selected_tab + ']').click();
      else
         tabs.find('a:first').click();
   };
})(jQuery);
