/*
 * (c) Peralta Informatics 2008
 *
 */

if (!window.console) console = {log: function() {}};

String.prototype.format = function()
{
    var pattern = /\{\d+\}/g;
    var args = arguments;
    return this.replace(pattern, function(capture){ return args[capture.match(/\d+/)]; });
};

if(typeof(String.prototype.trim) === "undefined")
{
    String.prototype.trim = function() {
        return String(this).replace(/^\s+|\s+$/g, '');
    };
}

String.prototype.startsWith = function(str)
{
    return (this.indexOf(str) === 0);
}

function urlparam(param)
{
    var regex = '[?&]' + param + '=([^&#]*)';
    var results = (new RegExp(regex)).exec(window.location.href);

    if(results) {
        return results[1];
    }

    return '';
};

function dir(ob)
{
    out = [];

    for (attr in ob) {
        out.push('{0}: {1}'.format(attr, ob[attr]));
    }

    out.sort();

    return out;
}


$(document).ready(function()
{
    $("#ContactThankYou").dialog({
        autoOpen: false,
        modal: true,
        // width: 400,
        // height: 250,
        overlay: {
            opacity: 0.8
        }
    });

    $('#mailingListEmail').one('click', function() {
        $(this).val('');
        return false;
    });

    $('.mailingList .textBtn').click(function() {
      $.ajax({
          type: "POST",
          url: "/submit.yaws",
          dataType: "text",
          error: function(r, status, e) {
              alert(status + ' ' + e);
          },
          data: ({mlist_email: $('#mailingListEmail').val()}),
          success: function(data) {
            $('#mailingListEmail').val("Success!");
          }
      });
      return false;
    });
});

function SubmitContactMessage(source_)
{
    var name = $('#contactUsName').val();
    var email = $('#contactUsEmail').val();
    var subject = $('#contactUsSubject').val();
    var message = $('#contactUsMessage').val();
    var now = new Date();
    var ts = now.toGMTString();

    $.ajax({
        type: "POST",
        url: "/submit.yaws",
        dataType: "text",
        error: function(r, status, e) {
            alert(status + ' ' + e);
        },
        data: ({name: name, email: email, subject: subject, message: message, ts: ts}),
        success: function(data) {
            $('#contact_form > :input').val('');
            $("#ContactThankYou").dialog('open');
            // $('.success').show();
            // $('.success').delay(6000).hide();
        }
    });
}

function UnbindBind(u, page) {
    $(u).unbind('click');
    
    $(u).bind('click', function(e) {
        UpdateCurrentPage(page);
        location.hash = '#' + page;
        return false;
    });
    
    $(u).attr('href', '#' + page);
}

function UpdateCurrentPage(page) {
    $('.pageLis').hide();
    var numberOfPages = Number($('#numberOfPages').text())

    UnbindBind('.navRight a', page + 1);
    UnbindBind('.navLeft a', page - 1);

    if (page >= numberOfPages) {
        UnbindBind('.navRight a', 1);

        if (numberOfPages == 1) {
            UnbindBind('.navLeft a', 1);
        }
    }
    else if (page <= 1) {
        UnbindBind('.navLeft a', numberOfPages);
    }
    
    $('#currentPage').text(page);

    $('.pagination a').removeClass('current');
    $('.pagination a[i="{0}"]'.format(page)).addClass('current');

    var perPage = Number($("#itemsPerPage").text());
    var i = ((page - 1) * perPage) + 1;
    var rightLimit = i + perPage;

    $('.productGridWrapper').fadeIn(500);

    for (i; i < rightLimit; i++) {
        $('#pageLi' + i).fadeIn(500);
    }
    SetCookie(location.pathname + "current_page", page, 1);
}

$(document).ready(function() {
    $('.productImage img').fadeIn(500);
});

$(document).ready(function() {
    $ = jQuery.noConflict();

    var currentPage = document.getElementById('currentPage');

    if (typeof currentPage != 'undefined') {
        var page = 1;

        if (location.hash.length == 0 || location.hash == '#') {

            var cookiePage;
            
            if ((cookiePage = GetCookie(location.pathname + "current_page")) != "") {
                // page = Number(cookiePage);
            }

            if (page != 1) {
                location.hash = '#' + page;
            }
        }
        else {
            page = Number(location.hash.substr(1));
            if (isNaN(page)) {
                page = 1;
            }
        }

        UpdateCurrentPage(page);
    }

    $('.currentPageAnchor').click(function() {
        UpdateCurrentPage(Number($(this).html()));
    });
});

function SetCookie(c_name, value, expiredays)
{
    var exdate = new Date();
    exdate.setMinutes(exdate.getMinutes() + 5, 0, 0);
    document.cookie = c_name + "=" + escape(value) + ((expiredays == null) ? "" : ";expires=" + exdate.toGMTString());
}

function GetCookie(c_name)
{
    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 OnSortByChanged(select) {
    window.location = select.value;
}

$(function() {
    $('.dropdown .anchor').click(function(e) {
        e.preventDefault();
        return false;
    });

    $('.dropdown').hover(
        function() {
            $('ul', $(this)).stop(true, true);
            $('ul', $(this)).show();
        },
        function() {
            $('ul', $(this)).fadeOut(1000);
        }
    );

    $('.dropdown ul').hover(function() {
        $(this).stop(true, true);
    });
});

$(function() {
    if ($('.event_displayeddatetime').text().length == 0) {
        $('.event_timestamp').each(function() {
            var ts = parseInt($(this).text());
            var datetime = new Date(ts * 1000);
            $(this).html(datetime.toString('dddd, MMMM d, yyyy &#8212;  hh:mm tt'));
        });

        $('.event_timestamp').show();
    } else {
        $('.event_displayeddatetime').show();
    }
});

