(function($){dOptions={expires:365,domain:'',secure:false,path:'/'}
$.cookie=function(cookieName){var value=null;if(document.cookie&&document.cookie!=''){var cookies=document.cookie.split(';');for(var i=0;i<cookies.length;i++){var cookie=jQuery.trim(cookies[i]);if(cookie.substring(0,cookieName.length+1)==(cookieName+'=')){value=decodeURIComponent(cookie.substring(cookieName.length+1));break;}}}
try{return JSON.parse(value);}catch(e){return value;}}
$.subCookie=function(cookie,key){var cookie=$.cookie(cookie);if(!cookie||typeof cookie!='object'){return null;}
return cookie[key];}
$.setCookie=function(cookieName,cookieValue,options){var options=typeof options!='undefined'?$.extend(dOptions,options):dOptions;var path='; path='+(options.path);var domain=""!=options.domain?'; domain='+(options.domain):"";var secure=options.secure?'; secure':'';if(cookieValue&&(typeof cookieValue=='function'||typeof cookieValue=='object')){cookieValue=JSON.stringify(cookieValue);}
cookieValue=encodeURIComponent(cookieValue);var date;if(typeof options.expires=='number'){date=new Date();date.setTime(date.getTime()+(options.expires*24*60*60*1000));}else{date=options.expires;}
var expires='; expires='+date.toUTCString();document.cookie=[cookieName,'=',cookieValue,expires,path,domain,secure].join('');}
$.setSubCookie=function(cookie,key,value,options){var options=typeof options!='undefined'?$.extend(dOptions,options):dOptions;var existingCookie=$.cookie(cookie);var cookieObject=existingCookie&&typeof existingCookie=='object'?existingCookie:{};cookieObject[key]=value;$.setCookie(cookie,cookieObject,options);}
$.removeSubCookie=function(cookie,key){var cookieObject=$.cookie(cookie);if(cookieObject&&typeof cookieObject=='object'&&typeof cookieObject[key]!='undefined'){delete cookieObject[key];$.setCookie(cookie,cookieObject);}}
$.removeCookie=function(cookie){$.setCookie(cookie,'',{expires:-1});}
$.clearCookie=function(cookie){$.setCookie(cookie,'');}})(jQuery);if(!this.JSON){this.JSON={};}
(function(){function f(n){return n<10?'0'+n:n;}
if(typeof Date.prototype.toJSON!=='function'){Date.prototype.toJSON=function(key){return isFinite(this.valueOf())?this.getUTCFullYear()+'-'+
f(this.getUTCMonth()+1)+'-'+
f(this.getUTCDate())+'T'+
f(this.getUTCHours())+':'+
f(this.getUTCMinutes())+':'+
f(this.getUTCSeconds())+'Z':null;};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(key){return this.valueOf();};}
var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'},rep;function quote(string){escapable.lastIndex=0;return escapable.test(string)?'"'+string.replace(escapable,function(a){var c=meta[a];return typeof c==='string'?c:'\\u'+('0000'+a.charCodeAt(0).toString(16)).slice(-4);})+'"':'"'+string+'"';}
function str(key,holder){var i,k,v,length,mind=gap,partial,value=holder[key];if(value&&typeof value==='object'&&typeof value.toJSON==='function'){value=value.toJSON(key);}
if(typeof rep==='function'){value=rep.call(holder,key,value);}
switch(typeof value){case'string':return quote(value);case'number':return isFinite(value)?String(value):'null';case'boolean':case'null':return String(value);case'object':if(!value){return'null';}
gap+=indent;partial=[];if(Object.prototype.toString.apply(value)==='[object Array]'){length=value.length;for(i=0;i<length;i+=1){partial[i]=str(i,value)||'null';}
v=partial.length===0?'[]':gap?'[\n'+gap+
partial.join(',\n'+gap)+'\n'+
mind+']':'['+partial.join(',')+']';gap=mind;return v;}
if(rep&&typeof rep==='object'){length=rep.length;for(i=0;i<length;i+=1){k=rep[i];if(typeof k==='string'){v=str(k,value);if(v){partial.push(quote(k)+(gap?': ':':')+v);}}}}else{for(k in value){if(Object.hasOwnProperty.call(value,k)){v=str(k,value);if(v){partial.push(quote(k)+(gap?': ':':')+v);}}}}
v=partial.length===0?'{}':gap?'{\n'+gap+partial.join(',\n'+gap)+'\n'+
mind+'}':'{'+partial.join(',')+'}';gap=mind;return v;}}
if(typeof JSON.stringify!=='function'){JSON.stringify=function(value,replacer,space){var i;gap='';indent='';if(typeof space==='number'){for(i=0;i<space;i+=1){indent+=' ';}}else if(typeof space==='string'){indent=space;}
rep=replacer;if(replacer&&typeof replacer!=='function'&&(typeof replacer!=='object'||typeof replacer.length!=='number')){throw new Error('JSON.stringify');}
return str('',{'':value});};}
if(typeof JSON.parse!=='function'){JSON.parse=function(text,reviver){var j;function walk(holder,key){var k,v,value=holder[key];if(value&&typeof value==='object'){for(k in value){if(Object.hasOwnProperty.call(value,k)){v=walk(value,k);if(v!==undefined){value[k]=v;}else{delete value[k];}}}}
return reviver.call(holder,key,value);}
text=String(text);cx.lastIndex=0;if(cx.test(text)){text=text.replace(cx,function(a){return'\\u'+
('0000'+a.charCodeAt(0).toString(16)).slice(-4);});}
if(/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,'@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,']').replace(/(?:^|:|,)(?:\s*\[)+/g,''))){j=eval('('+text+')');return typeof reviver==='function'?walk({'':j},''):j;}
throw new SyntaxError('JSON.parse');};}}());

var recipeUtil = {
    config: {
        site_cookie_name: "ofom-signature-session"
    },
    init: function () {},
    submittingForm: function () {
        var url = $('form.weekly-comment').attr('action');
        var name = $('form.weekly-comment #_name').val();
        var email = $('form.weekly-comment #_email').val();
        var comment = $('form.weekly-comment #_comment').val();
        var rid = $('form.weekly-comment #_recipe_id').val();
        $.ajax({
            type: "POST",
            url: url,
            data: {
                name: name,
                email: email,
                comment: comment,
                recipe_id: rid
            },
            success: function () {
                $('form.weekly-comment button').hide();
                $('.success-message').fadeIn('slow').delay(4000).slideUp(1000);
            }
        });
    },
    validate: function () {
        var name = $('form.weekly-comment #_name').val();
        var email = $('form.weekly-comment #_email').val();
        var comment = $('form.weekly-comment #_comment').val();
        var filter = /^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/;
        if (name == '' || email == '' || comment == '') {
            $('.error-message').html('All fields are required ...');
            $('.error-message').fadeIn('slow').delay(4000).slideUp(1000);
        } else if (!filter.test(email)) {
            $('.error-message').html('Email address is not valid ...');
            $('.error-message').fadeIn('slow').delay(4000).slideUp(1000);
        } else {
            recipeUtil.submittingForm();
        }
    },
    isFirstTimeAccess: function () {
        var visited = $.cookie(recipeUtil.config.site_cookie_name);
        if (visited == null || visited == '') {
            $.setCookie(recipeUtil.config.site_cookie_name, 'true');
            $('.get-start').trigger('click');
        } else {}
    },
    isUnsignedInteger: function (s) {
        return (s.toString().search(/^[0-9]+$/) == 0);
    }
}
var recipeShoppingList = {
    config: {
        cookie_name: "shopping-list",
        list_signature: "---",
        item_signature: ":::"
    },
    init: function () {},
    add: function (el) {
        var item = el.attr('name');
        if (item.indexOf(this.config.list_signature) > 0) {
            this.addList(el);
        } else if (item.indexOf(this.config.item_signature) > 0) {
            this.addItem(el);
        }
    },
    addList: function (el) {
        var shoppingList = $.cookie(recipeShoppingList.config.cookie_name);
        if (shoppingList == null || shoppingList == '') {
            shoppingList = {};
        }
        var list = el.attr('name').split(recipeShoppingList.config.list_signature);
        $.each(list, function (key, value) {
            var arr = value.split(recipeShoppingList.config.item_signature);
            if (arr[1] != undefined) {
                var objToAdd = {
                    id: arr[0],
                    name: arr[1],
                    slug: arr[2]
                };
                shoppingList['item_' + arr[0]] = objToAdd;
            }
        });
        $.setCookie(recipeShoppingList.config.cookie_name, shoppingList);
    },
    addItem: function (el) {
        var shoppingList = $.cookie(recipeShoppingList.config.cookie_name);
        if (shoppingList == null || shoppingList == '') {
            shoppingList = {};
        }
        var arr = el.attr('name').split(recipeShoppingList.config.item_signature);
        var objToAdd = {
            id: arr[0],
            name: arr[1],
            slug: arr[2]
        };
        shoppingList['item_' + arr[0]] = objToAdd;
        $.setCookie(recipeShoppingList.config.cookie_name, shoppingList);
    },
    removeItem: function (el) {
        var shoppingList = $.cookie(recipeShoppingList.config.cookie_name);
        delete shoppingList[el.attr('name')];
        $.setCookie(recipeShoppingList.config.cookie_name, shoppingList);
        $('a[name*=' + el.prev().html() + ']').attr('class', 'add-shopping-list').html('Add to Shopping List');
    },
    changeAddButtonStatus: function () {
        var shoppingList = $.cookie(recipeShoppingList.config.cookie_name);
        for (var x in shoppingList) {
            $('a[name*=' + shoppingList[x].slug + ']').attr('class', 'added-shopping-list').html('<strong>In Shopping List</strong>');
        }
    },
    drawList: function () {
        if ($('.shopping-list-container').length != 0) {
            $('li').remove('.slim');
            var ids = '';
            var shoppingList = $.cookie(recipeShoppingList.config.cookie_name);
            for (var x in shoppingList) {
                $('.shopping-list-container').append('<li class="slim"><a href="/recipe/detail/' + shoppingList[x].slug + '">' + shoppingList[x].name + '</a>   <a href="#" class="remove-shopping-item erroricon" name="item_' + shoppingList[x].id + '"><img src="/images/erroricon.png" border="0" /></a></li>');
                tmp = x.split('_');
                ids += tmp[1] + '-';
            }
            $('.print-recipe').attr('href', '/print/recipe/' + ids);
            $('.print-shopping').attr('href', '/print/shopping/' + ids);
        }
        if ($('.shopping-list-container-side').length != 0) {
            $('li').remove('.slim');
            var ids = '';
            var shoppingList = $.cookie(recipeShoppingList.config.cookie_name);
            for (var x in shoppingList) {
                $('.shopping-list-container-side').append('<li class="slim" style="margin-left:-22px;margin-bottom:10px;"><a href="/recipe/detail/' + shoppingList[x].slug + '">' + shoppingList[x].name + '</a></li>');
                tmp = x.split('_');
                ids += tmp[1] + '-';
            }
            $('.print-recipe').attr('href', '/print/recipe/' + ids);
            $('.print-shopping').attr('href', '/print/shopping/' + ids);
        }
        recipeShoppingList.changeAddButtonStatus();
    }
}
$(document).ready(function () {
    $('.no-print-shopping').click(function (e) {
        e.preventDefault();
        alert('This function is disabled for free users.');
    });
    $('button.button').click(function (e) {
        $('button.button').fadeOut('slow').delay(2000).fadeIn('slow');
        e.preventDefault();
        recipeUtil.validate();
    });
    $('.view_more').hide();
    var items = $('.weekly-recipe-list .toggle_item'),
        totalItem = items.length;
    if (totalItem > 3) {
        $('.view_more').show();
    }
    $('a.toggle').click(function (e) {
        e.preventDefault();
        randNum = Math.floor(Math.random() * totalItem + 1);
        $('.toggle_item').hide();
        $('a.toggle-all-close').hide();
        $('a.toggle-all').show();
        items.eq(randNum - 1).show();
        items.eq(randNum - 2).delay(300).fadeIn();
    });
    $('a.toggle-all').click(function (e) {
        e.preventDefault();
        $('.toggle_item').fadeIn();
        $('a.toggle-all').hide();
        $('a.toggle-all-close').show();
    });
    $('a.toggle-all-close').click(function (e) {
        e.preventDefault();
        $('a.toggle-all-close').hide();
        $('a.toggle-all').show();
        $('.toggle_item').hide();
        items.eq(0).show();
        items.eq(1).show();
        items.eq(2).show();
    });
    $('a.add-recipe').click(function (e) {
        e.preventDefault();
        var id = $(this).attr('name');
        $.ajax({
            type: "POST",
            url: '/user/add/recipe',
            data: {
                id: id
            },
            success: function () {
                $('a[name=' + id + ']').hide();
                $('a[name=' + id + ']').prev().show();
            }
        });
    });
    $('a.add-recipe-bulk').click(function (e) {
        e.preventDefault();
        if ($('a.added-recipe-bulk').attr('name') != undefined) {
            $('.error-doubleadded').fadeIn('slow').delay(3000).fadeOut('slow');
            return true;
        }
        var id = $(this).attr('name');
        $.ajax({
            type: "POST",
            url: '/user/add/recipelist',
            data: {
                id: id
            },
            success: function () {
                $('.message-recipe').fadeIn('slow').delay(2000).fadeOut('slow');
                $('a.add-recipe-bulk').attr('class', 'added-recipe-bulk');
            }
        });
    });
    $('a.del-recipe').click(function (e) {
        e.preventDefault();
        var id = $(this).attr('name');
        $.ajax({
            type: "POST",
            url: '/user/del/recipe',
            data: {
                id: id
            },
            success: function () {
                $(this).parent().parent().fadeOut('slow');
            }
        });
        $(this).parent().parent().fadeOut('slow');
    });
    $(".print-me").live('click', function (e) {
        e.preventDefault();
        $(".printable").printArea();
    });
    $(".print-style-one").live('click', function (e) {
        e.preventDefault();
        $(".style_two").hide();
        $(".style_one").fadeIn('slow');
    });
    $(".print-style-two").live('click', function (e) {
        e.preventDefault();
        $(".style_one").hide();
        $(".style_two").fadeIn('slow');
    });
    $('.print-recipe').colorbox({
        width: "75%",
        height: "75%"
    });
    $('.print-shopping').colorbox({
        width: "65%",
        height: "65%"
    });
    $('.print-one').colorbox({
        width: "75%",
        height: "75%"
    });
    $('.print-premium').colorbox({
        width: "820px",
        height: "500px"
    });
    $('.login').colorbox({
        width: "400px",
        height: "400px"
    });
    $('#change_username').click(function (e) {
        e.preventDefault();
        $('#error-container').hide();
        $('#username_only').fadeIn('slow');
        $('#password_only').fadeOut();
    });
    $('#change_password').click(function (e) {
        e.preventDefault();
        $('#error-container').hide();
        $('#username_only').fadeOut();
        $('#password_only').fadeIn('slow');
    });
    $(".add-shopping-list").click(function (e) {
        e.preventDefault();
        if ($(this).attr('class') == 'add-shopping-list') {
            recipeShoppingList.add($(this));
            recipeShoppingList.drawList();
            $('.message-shopping').fadeIn('slow').delay(2000).fadeOut('slow');
            $(this).attr('class', 'added-shopping-list');
        } else if ($('a.added-shopping-list').attr('name') != undefined) {
            $('.error-doubleadded').fadeIn('slow').delay(3000).fadeOut('slow');
            return true;
        } else {
            add_counter = 0;
            recipeShoppingList.add($(this));
            recipeShoppingList.drawList();
            $('.message-shopping').fadeIn('slow').delay(2000).fadeOut('slow');
            $(this).attr('class', 'added-shopping-list');
        }
    });
    $(".remove-shopping-item").live('click', function (e) {
        e.preventDefault();
        recipeShoppingList.removeItem($(this));
        recipeShoppingList.drawList();
    });
    $(".clear-shopping-list").click(function (e) {
        e.preventDefault();
        $('a[class=added-shopping-list]').attr('class', 'add-shopping-list').html('Add to Shopping List');;
        $.clearCookie(recipeShoppingList.config.cookie_name);
        recipeShoppingList.drawList();
    });
    recipeShoppingList.drawList();
    $('.email_button').click(function (e) {
        $('#error-container').hide();
        e.preventDefault();
        var email = $("#username_only input#email").val();
        var password = $("#username_only input#old-password").val();
        var dataString = 'email=' + email + '&old-password=' + password;
        $.ajax({
            type: "POST",
            url: "/ajax/changeEmail",
            data: dataString,
            success: function (data, textStatus, XMLHttpRequest) {
                $('#error-container').html(data);
                $('#error-container').fadeIn('slow');
            }
        });
    });
    $('.password_button').click(function (e) {
        $('#error-container').hide();
        e.preventDefault();
        var oldPassword = $("#password_only input#old-password").val();
        var password = $("#password_only input#password").val();
        var confirm = $("#password_only input#password-confirm").val();
        var dataString = 'password=' + password + '&old-password=' + oldPassword + '&password-confirm=' + confirm;
        $.ajax({
            type: "POST",
            url: "/ajax/changePassword",
            data: dataString,
            success: function (data, textStatus, XMLHttpRequest) {
                $('#error-container').html(data);
                $('#error-container').fadeIn('slow');
            }
        });
    });
    $('.apply-code').click(function (e) {
        e.preventDefault();
        var promotional_code = $("#promotional_code").val();
        var dataString = 'c=' + promotional_code;
        if ($("#promotional_code").val().length > 3) {

            $.ajax({
                type: "POST",
                url: "/ajax/promotionalCode",
                data: dataString,
                success: function (data, textStatus, XMLHttpRequest) {
                    data = data.split("::_btnid_::");

                    if ($('.join_trial').is(':checked')) {
                        var msg = 'Promotional Code cannot be applied to Trial Subscription';
                        $('.promotional_code_message').text(msg).slideDown('slow');
                    } else {
                        $('.promotional_code_message').text(data[0]).slideDown('slow');
                        $('.show_full input[name="hosted_button_id"]').val(data[1]);
                    }

                    
                    if ($('.option_price1') && $('p .price1').text() == '34.99') {
                        var amount = data[0].split("$");
                        if (amount instanceof Array && amount.length > 1) {
                            amount = parseFloat(amount[1]);
                            var price1 = 34.99 - amount;
                            var price2 = price1 - 2;
                            price1 = Math.round(price1 * 100) / 100;
                            price2 = Math.round(price2 * 100) / 100;
                            $('.option_price1').text('1 Year : $' + price1 + 'USD - yearly');
                            $('.option_price2').text('2 Year : $' + price2 + 'USD - yearly');
                            $('.price1').text(price1);
                            $('input[name="a3"]').val(price1);
                        }
                    }
                }
            });
        }
    });
    $('.join_full').click(function () {
        $('.show_full').fadeIn('slow');
        $('.show_trial').hide();
    });
    $('.join_trial').click(function () {
        $('.show_full').hide();
        $('.show_trial').fadeIn('slow');
    });
    $('.invitation_button').click(function (e) {
        e.preventDefault();
        var sendemail = $("#invitation input.sendemail").val();
        var email = $("#invitation textarea.email").val();
        var dataString = 'sendemail=' + sendemail + '&email=' + email;
        $.ajax({
            type: "POST",
            url: "/ajax/sendInvitation",
            data: dataString,
            success: function (data, textStatus, XMLHttpRequest) {
                $('#invite-container').html(data);
                $('#invite-container').fadeIn('slow');
            }
        });
    });
    $('.add-cmd, .print-cmd, .addbulk-cmd, .printbulk-cmd').hide();
    $('.add-cmd-trigger').click(function (e) {
        e.preventDefault();
        $('.print-cmd').hide();
        $('.add-cmd').toggle('slow');
        $('.print-cmd-trigger').parent().attr('class', '');
        $(this).parent().attr('class', 'selected');
    });
    $('.print-cmd-trigger').click(function (e) {
        e.preventDefault();
        $('.add-cmd').hide();
        $('.print-cmd').toggle('slow');
        $('.add-cmd-trigger').parent().attr('class', '');
        $(this).parent().attr('class', 'selected');
    });
    $('.addbulk-cmd-trigger').click(function (e) {
        e.preventDefault();
        $('.printbulk-cmd').hide();
        $('.addbulk-cmd').toggle('slow');
        $('.printbulk-cmd-trigger').parent().attr('class', '');
        $(this).parent().attr('class', 'selected');
    });
    $('.printbulk-cmd-trigger').click(function (e) {
        e.preventDefault();
        $('.addbulk-cmd').hide();
        $('.printbulk-cmd').toggle('slow');
        $('.addbulk-cmd-trigger').parent().attr('class', '');
        $(this).parent().attr('class', 'selected');
    });
    recipeUtil.isFirstTimeAccess();
});
