//
//  Show a message at the top of the screen
//
function showMessage(message, t) {
    $("#notifyBar").remove();
    $.notifyBar({
        html: "<div class='message "+t+"' style='width: 100%; height: 100%; padding: 5px'>"+message+"</div>",
        delay: 3000,
        animationSpeed: "normal",
        barClass: "flash"
    });
}

function highlightEffect(object) {
    if (typeof object != "undefined") {
        object.fadeOut(400, function() {
            object.fadeIn(400)
        });
    }
}

function loadScript(src, onload) {
    var head = document.getElementsByTagName("head")[0];
    var script = document.createElement('script');
    script.type = 'text/javascript';
    script.src  = src;
    if (onload) {
        script.onload = onload;
    }
    head.appendChild(script);
}

function loadBackground(dorand) {
    if ($('body#quote_quote').length == 0) {
        alert('fail');
        return;
    }

    var parts = (String)(window.location).split('#');

    if (dorand) {
        $.getJSON('/lookup', null, function(result) {
            $('body').css('background-image', 'url('+result.image+')');
            $('blockquote').attr('class',result.text_style);

            var ubase = window.location.href.split('#')[0].split('?')[0];
            var nurl  = ubase + '?bg=' + result.id;

            $('#share_button').unbind('click').click(function(event) {
                    FB.ui({
                                "method":"stream.share",
                                "u":nurl
                            });
                    return false;
                });
            $('meta[property="og:image"]').attr('content', result.image);
            if (result.id) {
                window.location.href = parts[0] + '#bg_' + result.id;
            } else {
                window.location.href = parts[0];
            }
        })
    } else {
        if (parts.length == 2) {
            $.getJSON('/lookup','id='+parts[1], function(result) {
                $('body').css('background-image', 'url('+result.image+')');
                $('blockquote').attr('class',result.text_style);
                var ubase = window.location.href.split('#')[0].split('?')[0];
                var nurl  = ubase + '?bg=' + result.id;
                $('#share_button').unbind('click').click(function(event) {
                        FB.ui({
                                    "method":"stream.share",
                                    "u":nurl
                                });
                        return false;
                    });

                if (result.id) {
                    window.location.href = parts[0] + '#bg_' + result.id;
                } else {
                    window.location.href = parts[0];
                }
            })
        }
    }
    return false;
}

$(document).ready(function() {
    $.ajaxSetup({
        'error' : function() {
            showMessage('error', "An unexpected error has occured");
        }
    });

    //
    //  Login/Signup for openauth
    //
    function promptLogin(event) {
        $('#dialog-login').dialog({ modal: true, draggable: false, resizable: false });
        $('#dialog-login').dialog('open');
        return false;
    }
    function doFacebookLogin() {
        FB.login(function (response) {
                    if (response.session) {
                        window.document.location.href = '/openauth/cb/fboauth'
                                                      + '?next='         + encodeURIComponent(document.location)
                                                      + '&access_token=' + response.session.access_token
                                                      + '&secret='       + response.session.secret
                                                      + '&session_key='  + response.session.session_key
                                                      + '&uid='          + response.session.uid
                                                      ;
                    } else {
                        alert('login fail');
                    }
                }, {perms:'email,publish_stream'});
        return false;
    }
    
    // $('.promptLogin').click(promptLogin);
    // $('.login-signup').click(promptLogin);
    $('.login-signup').click(doFacebookLogin);

    $('.dialog-login-facebook').click(function(){
        $('#dialog-login').dialog('close');
        var    apikey = $(this).get(0).id;
        if (apikey.indexOf('#') != -1) {
           apikey = apikey.substring(apikey.indexOf('#')+1);
        }

        /*
         * Facebook 1.0 Authentication
         *
        // jQuery $.getScript() doesn't work, do it the direct way
        loadScript('http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php', function() {
             FB.Bootstrap.requireFeatures(["Connect"], function() {
                 FB.Facebook.init(apikey, "/openauth/xd_receiver.html", {
                           ifUserConnected:"/openauth/cb/facebook",
                           permsToRequestOnConnect : 'email,publish_stream,user_friendlists'
                 });
                 FB.Connect.requireSession(function() { window.document.location.href = document.location; });
             });
        });
        */

        /*
        $('body').append('<div id="fb-root"></div>');
        loadScript('http://connect.facebook.net/en_US/all.js', function() {
            FB.init({appId: apikey, cookie: true});
        */
        /*
        });
        */

        /*
        var dlog = $("<div></div>").dialog({
            resizable: false,
            modal: true,
            title: '',
            width: 640,
            height: 440
        });
        var url = 'https://graph.facebook.com/oauth/authorize?client_id=' + apikey
                + '&redirect_uri=' + document.location
                + '&scope=email,publish_stream'
                + '&display=popup'
                ;
        dlog.html('<iframe width="600" height="400" src="'+url+'"></iframe>');
        */

        return false;
    });

    $('.dialog-login-openid, .dialog-login-back').click(function(){
        $('#dialog-login-in, #dialog-login-form').toggle();
        return false;
    });

    // show 'Display name' dialog if it's present on the page, get rid of the 'x'
    if ( $('#dialog-display-name').length > 0 ) {
        function create_username() {
                var postdata = {
                    csrfmiddlewaretoken : $('#dialog-display-name-form[csrfmiddlewaretoken]').val()
                };

                if ($('#id_display_name').length != 0)
                    postdata['username'] = $('#id_screen_name').val();
                if ($('#id_email').length != 0)
                    postdata['email'] = $('#id_email').val();
                if ($('#id_display_name').length != 0)
                    postdata['display'] = $('#id_display_name').val();

                $.post($('#dialog-display-name-form').attr('action'), postdata, function(data) {
                    if (data.success == true) {
                        $('#dialog-display-name').dialog('close');
                        if (postdata['username']) {
                            $('#user-display-name').text(postdata['username']).attr('href', '/user/');
                        }
                        $('#user-karma').text('(1)');
                    } else {
                        $('.dialog-meta').removeClass('dialog-meta').addClass('dialog-error');
                        $('.dialog-error').html(data.errhtml);
                    }
                }, 'json');

                return false;
            }

        $('#dialog-display-name').dialog({
            buttons: {
                'Create username': create_username
            },
            modal: true, 
            closeOnEscape: false, 
            draggable: false, 
            resizable: false 
        });

        $('#dialog-display-name form').submit(create_username);

        $('#dialog-display-name .ui-dialog-titlebar-close').remove();
    }

    //
    //
    //
    $('#header_search').focus(function(event) {
        if ($(this).hasClass('default_text')) {
            $(this).val('');
        }
        $(this).removeClass('default_text');
    });
    
    //
    //
    //
    $('.add-tag').click(function (event) {
        $(this).hide();
        $('#add_tag_prompt').show();
    })
    $('#add_tag_form').submit(function (event) {
        $.ajax({
            url: '/create/tag',
            type: 'POST',
            data: $('#add_tag_form').serialize(),
            dataType: 'json',
            cache: false,
            success: function(result) {
                $('#taglist').html(result.html);
            }
        })
        $('.add-tag').show();
        $('#add_tag_prompt').hide();
        $('#add_tag_form input[tags]').val('');
        return false;
    })

    $('.add-image').click(function (event) {
        $('#add_image').dialog({
            title: 'Add a new Background',
            modal: true,
            width: 400,
            open: function() {
                $('#add_image').load("/create/image");
            }
        });
    });
    $('.add-quote').click(function (event) {
        $('#add_quote').dialog({
            title: 'Add a new Quote',
            width: 600,
            modal: true,
            open: function() {
                $('#add_quote').load("/create/quote");
            }
        });
    });

    $('.pick-image').click(function (event) {
        $('body').append('<div id="pick_image" style="display:none"></div>');
        $('#pick_image').dialog({
            title: 'Select a Background',
            width: 600,
            open: function() {
                $('#pick_image').load("/bgpick", function(event) {
                    $('#pick_images_form').submit(function() {
                        var term = $('#pick_images_form input.text').val();

                        $.ajax({
                            url: '/bgpick',
                            type: 'GET',
                            data: $('#pick_images_form').serialize(),
                            dataType: 'json',
                            cache: false,
                            success: function(result) {
                                $('#pick_images_block').html(result.html);
                            }
                        })
                        return false;
                    });
                })
            }
        });
        return false;
    });

    var nurl = $('meta[property="og:url"]').attr('content');
    $('#share_button').unbind('click').click(function(event) {
            FB.ui({
                        "method":"stream.share",
                        "u":'http://www.quotiv.com'+nurl
                    });
            return false;
        });
});

/*
*  Notify Bar - jQuery plugin
*
*  Copyright (c) 2009 Dmitri Smirnov
*
*  Licensed under the MIT license:
*  http://www.opensource.org/licenses/mit-license.php
*
*  Version: 1.0.2
*
*  Project home:
*  http://www.dmitri.me/blog/notify-bar
*/

/**
 *  param object
 */
$.notifyBar = function(settings)
{
  var bar = {};
  this.shown = false;
  if( !settings) {
    settings = {};
  }
  this.html           = settings.html || "Your message here";
  this.delay          = settings.delay || 2500;
  this.animationSpeed = settings.animationSpeed || "normal";
  this.jqObject       = settings.jqObject;

  if( this.jqObject) {
    bar = this.jqObject;
  } else {
    bar = $("<div></div>")
                  //basic css rules
                  .attr("id", "notifyBar")
                  .css("width", "100%")
                  .css("position", "fixed")
                  .css("top", "0px")
                  .css("left", "0px")
                  .css("z-index", "32768")
                  //additional css rules, which you can modify as you wish.
                  .css("font-size", "18px")
                  .css("text-align", "center")
                  .css("font-family", "Arial, Helvetica, serif")
                  .css("height", "30px")
                  .css("border-bottom", "1px solid #bbb");
    if(!settings.barClass){
      bar.css("background-color", "#dfdfdf")
         .css("color", "#000")
    }
  }

  bar.addClass(settings.barClass)

  bar.html(this.html).hide();
  var id =  bar.attr("id");
  switch (this.animationSpeed) {
    case "slow":
      asTime = 600;
      break;
    case "normal":
      asTime = 400;
      break;
    case "fast":
      asTime = 200;
      break;
    default:
      asTime = this.animationSpeed;
  }
  $("body").prepend(bar);
  bar.slideDown(asTime);
  setTimeout("$('#" + id + "').slideUp(" + asTime +");", this.delay + asTime);
};


