﻿;
(function($){


$.plugins({
	path: "cms/includes/js/",
	plugins: [
		{ id: "cms", js: "jquery.cms.js" },
		{ id: "ui", js: "jquery.ui.min.js" },
		{ id: "timeout", js: "jquery.timeout.js" },
		{ id: "json", js: "jquery.json.js" },
		{ id: "windowname", js: "jquery.windowname.js" },
		{ id: "chain", js: "jquery.chain.js" },
		{ id: "hotkeys", js: "jquery.hotkeys.js" },
		{ id: "cookie", js: "jquery.cookie.js" },
		{ id: "validate", js: "jquery.validate.js" },
		{ id: "date", js: "date.js" },
		{ id: "swf", js: "jquery.swf.js" },
		{ id: "sound", js: "jquery.sound.js" },
		{ id: "editor", js: "jquery.ui.editor.js" }
	]
});
$.requires(["cms", "ui", "json", "hotkeys", "windowname", "timeout", "chain", "cookie", "validate", "date", "swf", "sound", "editor"], "now" );

$(function(){

	var cmsButton = function(icon, corner, title){
				return '<div class="ui-corner-' + (corner || 'all') + ' ui-state-default float-right"><a title="'+ (title || 'button') +'" class="ui-icon ui-icon-'+icon+'"></a></div>'
			},
		loggedIn = $.cookie("cms_user[username]"),
		forms = {
			1: $("<div></div>")
				.append('<label>date:</label><input type="hidden" name="date" />')
				.append(
						$('<input type="text" validate="required" message="date is required." />')
							.datepicker({ altField: '[name=date]', altFormat:  'yy-mm-dd' })
						.add('<label>title:</label><input type="text" name="item_name" validate="required" message="title is required." />' +
							'<label>body:</label><textarea name="body" rows="20"></textarea>')
					),
			2: $("<div></div>").append( $('<textarea name="body" rows="30"></textarea>') )
		};
		
		
	if(!loggedIn)	
		$(".login")
			.mouseover(function(){
				$(this).addClass("ui-icon ui-icon-locked ui-corner-all");
			})
			.mouseout(function(){
				$(this).removeClass("ui-icon ui-icon-locked ui-corner-all ui-widget-content");
			})
			.click(function(){
				var dialog = $("<div></div>")
					.append(
						$('<label>username:</label><input type="text" name="username" />' +
						'<label>password:</label><input type="password" name="password" />')
					)
					.dialog({
						position: 'top',
						title: 'login',
						show: 'blind',
						hide: 'blind',
						resizable: false,
						buttons: {
							cancel: function(){
								dialog.dialog("close");
							},
							login: function(){
								var username = dialog.find("[name=username]").val(),
									password = dialog.find("[name=password]").val();
								if(!username || !password) return;
								$.cms.user().authenticate(username, password).response(function(data){
										if(data.warning) alert(data.warning);
										else window.location.reload();
									}).save();
								$.cms.table("ramblings").shout();
							}
						}
					});
			});
	else
		$(".login")
			.mouseover(function(){
				$(this).addClass("ui-icon ui-icon-unlocked ui-corner-all");
			})
			.mouseout(function(){
				$(this).removeClass("ui-icon ui-icon-unlocked ui-corner-all ui-widget-content");
			})
			.click(function(){
				$.cookie("cms_user[username]", null);
				$.cookie("cms_user[password]", null);
				window.location.reload();
			});
	
	
	$("[cms]").each(function(){
		var $this = $(this),
			library = $this.attr("cms"),
			container = $this.attr("container");
		
		
		if(loggedIn){
			var form = $('<form title="' + library + '"></form>')
					.submit(function(){
							if(!form.validate()) return false;
							var cmsId = form.data("cms-id"),
								obj = cmsId
									? $.cms.table(library).item(cmsId)
									: $.cms.table(library);
									
							obj[cmsId ? "update" : "insert"]((function(){
										var data = cmsId ? {} : { permissions: "770" };
										form.find(":input[name]").each(function(){
											data[$(this).attr("name")] = $(this).val();
										});
										return data;
									})(),
								function(data){
							 		if(cmsId) window.location.reload();
							 		else {
							 			$.cms.table("cms_containers").item(container).attach(library, data.id, function(data){
							 				window.location.reload();
							 			}).shout();
							 		}
								}).shout();
								
							return false;
						})
					.append(forms[container])
					.dialog({
						autoOpen: false,
						position: 'top',
						title: '&nbsp;',
						resizable: false,
						width: 400,
						buttons: {
							cancel: function(){ form.dialog("close"); },
							submit: function(){ form.submit(); }
						}
					}),
					
				cmsToolsNew = $(cmsButton('circle-plus', "all", "add new entry"))
					.click(function(){
							form.find(":input").val("").end().data("cms-id", false);
							form.dialog("open");
						}),
						
				cmsToolbar = $('<div class="ui-widget float-left"></div>')
					.append(cmsToolsNew);
					
			$this.prepend(cmsToolbar);
		}
		
//GET ATTACHED 
		$.cms.table("cms_containers").item(container).attached(library, function(data){
			$this.find(".cms-repeater").items(data).chain({
					'.date': function(data){
						return (data.date) ? Date.parse(data.date).toString('dddd, MMMM dd, yyyy') : "";
					},
					builder: function(){
					
						if(!loggedIn) return;
						
						var $this = this,
							data = this.item(),
							published = (data.permissions.substring(2,3)*1) > 0,
							edit = $( cmsButton("pencil", "left", "edit") )
								.click(function(){
									$.each(data, function(i,o){ form.find("[name="+i+"]").val(o); });
									form.find('.hasDatepicker').each(function(){
										var altField = $(this).datepicker("option", "altField");
										if(cmsItemDate = form.find(altField).val())
											$(this).val( Date.parse(cmsItemDate).toString("MM/dd/yy") );
										
									})
									form.data("cms-id", data.id).dialog("open");
									form.find("textarea").editor();
								}),
							deleter = $( cmsButton("trash", "right", "delete") )
								.click(function(){
									if(!window.confirm("delete?")) return false;
									$.cms.table(library).item(data.id)["delete"](function(){
										window.location.reload();
									}).shout();
								}),
							reorder = $( cmsButton("arrowthick-2-n-s", "none", "drag to sort") )
								.addClass("cms-item-sorter"),
							publish = $( cmsButton((!published ? "bullet" : "radio-on"), "none", "publish/unpublish") )
								.click(function(){
									$.cms.table(library).item(data.id).update({ permissions: data.permissions.substring(0,2) + (!published ? "4" : "0") }, function(data){
										publish.find("*")
											.removeClass( (!published ? "ui-icon-bullet" : "ui-icon-radio-on") )
											.addClass( (!published ? "ui-icon-radio-on" : "ui-icon-bullet") );
										published = !published;
									}).shout()
										
								});
						this
							.prepend(deleter.add(publish).add(reorder).add(edit));
					}
				})
				.sortable({
					handle: ".cms-item-sorter",
					axis: "y",
					update: function(e, ui){
						var index = $this.find(".cms-repeater li").index(ui.item);
						$.cms.attachment(ui.item.item().attachment_properties.id).reorder(index*1 + 1).shout();
					}
				});
		}).shout();
	});
	
	$(".col-right-btn").click(function(){
			$(".col-right-btn").next().slideUp();
			if(!$(this).next().is(":visible")) $(this).next().slideDown();
		});
	
//Album Previews
	$(".album-preview:eq(0) li:eq(0)").click(function(){
			$(".album-preview:eq(0) li:not(:first)").slideDown();
			$(".album-preview:eq(1) li:not(:first)").slideUp();
		})
	$(".album-preview:eq(1) li:eq(0)").click(function(){
			$(".album-preview:eq(1) li:not(:first)").slideDown();
			$(".album-preview:eq(0) li:not(:first)").slideUp();
		});
	$(".album-preview:eq(1) li:not(:first)").hide();
		
	var sound = $.sound("song"),
		players = $(".album-preview:eq(0) li:not(:first), .album-preview:eq(1) li:not(:first)").click(function(){
			var $this = $(this),
				c = 0;
			
			players.not($this).removeClass("hover").find(".album-preview-play").removeClass("ui-icon-stop");
			if($this.find(".album-preview-play").hasClass("ui-icon-stop")){
				sound.stop();
				$this.removeClass("hover").find(".album-preview-play").removeClass("ui-icon-stop");
			}
			else {
				sound.load( $this.find(".album-preview-play").attr("rel"), true);
				$this.addClass("hover").find(".album-preview-play").addClass("ui-icon-stop");
			}
			$clicked = $this;
			sound.complete(function(){
				var index = $(".album-preview:eq(0) li:not(:first), .album-preview:eq(1) li:not(:first)").index($this);
				$(".album-preview:eq(0) li:not(:first), .album-preview:eq(1) li:not(:first)").eq(index + 1).click();
			});
			
		});
		
//Animation
	if(!loggedIn){
		$("#body, #footer, #header").hide();
		$("#header").show().css({
			marginTop: "25%",
			marginLeft: -200,
			opacity: 0
		})
		$("body").timeout(function(){
			$("#header").animate({ opacity: 1, marginLeft: 0 }, 150, function(){
				$("body").timeout(function(){
					$("#header").animate({
							marginTop: "0%"
						}, 250, function(){
							$("#body").slideDown();
							$("#footer").show();
						});
					}, 500);
				})
		}, 500);
		
	}	
	else $("#body, #footer, #header").show();
	
});

})(jQuery);
