$(document).ready(function(){
  
    var formDefaultValues = function(form, fields) {
      defaults = Array();
      for(field in fields) {
        // default value storage
        defaults[$('#'+fields[field]).attr('id')] = $('#'+fields[field]).val();  
        this_field = $('#'+fields[field]);
        // password focus / blur
        if(this_field.hasClass('passwordPlaceholder')) {
          // vars
          pass_field = $('#' + this_field.attr('id').replace('_text', ''));
          default_val = this_field.val();
          // if password already entered show field
          if(pass_field.val() != $('#'+fields[field]).val()) {
            pass_field.show().addClass('on');
            this_field.hide();
          }
          // place holder focus
          this_field.bind('focus', function() {  
            $(this).hide();
            pass_field.show().focus();
          });
          // passfield focus
          pass_field.bind('focus', function() {
            if($(this).val() == $('#'+fields[field]).val()) {
              $(this).addClass('on');
              $(this).val('');
            }
          });
          // passfield blur 
          pass_field.bind('blur', function() {
            if($(this).val() === '') {
              $(this).removeClass('on');
              $(this).val(defaults[this_field.attr('id')]).hide();
              this_field.val(defaults[this_field.attr('id')]).show();
            }
          });
        // All other text inputs
        } else {
          // focus
          $('#'+fields[field]).bind('focus', function() {
            if($(this).val() == defaults[$(this).attr('id')]) {
              $(this).addClass('on');
              $(this).val('');
            }
          });
          // blur
          $('#'+fields[field]).bind('blur', function() {
            if($(this).val() === '') {
              $(this).removeClass('on');
              $(this).val(defaults[$(this).attr('id')]);
            }
          });
        }
      }
    };
  
    $('form').each(function() {
      switch($(this).attr('id')) {
        case 'signIn':
          formDefaultValues($(this), Array('id_email', 'id_password_text'));
          break;
      }
    });
    
// WIDGET OVERLAY
$(function() {
    $('#widget-dialog').dialog({
        autoOpen: false,
        modal: true,
        width: 411
    });
    $('#widget-call').bind('click keypress',function(){
		$('#widget-dialog').dialog('open');
		$('.ui-widget-overlay').css('opacity',0.5);
        return false;
    });
});

// MOBILE SPEECH BUBBLE
$('.mobileButtons .mobile').hover(function(){
	var position = $(this).position();
	var left = position.left - 125;
	var top = position.top - 75;
	$('#getMobileURL').css({'left':left,'top':top}).show();
	return false;
}, function(){
    $('#getMobileURL').hide();
	return false;
});

// android speech bubble
// this strikes me as inefficient and that i should modify the above function
// to handle both clicks but i just don't have the time
$('.mobileButtons .android').hover(function(){
	var position = $(this).position();
	var left = position.left - 125;
	var top = position.top - 75;
	$('#getAndroidURL').css({'left':left,'top':top}).show();
	return false;
}, function(){
    $('#getAndroidURL').hide();
	return false;
});

//FIXED NAVIGATION
var sidebarFixer = $('#sidebar-fixer');
if(sidebarFixer.length > 0) {
	var top = sidebarFixer.offset().top - parseFloat(sidebarFixer.css('marginTop').replace(/auto/, 0));
	$(window).scroll(function (event) {
    // what the y position of the scroll is
		var y = $(this).scrollTop();
    // whether that's below the form
		if (y >= top) {
	// if so, add the fixed class
			sidebarFixer.addClass('fixed');
		} else {
	// otherwise remove it
			sidebarFixer.removeClass('fixed');
		}
	});
}
sidebarFixer.click(function(e){
    var target = $(e.target);
    if (target.is('a')){
        sidebarFixer.find('li').removeClass('selected');
        target.parent().toggleClass("selected");
    }
})

//'MORE FROM' LINK REPLACEMENT

var badges = $('.badges-1,.badges-2,.badges-3');
badges.css('cursor','pointer');
badges.bind('click',function(){
	var getMoreLink = $(this).find('p a').attr('href');
	window.location.href = getMoreLink;
});

//AUTOCOMPLETE
var searchBox = $('#searchBox');
var searchForm = $('#findFriends');
searchForm.submit(function(){
    var dest = searchBox.data('dest');
    if (dest === ''){
        return false;
    }
    window.location.href = dest;
});
searchBox.autocomplete({
	open: function() { $('#findFriends').addClass('autocomplete'); },
	close: function() { $('#findFriends').removeClass('autocomplete'); },
	source: function(request, response){
        $.get(window.location+'api/balloon/search/?q='+request.term,
            function(data){
                response($.map(data, function(item){
                    return {
                        label: item.name,
                        value: item.link
                    };
                }));
            }, 'json');
        },
    focus: function(event, ui){
            searchBox.val(ui.item.label);
            searchBox.data('dest', ui.item.value);
            return false;
        },
    select: function(event, ui){
            searchForm.submit();
            return false;
        }
});

	// TABS
    var tabs = $(".tabs");
    tabs.tabs();
    var added = tabs.find('#site_added');
    if (added.length) {
        added.parents('div.hiddenBox').prev('h2').click();
        added.click();
    }

    // REPLACE RADIO BUTTON WITH GRAPHIC
    var radioInput = $('input[type=radio]');
    if(radioInput.length > 0) {
	    radioInput.checkbox({empty: '/static/images/empty.png'});
	}

    // fix favicon
    $('span.real_favicon').each(function(){
        var that = $(this);
        that.parent().find('ul.favicon li.default_favicon').each(function(){
            var mark = $(this).find('.mark');
            mark.attr('style', 'background-image:url(' +that.text()+ ') !important');
        });
        that.hide();
    });

    
    // NEW WINDOW
    $('a.new-window').click(function(){
        window.open(this.href);
        return false;
    });

    var siteFormset = $('#site_formset');
    siteFormset.live('check', function(e){
        var target = $(e.target);
        var uuid = target.parents('fieldset').find('label').attr('for');
        var url = target.parents('fieldset').siblings('fieldset').find('a[id^=update_message]').attr('href');
        var field = uuid.substring(0, uuid.lastIndexOf('_'));
        var data = field+'='+target.val();
        $.post(url, data, function(data){
            target.parents('fieldset').find('.errorlist, .success').remove();
            target.parents('fieldset').find('p').after(data);
        });
    });
    siteFormset.live('click', function(e){
        var target = $(e.target);
        if(!target.is('a')){
            return true;
        }
        var updateMessage = target.filter('a[id^=update_message]');
        if (updateMessage.length) {
            var textarea = updateMessage.parents('fieldset').find('textarea');
            var msg = textarea.val();
            $.post(updateMessage.attr('href'), {custom_message: msg}, function(data){
                textarea.parents('fieldset').find('.errorlist, .success').remove();
                textarea.parent().before(data);
            }, 'html');
            return false;
        }
        return true;
    });

}); 

