
var top_url = 'http://www.yummytime.com';
var current_url = window.location.toString();

// FIXME poorman's hack
current_url = current_url.replace(/#/g,'').replace(/\/$/,'');

function confirm_delete(item_name) {
    return window.confirm('Really delete this ' + item_name + '?');
}

function rollover(element,original_state_class,new_state_class) {
    $(element).removeClass(original_state_class).addClass(new_state_class);
}

function alert_failed(msg) { msg ? alert('Failed, '+ msg) : alert('Failed, Try again later') }

function showRegLogin(a, msg) { 
    msg = '<form action="/account/login" method="POST"><table class="regLoginForm"><tr><td colspan=2 class="title">Please <a href="#" onclick="return false;">login</a> or <a href="/account/register" class="register">register</a> to <b>' + msg + '</b><input type="hidden" name="back" value="' + current_url + '"></td></tr>';
    msg += '<tr><td class="inputField">Username </td><td><input type="text" name="username" maxlength=50 style="width: 100px;"></td></tr>';
    msg += '<tr><td class="inputField">Password </td><td><input type="password" name="password" maxlength=30 style="width: 100px;"></td></tr>';
    msg += '<tr style="text-align:center; font-size: 90%"><td style="padding-top:10px"><input class="Button" value="login" name="login" type="submit"></td>';
    msg += '<td style="padding-top:10px"><input class="Button" value="cancel" name="cancel" type="submit"></td></tr></table></form>';
    var d=$('<div class="error-notification" style="cursor: default">'+ msg +"</div>");
    var b=function(){
        d.fadeOut("fast", function(){$(this).remove() }  )
    };
    d.find('input[name=cancel]').click(function(e){b(); return false});

    $(a).append(d);
    d.fadeIn("fast"); 
}


function _showRegLogin(a, msg) { 
    msg = 'Please <a href="/account/login?back=' + current_url + '">login</a> or <a href="/account/register">register</a> to ' + msg;
    showAjaxError(a,msg); 
}

function showAjaxError(a,msg) { showAjaxMsg(a,msg,'error-notification') }
function showAjaxSuccess(a,msg) { showAjaxMsg(a,msg,'success-notification') }
function showAjaxMsg(a,msg,className){
    if(! msg) { msg = 'Failed, Try again later' } 
    var d=$('<div class="' + className + '"><h2>'+ msg +"</h2>(click on this box to dismiss)</div>");
    var b=function(){
        d.fadeOut("fast", function(){$(this).remove()}  )
        //$('.' + className).fadeOut("fast", function(){$(this).remove()}  )
    };
    d.click(function(e){b()});
    $(a).append(d);
    d.fadeIn("fast"); 
    setTimeout(b,1000*30)
}

function limitChars(textid, limit, infodiv) {
    var text = $('#'+textid).val();
    var textlength = text.length;
    if(textlength > limit){
        $('#' + infodiv).html('You cannot write more then '+limit+' characters!</span>');
        $('#'+textid).val(text.substr(0,limit));
        return false;
    } else {
        $('#' + infodiv).html((limit - textlength) +' characters left.</span>');
        return true;
    }
}

function ajaxHeart(action_url_prefix) {
        var current = $(this);

        var heart_action;
        var heart_class = current.attr('class');
        if ( heart_class.match(/hearted/) ) { 
            heart_action = 'unheart'; 
            heart_class = 'heart_button empty_heart'; 
        } else {
            heart_action = 'heart'; 
            heart_class = 'heart_button hearted'; 
        }

        $.ajax({ url: action_url_prefix + '/' + heart_action,
                 type: 'POST',
                 data: {},
                 dataType: 'json',
                 success: function(data) {
                     if ( data.success ) {
                         var hc = current.closest('table').find('.heartcount');
                         var heartcount = hc.html();
                         var title;
                         if ( heart_action == 'heart' ) {
                             heartcount++;
                             title = 'click to un-heart';
                         } else { 
                             heartcount--;
                             title = 'click to heart';
                         }
                         current.attr('title', title);
                         current.attr('class', heart_class);   
                         hc.html(heartcount);
                    } else {
                        showAjaxError(current.parent(), data.msg );
                    }
                 },
                 error: function(){ showAjaxError(current.parent(), null) }
        });
        return false;
}

jQuery(function($) {

/*
    jQuery.ajaxSetup({
        beforeSend: function() {
            jQuery('#save_loading_text').show();
        },    
        complete: function() {
            jQuery('#save_loading_text').hide();
        }
    });
*/

    // bind global ajax event handlers
    $().ajaxSend(function(){$('#ajax_loader').show()})
       .ajaxComplete(function(){$('#ajax_loader').hide()})

    var fb = $('#feedback_form_wrapper');
    var fb_textarea = fb.find('textarea[name=content]');
    fb_textarea.keyup(function(){
        var len = $(this).val().length;
        if ( len > 10 ) { 
            fb.find(':submit').show(); 
        } else if ( len < 10 ) { 
            fb.find(':submit').hide(); 
        }
    });
  tof.feedback = {
    open:  function(){ fb.show(); },
    close: function(){ fb.hide(); },
    submit:function(){
        var body_len = fb_textarea.val().length;
        if ( body_len > 1000 ){
            alert('You have reached the maximum feedback length.');
            return false;
        }

        $.ajax({ url: top_url + '/feedback',
                 type: 'POST',
                 data: fb.find('#feedback_form').serialize(),
                 dataType: 'json',
                 success: function(data) {
                    data.success ? alert('Thanks for your feedback.') : alert_failed( data.msg );
                 },
                 error: function(){ alert_failed() }
        });
    }};

}); 

jQuery.cookie=function(key,value,options){if(arguments.length>1&&(value===null||typeof value!=="object")){options=jQuery.extend({},options);if(value===null){options.expires=-1;} if(typeof options.expires==='number'){var days=options.expires,t=options.expires=new Date();t.setDate(t.getDate()+days);} return(document.cookie=[encodeURIComponent(key),'=',options.raw?String(value):encodeURIComponent(String(value)),options.expires?'; expires='+options.expires.toUTCString():'',options.path?'; path='+options.path:'',options.domain?'; domain='+options.domain:'',options.secure?'; secure':''].join(''));} options=value||{};var result,decode=options.raw?function(s){return s;}:decodeURIComponent;return(result=new RegExp('(?:^|; )'+encodeURIComponent(key)+'=([^;]*)').exec(document.cookie))?decode(result[1]):null;};

var notify=function(){
    var g=0;
    var c=-1;
    var d="m";
    var h=function(k){
        var j="<div"+(k.messageTypeId?' id="notify-'+k.messageTypeId+'"':"")+' style="display:none"><span class="notify-close"><a title="dismiss this notification">&times;</a></span><span class="notify-text">'+k.text+"</span>";
        j+="</div>";
        var n=$(j);
        n.find(".notify-close").click(function(){notify.close(k.messageTypeId)});
        $("#notify-container").append(n)
    };
    var i=function(j){$.cookie(d,1,{expires:90,path:"/"})};
    var e=function(){$("#notify-container div").fadeIn("slow")};
    var a=function(){$("body").animate({marginTop:"2.5em"},"fast","linear")};

    return{
        showFirstTime:function(j){
            if( ! $.cookie(d)){
                if(!/\/account\//i.test(window.location)){
                    a();
                    h({messageTypeId:c,text:j+' &mdash; check out the <a onclick="notify.closeFirstTime(); return false;" href="/faq">FAQ</a>!'});
                    e()
                }
            }
        },
        close:function(k){
            var j=$("#notify-"+k);
            var l=0;
            if(k==c){i()}
            if(--g>0){
                l=parseInt($("body").css("margin-top").match(/\d+/));
                l=l-(l/(g+1))
            }
            j.fadeOut("fast",function(){
                    $("body").animate({marginTop:l+"px"},"fast","linear");
                    j.remove()
            })
        },
        closeFirstTime:function(){
            document.location="/faq"
        },
        getMessageText:function(j){return $("#notify-"+j+" .notify-text").text()}
    }
}();

