/* JSON */
(function($){var escapeable=/["\\\x00-\x1f\x7f-\x9f]/g,meta={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'};$.toJSON=typeof JSON==='object'&&JSON.stringify?JSON.stringify:function(o){if(o===null){return'null';}
var type=typeof o;if(type==='undefined'){return undefined;}
if(type==='number'||type==='boolean'){return''+o;}
if(type==='string'){return $.quoteString(o);}
if(type==='object'){if(typeof o.toJSON==='function'){return $.toJSON(o.toJSON());}
if(o.constructor===Date){var month=o.getUTCMonth()+1,day=o.getUTCDate(),year=o.getUTCFullYear(),hours=o.getUTCHours(),minutes=o.getUTCMinutes(),seconds=o.getUTCSeconds(),milli=o.getUTCMilliseconds();if(month<10){month='0'+month;}
if(day<10){day='0'+day;}
if(hours<10){hours='0'+hours;}
if(minutes<10){minutes='0'+minutes;}
if(seconds<10){seconds='0'+seconds;}
if(milli<100){milli='0'+milli;}
if(milli<10){milli='0'+milli;}
return'"'+year+'-'+month+'-'+day+'T'+
hours+':'+minutes+':'+seconds+'.'+milli+'Z"';}
if(o.constructor===Array){var ret=[];for(var i=0;i<o.length;i++){ret.push($.toJSON(o[i])||'null');}
return'['+ret.join(',')+']';}
var name,val,pairs=[];for(var k in o){type=typeof k;if(type==='number'){name='"'+k+'"';}else if(type==='string'){name=$.quoteString(k);}else{continue;}
type=typeof o[k];if(type==='function'||type==='undefined'){continue;}
val=$.toJSON(o[k]);pairs.push(name+':'+val);}
return'{'+pairs.join(',')+'}';}};$.evalJSON=typeof JSON==='object'&&JSON.parse?JSON.parse:function(src){return eval('('+src+')');};$.secureEvalJSON=typeof JSON==='object'&&JSON.parse?JSON.parse:function(src){var filtered=src.replace(/\\["\\\/bfnrtu]/g,'@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,']').replace(/(?:^|:|,)(?:\s*\[)+/g,'');if(/^[\],:{}\s]*$/.test(filtered)){return eval('('+src+')');}else{throw new SyntaxError('Error parsing JSON, source is not valid.');}};$.quoteString=function(string){if(string.match(escapeable)){return'"'+string.replace(escapeable,function(a){var c=meta[a];if(typeof c==='string'){return c;}
c=a.charCodeAt();return'\\u00'+Math.floor(c/16).toString(16)+(c%16).toString(16);})+'"';}
return'"'+string+'"';};})(jQuery);

/* COOKIES */
jQuery.cookie=function(d,e,b){if(arguments.length>1&&String(e)!=="[object Object]"){b=jQuery.extend({},b);if(e===null||e===undefined){b.expires=-1;}if(typeof b.expires==="number"){var g=b.expires,c=b.expires=new Date();c.setDate(c.getDate()+g);}e=String(e);return(document.cookie=[encodeURIComponent(d),"=",b.raw?e:encodeURIComponent(e),b.expires?"; expires="+b.expires.toUTCString():"",b.path?"; path="+b.path:"",b.domain?"; domain="+b.domain:"",b.secure?"; secure":""].join(""));}b=e||{};var a,f=b.raw?function(h){return h;}:decodeURIComponent;return(a=new RegExp("(?:^|; )"+encodeURIComponent(d)+"=([^;]*)").exec(document.cookie))?f(a[1]):null;};

/* PLACEHOLDER */
(function(c){function b(d){this.input=d;if(d.attr("type")=="password"){this.handlePassword();}c(d[0].form).submit(function(){if(d.hasClass("placeholder")){d[0].value="";}});}b.prototype={show:function(f){if(this.input[0].value===""||(f&&this.valueIsPlaceholder())){if(this.isPassword){try{this.input[0].setAttribute("type","text");}catch(d){this.input.before(this.fakePassword.show()).hide();}}this.input[0].value=this.input.attr("placeholder");this.input.addClass("placeholder");}},hide:function(){if(this.valueIsPlaceholder()&&this.input.hasClass("placeholder")){this.input.removeClass("placeholder");this.input[0].value="";if(this.isPassword){try{this.input[0].setAttribute("type","password");}catch(d){}this.input.show();this.input[0].focus();}}},valueIsPlaceholder:function(){return this.input[0].value==this.input.attr("placeholder");},handlePassword:function(){var d=this.input;d.attr("realType","password");this.isPassword=true;if(c.browser.msie&&d[0].outerHTML){var e=d[0].outerHTML.replace(/type=(['"])?password\1/gi,"type=$1text$1");this.fakePassword=c(e).val(d.attr("placeholder")).addClass("placeholder").focus(function(){d.trigger("focus");c(this).hide();});}}};var a=!!("placeholder" in document.createElement("input"));c.fn.placeholder=function(){return a?this:this.each(function(){var d=c(this);var e=new b(d);e.show(true);d.focus(function(){e.hide();});d.blur(function(){e.show(false);});if(c.browser.msie){c(window).load(function(){if(d.val()){d.removeClass("placeholder");}e.show(true);});d.focus(function(){if(this.value===""){var f=this.createTextRange();f.collapse(true);f.moveStart("character",0);f.select();}});}});};})(jQuery);

jQuery(function() {
    jQuery('input[placeholder], textarea[placeholder]').placeholder();
});

if ( ListaMax === undefined ) var ListaMax = {};

/* Settings */
ListaMax.Settings = {};
ListaMax.Settings.cookieName = 'listamax_settings';

ListaMax.Settings.set = function(name, value) {
    var data = ListaMax.Settings.getValues();

    data[name] = value;
    ListaMax.Settings.setValues( data );
};

ListaMax.Settings.get = function(name) {
    var data = ListaMax.Settings.getValues();

    return data[name];
};

ListaMax.Settings.setValues = function( data ) {
    data = jQuery.toJSON( data );
    jQuery.cookie( ListaMax.Settings.cookieName, data, { expires: 7, path: '/' } );
};

ListaMax.Settings.getValues = function() {
    var data = jQuery.evalJSON( jQuery.cookie(ListaMax.Settings.cookieName) );

    return data ? data : {};
};

/* Search */
ListaMax.Search = {};

ListaMax.Search.make_category_dynamic = function()
{
    var container = jQuery('.listamax-api-search');

    container.find( '.listamax-api-search-category-EQ' ).change( function(){

        var form      = jQuery(this).closest("form");
        var formData  = form.serializeArray();
        var url       = form.attr('listamax_search_url');

        //Add Category
        formData.push( {name:'category', value: jQuery(this).val()} );

        //Make request to search for fields
        jQuery.ajax({
            url:      url,
            dataType: 'html',
            data:     formData,
            success:  function( response ){
                container.find('.listamax-api-search-more-content').html( response );
            }
        });

    });
};

ListaMax.Search.make_moreoptions_collapsible = function()
{
    jQuery('.listamax-api-search-more-label').click( function(){

        //Get Setting
        var isMoreOptionsActive = ( ListaMax.Settings.get('search-adv') !== false ) ? true : false;

        //Update Setting
        ListaMax.Settings.set('search-adv', !isMoreOptionsActive);

        jQuery('.listamax-api-search-more-content').toggle(400);
        jQuery('.listamax-api-search-more-label').toggleClass('listamax-api-search-more-label-collapsed');
    });

    if ( ListaMax.Settings.get('search-adv') === false ) {
        jQuery('.listamax-api-search-more-content').hide(0);
        jQuery('.listamax-api-search-more-label').toggleClass('listamax-api-search-more-label-collapsed');
    }
};

jQuery(function() {
    ListaMax.Search.make_category_dynamic();
    ListaMax.Search.make_moreoptions_collapsible();
});

/* Actions */
if ( ListaMax === undefined ) var ListaMax = {};
ListaMax.Actions = {};

ListaMax.Actions.options = {
    timeout: 250
};

ListaMax.Actions.make_actions = function(  ) {

    var elements = jQuery('.listamax-api-actions');
    var len      = elements.length;

    for( var i = 0 ; i < len ; i++ ){
        ListaMax.Actions.initialize( elements[i] );
    }
};

ListaMax.Actions.initialize = function( el ) {

    el    = jQuery( el );
    var links = el.find('a');
    var len   = links.length;

    //Create Container
    var div  = jQuery("<div class='listamax-api-actions'></div>");

    //Create Main Link
    var main = jQuery( links[0].clone( true ) );
    main.addClass('listamax-api-actions-main');
    div.append( main );

    //Create List
    var list = jQuery("<ul class='listamax-api-actions-list'></ul>");
    for( var i = 0; i < len ; i++ ){
        var li = jQuery("<li></li>");
        li.append( links[i] );
        list.append( li );
    }
    div.append( list );

    //Remove element from dom
    el.after( div );
    el.remove();

    //Map Events
    var timeout = false;
    var onMouseOver = function(){
        clearTimeout( timeout );
        timeout = setTimeout( function(){
            list.css('display' , 'block' );
        } , ListaMax.Actions.options.timeout );
    };

    var onMouseOut = function(){
        clearTimeout( timeout );
        timeout = setTimeout( function(){
                list.css('display' , 'none' );
        } , ListaMax.Actions.options.timeout );
    };

    main.on( 'mouseover' , onMouseOver );
    list.on( 'mouseover' , onMouseOver );
    main.on( 'mouseout'  , onMouseOut );
    list.on( 'mouseout'  , onMouseOut );

};

jQuery(function() {
    ListaMax.Actions.make_actions();
});

/* Favorites */
ListaMax.Favorites = {};
ListaMax.Favorites.cookieName = 'listamax_favorites';

ListaMax.Favorites.add = function(value) {

    var favorites = ListaMax.Favorites.getValues();
    value         = value.toString();

    //Don't Repeat Values
    if ( ListaMax.Favorites.exists(value) )
        return;

    favorites[ favorites.length ] = value;

    ListaMax.Favorites.setValues( favorites );
};

ListaMax.Favorites.remove = function(value) {

    var favorites = ListaMax.Favorites.getValues();
    value         = value.toString();

    //Remove
    var i = jQuery.inArray(value, favorites);
    if(i!=-1) favorites.splice(i, 1);

    ListaMax.Favorites.setValues( favorites );
};

ListaMax.Favorites.exists = function(value) {

    var favorites = ListaMax.Favorites.getValues();
    value         = value.toString();

    for( var i=0; i < favorites.length; i++ )
        if ( favorites[i] == value )
            return true;

    return false;
};

ListaMax.Favorites.setValues = function( values ) {
    jQuery.cookie( ListaMax.Favorites.cookieName, values, { expires: 365, path: '/' } );
};

ListaMax.Favorites.getValues = function( ) {

    var favorites = jQuery.cookie( ListaMax.Favorites.cookieName );

    if ( !favorites )
        return [];

    return favorites.split(',');
};


/* Dialog */
ListaMax.Dialog = {};

ListaMax.Dialog.make_dialog = function( values ) {

    ListaMax.Dialog.Object = jQuery('<div style="display:hidden"></div>').appendTo('body');

    ListaMax.Dialog.init = function() {

        ListaMax.Dialog.Object.dialog({
            autoOpen:    false,
            modal:       true,
            width:       'auto',
            minHeight:   '100',
            dialogClass: 'listamax-api-dialog',
            open: function(event, ui) {
                var width  = jQuery(this).dialog('widget').find('.ui-dialog-content').outerWidth();

                jQuery(this).dialog("option", "width"   , width );
                jQuery(this).dialog("option", "position", "center");
            },
            close: function(event, ui) {
                jQuery(this).dialog('destroy');
                jQuery(this).html('');
                ListaMax.Dialog.init();
            }
        });
    };
    ListaMax.Dialog.init();

    ListaMax.Dialog.open_ajax = function(Dialog, link) {

        //Params
        var params = ( link.attr('params') !== undefined ) ? jQuery.parseJSON( link.attr('params') ) : {};
        params.isDialog = true;

        // load remote content
        Dialog.load(link.attr('href'), params, function() {
            ListaMax.Dialog.open(Dialog, link);
        });
    };

    ListaMax.Dialog.open_div = function(Dialog, link) {

        //Div Id
        var id = link.attr('href');
        var Container = jQuery(id);

        if ( !Container.length )
            return;

        // load remote content
        Dialog.dialog('widget').find('.ui-dialog-content').html( Container.html() );

        ListaMax.Dialog.open(Dialog, link);
    };

    ListaMax.Dialog.open_message = function(Dialog, link) {

        var html = '<div class="listamax-api-dialog-message">' + link.attr('rel') + '</div>';

        Dialog.dialog("option", "buttons", {
            Ok: function() {
                Dialog.dialog("close");
            }
        });

        // load remote content
        Dialog.dialog('widget').find('.ui-dialog-content').html( html );

        ListaMax.Dialog.open(Dialog, link);
    };

    ListaMax.Dialog.open = function(Dialog, link) {
        Dialog.dialog("option", "title"   , link.attr('title') );
        Dialog.dialog("option", "position", "center");
        Dialog.dialog("open");
    };

    jQuery('.listamax-api-dialog-open').live('click', function(event) {

        event.preventDefault();
        var Dialog     = ListaMax.Dialog.Object;
        var link       = jQuery(this);

        if ( link.attr('rel') !== undefined )
            ListaMax.Dialog.open_message(Dialog, link);

        else if ( link.attr('href').substr(0,1) === '#' )
            ListaMax.Dialog.open_div(Dialog, link);

        else
            ListaMax.Dialog.open_ajax(Dialog, link);
    });

    jQuery('.listamax-api-dialog-close').live('click', function(event) {

        event.preventDefault();

        ListaMax.Dialog.Object.dialog('close');
    });

    jQuery('.listamax-api-dialog-form-ajax').live('submit', function() {

        var Dialog = ListaMax.Dialog.Object;
        var form   = jQuery(this);

        // load remote content
        Dialog.load( form.attr('action'), form.serializeArray(), function() {
            Dialog.dialog("option", "position", "center");
        });

        return false;
    });
};

jQuery(function() {
    ListaMax.Dialog.make_dialog();
});


