// convert to a modal dialog
$.fn.extend({
    kz_dialog: function(options) {
        if (this.hasClass('ui-dialog-content')) {
            this.dialog('open');
        } else {
            var opts = $.extend({},
            $.fn.kz_dialog.defaults, options);
            this.dialog(opts);
            $('div.ui-dialog-buttonpane button:not(:contains("Cancel"))').addClass('default-button');
            $('div.ui-dialog-buttonpane button:contains("Cancel")').addClass('normal-button');
        }
        return this;
    }
});

$.fn.kz_dialog.defaults = {
    position: ['left', 'top'],
    resizable: false,
    draggable: false,
    autoOpen: true,
    closeOnEscape: false,
    modal: true,
    height: 'auto',
    width: 'auto',
    dialogClass: 'normal_dialog',
    zIndex: 20000,
    open: function(event, ui) {
        // css hack to make auto width/height work
        var page_width = document.body.clientWidth;
        var set_width = $(this).width() + 42;
        var magin_left = (page_width - set_width) / 2;
        $(this).parent().css('width', set_width);
        // console.log($(this));
        $(this).parent().css('margin-left', magin_left);
    }
};

function add_member() {
    reset_form();
    var dialog = $('#add_member_block').kz_dialog({
        title: 'Invite Members',
        width: 800,
        buttons: {
            'Invite!': function() {
                add_and_invite_member() ? $(this).dialog('close') : null;
            },
            'Cancel': function() {
                reset_form();
                $(this).dialog('close');
            }
        }
    });
}

function reset_form() {
    $('.bt-active').btOff();
    $('.member_input input').removeClass('error');
    $('.member_input').each(function(e) {
        if ($(this).attr('kz-data-row') != 0) {
            $(this).remove();
        } else {
            $(this).find('input').val('');
        }
    });

}

//display the add something dialog
function show_add_something_dialog(id, title, check_text, no_reload, add_button_text, has_flash) {

    no_reload = no_reload ? true: false;

	if (has_flash) {
        var dialog = $(id).kz_dialog({
            title: title,
            buttons: {
                'Cancel': function(){
                    reset_submit();
                    $('#new_user_help').btOff();
                    $("#add_something_dialog").hide();
                    $("#photo_picker").html("");
                    picker_dialog_open = false;
                    $("#add_photo_page").click();
                    $("#filesystem_button").click();
                    $(this).dialog('close');
                    $('#add_page_button').btOn();
                    if (!no_reload) {
                        location.href.match('#pick') ? history.back() : window.location.reload();
                    }
                }
            }
        });	   
	} else {		
		var dialog = $(id).kz_dialog({
			title: title,
			buttons: {
				'Add': function(){
					$('#new_user_help').btOff();
					if (check_text && $('#photo_page_title').length > 0) {
						var text_content = $('#photo_page_title').val();						
						if ($.trim(text_content) == '' || text_content == 'type something to share with the group...') {
							disallow_to_submit();
						}
					}
					
					if (can_submit()) {
					
						$("#photo_upload_form").submit();
						when_submit();
					}
				},
				'Cancel': function(){
					reset_submit();
					$('#new_user_help').btOff();
					$("#add_something_dialog").hide();
					$("#photo_picker").html("");
					picker_dialog_open = false;
					$("#add_photo_page").click();
					$("#filesystem_button").click();
					$(this).dialog('close');
					$('#add_page_button').btOn();
					if (!no_reload) {
						window.location = window.location;
						$("#photo_upload_form").show();
					}
				}
			}
		});
	}
    dialog.find('.ui-dialog-content').css({
        'height': 'auto'
    });
    dialog.find('.ui-dialog-buttonpane').css({
        'position': 'relative'
    });
    dialog.find('div.ui-dialog-buttonpane button:contains("Add")').attr("disabled", true);
    dialog.find('.normal_dialog .ui-dialog-buttonpane').css({
        'position': 'relative'
    });
    $('#add_photo_dialog').siblings('.ui-dialog-buttonpane').find('button:contains("Cancel")').addClass('cancel_add_something_button');
    
    
    // show help bubble if we're in quickstart
    if ($("#new_user_help").length > 0) {
        $("#new_user_help").bt('Start by adding your photos to a Kinzin Album', {
            fill: 'rgba(233, 249, 168, .95)',
            textzIndex: 199999,
            boxzIndex: 199998,
            wrapperzIndex: 199997,
            positions: 'bottom'
        }).btOn();
    }
}

//var existing_create_new_site_dialog = {};
function show_create_new_site_dialog(id, cancel_allowed) {
    var viewer_id = $('#kinzin_bar').attr("data-kz-viewer");
    var buttons = {
        "Create!": function() {
            var value = $('#space_name').val();

            if ($.trim(value) != '') {
                $('#site_name_form').submit();
            } else {
                $('#space_name_error').removeClass("hidden");
            }
        }
    };
    if (cancel_allowed) {
        buttons['Cancel'] = function() {
            $('#new_site_dialog').dialog('close');
            $('#new_site_button_help').parents('.bt-wrapper').show();
            $('#space_name_help').parents('.bt-wrapper').hide();
        };
    }
    $(id).kz_dialog({
        title: 'Create a New Space',
        buttons: buttons
    }).find('.normal_dialog .ui-dialog-buttonpane').css({
        'position': 'relative'
    });
    $('#new_site_dialog').siblings('.ui-dialog-buttonpane').find('button:contains("Create!")').addClass('create_new_space_button');
}

/* site settings */
function show_site_settings(event) {
    event.preventDefault();
    $('#edit_site_page').kz_dialog({
        title: 'Space Settings',
        buttons: {
            Save: function() {
                edit_space_settings();
            },
            Cancel: function() {							  
                $('#input_new_site_name').val( $('#input_new_site_name').attr('data-kz-title') );
								isChecked  = $('#allow_downloads_checkbox').attr('data-kz-checked') === "true"
								$('#allow_downloads_checkbox').attr( 'checked', isChecked );
								$('.lock_downloads_width').attr( 'src', $('.lock_downloads_width').attr('data-kz-checked') );
								$('.faulty_entry').addClass('hidden');
                $('#edit_site_page').dialog('close');
            }
        }
    });
    $('#edit_site_page').siblings('.ui-dialog-buttonpane').find('button:contains("Save")').addClass('save_change_of_space_name');
}


function show_delete_failed_dialog() {
    $('#delete_failed_dialog').kz_dialog({
        title: "Some photos were not deleted",
        width: 300,
        buttons: {
            Close: function() {
                $('#delete_failed_dialog').dialog('close');
            }
        }
    });
}


function create_photo_album_dialog() {
    $('#new_album_page').kz_dialog({
        title: 'Create a Photo Album',
        buttons: {
            "Create Album": function() {
                $('.faulty_entry').addClass('hidden');
                create_new_photo_album();
            },
            Cancel: function() {
                $('#input_new_album').val("");
                $('.faulty_entry').addClass('hidden');
                $('#new_album_page').dialog('close');
            }
        }
    });
    $('#new_album_page').siblings('.ui-dialog-buttonpane').find('button:contains("Create Album")').addClass('create_new_album_button');
}

function create_new_photo_album() {
    var newTitle = $('#input_new_album').val();
    if ($.trim(newTitle) == "") {
        $('.faulty_entry').text('Please enter a title for your new album.');
        $('.faulty_entry').removeClass('hidden');
    } else {
        var url = $("#create_photo_album_button").attr("data-kz-post-url");
        $.post(
        url,
        {
            'album_title': newTitle
        },
        function(data, status) {
            if (status == "success") {
                window.location.href = data + "#pick";
            }
        }
        );

        $('.faulty_entry').addClass('hidden');
        $('#new_album_page').dialog('close');
    }
}

var create_site_dialog_open_times = 0;
function create_site() {
    $('#new_site_dialog').load($('#new_site_button').attr('data-kz-url'),
    [],
    function() {
        show_create_new_site_dialog('#new_site_dialog', true);
        if (create_site_dialog_open_times == 0) {
            $('#space_name').kz_help_bubble({
                bubble_type: 'stay',
                width: 280,
                positions: ['right', 'middle'],
                textzIndex: 199999,
                boxzIndex: 199998,
                wrapperzIndex: 199997
            });
            $('#space_name').btOn();
        } else {
            $('#new_site_button_help').parents('.bt-wrapper').hide();
            $('#space_name_help').parents('.bt-wrapper').show();
        }
        create_site_dialog_open_times++;
    });

};

// Keeping convert_to_dialog() around briefly for documentation purposes.  Instead of calling
// convert_to_dialog('my_form', "My Title", {ok: function(){}, cancel: function(){}});
// you would call
// $('#my_form').kz_dialog({title: 'My Title', buttons: {ok: function(){}, cancel: function(){}});
// In addition to title and buttons, you can pass in any values that you want to use with $dialog.  The only
// thing kz_dialog does differently from $(selector).dialog() is use different defaults, and make it possible
// to call multiple times, where further calls will re-open the same dialog instead of creating it again.
//
// function convert_to_dialog( myId, myTitle, myButtons ) {
//     if (typeof(myId) == 'string' && myId[0] != '#'){
//         myId = '#' + myId;
//     }
//     return $('myId').kz_dialog({title: myTitle, buttons: myButtons});
// }


function hide_menu() {
    $('#create_project_button').removeAttr('style');
    $('#create_project_button img').attr('src', '/images/icon-menu-01-down.png');
    $('#menu-container').hide();
};

function show_menu() {
    $('#create_project_button').attr('style', 'background-color:#333;border-color:#666;');
    $('#create_project_button img').attr('src', '/images/icon-menu-01-up.png');
    $('#menu-container').show();
};

function isMenuHidden() {
    return $('#menu-container').is(':hidden');
}

$(document).ready(function() {
    // $('#menu-container li').click(function() {
    //     window.location = $(this).parent().attr('href');
    // });
    $('#menu-container').mouseenter(function() {
        $('#menu-container').stop(true, true);
    });

    $('#create_project_button').click(function() {
        if (isMenuHidden()) {
            show_menu();
        } else {
            hide_menu();
        }
    });

    $('#shopping_cart_link').hover( function(){
        $('.cart-icon').attr('style','background-position: 0 -16px;');    
    }, function(){
        $('.cart-icon').attr('style','');    
    });
    
		$('#help_link').hover( function(){
			$('.help-icon').attr('style','background-position: 0 -16px;');
		}, function(){
			$('.help-icon').attr('style','');
		});
		
    $('#menu-container').mouseleave(function() {
        $('#menu-container').delay(2000).queue(function() {
            hide_menu();
            $(this).dequeue();
        });
    });
    if (!window.location.pathname.match('/home')) {
           $('#header_logo').hover(function(){
           $('.kinzin-logo').attr('style', 'background-position: 0 -20px;');
       }, function(){
           $('.kinzin-logo').attr('style', '');
       });
    }else{
        obj =$('#header_logo').attr('style','cursor:default;').click(function(e) { e.preventDefault() });        
        $('.profile_nickname').attr('style','color:#999');
        $('.kinzin-logo').attr('style','background-position: 0 0');
    
       
    };    
});


(function() {

$.prettyDate = {
  
  template: function(source, params) {
    if ( arguments.length == 1 ) 
      return function() {
        var args = $.makeArray(arguments);
        args.unshift(source);
        return $.prettyDate.template.apply( this, args );
      };
    if ( arguments.length > 2 && params.constructor != Array  ) {
      params = $.makeArray(arguments).slice(1);
    }
    if ( params.constructor != Array ) {
      params = [ params ];
    }
    $.each(params, function(i, n) {
      source = source.replace(new RegExp("\\{" + i + "\\}", "g"), n);
    });
    return source;
  },
  
  now: function() {
    return new Date();
  },
  
  // Takes an ISO time and returns a string representing how
  // long ago the date represents.
  format: function(time) {
    var date = new Date((time || "").replace(/[TZ]/g," ")),
      diff = ( ($.prettyDate.now().getTime() + (date.getTimezoneOffset() * 60000) ) - date.getTime()  ) / 1000,
      day_diff = Math.floor(diff / 86400);
    if ( isNaN(day_diff) || day_diff < 0 || day_diff >= 31 )
      return;
    
    var messages = $.prettyDate.messages;
    return day_diff == 0 && (       
        diff < 60 && messages.now ||
        diff < 120 && messages.minute ||
        diff < 3600 && messages.minutes(Math.floor( diff / 60 )) ||
        diff < 7200 && messages.hour ||
        diff < 86400 && messages.hours(Math.floor( diff / 3600 ))) ||
      day_diff == 1 && messages.yesterday ||
      day_diff < 7 && messages.days(day_diff) ||
      day_diff < 31 && messages.weeks(Math.ceil( day_diff / 7 ));
  }
  
};

$.prettyDate.messages = {
  now: "just now",
  minute: "1 minute ago",
  minutes: $.prettyDate.template("{0} minutes ago"),
  hour: "1 hour ago",
  hours: $.prettyDate.template("{0} hours ago"),
  yesterday: "Yesterday",
  days: $.prettyDate.template("{0} days ago"),
  weeks: $.prettyDate.template("{0} weeks ago")
};
  
$.fn.prettyDate = function(options) {
  options = $.extend({
    value: function() {
      return $(this).attr("title");
    },
    interval: 10000
  }, options);
  var elements = this;
  function format() {
    elements.each(function() {
      var date = $.prettyDate.format(options.value.apply(this));
      if ( date && $(this).text() != date )
        $(this).text( date );
    });
  }
  format();
  if (options.interval)
    setInterval(format, options.interval);
  return this;
};

})();
