Spade

Mini Shell

Directory:~$ /proc/self/root/home/lmsyaran/www/pusher/
Upload File

[Home] [System Details] [Kill Me]
Current File:~$ //proc/self/root/home/lmsyaran/www/pusher/scripts_.tar

abstract.js000064400000000047151167475070006723 0ustar00window.EasyBlog =
abstractComponent();
dashboard/blogimage.js000064400000005701151167475070010777 0ustar00//
module: start
EasyBlog.module("dashboard/blogimage", function($) {

var module = this;

EasyBlog.require()
	.library("image")
	.done(function(){

		// controller: start
		EasyBlog.Controller("Dashboard.BlogImage",

			{
				defaultOptions: {

					// Containers
					"{placeHolder}"	: ".blogImagePlaceHolder",
					"{imageData}"	: ".imageData",
					"{image}"       : ".image",

					// Actions
					"{selectBlogImageButton}": ".selectBlogImage",
					"{removeBlogImageButton}": ".removeBlogImage"
				}
			},

			// Instance properties
			function(self) { return {

				init: function() {

					EasyBlog.dashboard.registerPlugin("blogImage", self);

					var meta = $.trim(self.imageData().val());

					if (meta) {
						self.setImage($.evalJSON(meta));
					}
 				},

				"{selectBlogImageButton} click": function() {

					// Optional: For the first param which is null now,
					// by passing in the key of the previously selected blog image,
					// it will activate the item on the browser.
					EasyBlog.mediaManager.browse(null, "blogimage");
				},

				"{removeBlogImageButton} click" : function(el) {

					self.removeImage();

					el.blur();
				},

				removeImage: function() {

					self.image().remove();

					self.element.addClass("empty");

					self.imageData().val("");
				},

				setImage: function(meta) {

					if (!meta) return;

					self.removeImage();

					self.element
						.addClass("loading");

					clearTimeout(self.imageTimer);

					// Clone the meta
					var meta = $.extend({}, meta);

					// Delete metadata
					delete meta.data;

					$.Image.get(meta.thumbnail.url)
						.done(function(image) {

							var resize = function(){

								// Keep a copy of the placeholder's width & height
								var placeHolder = self.placeHolder();
								maxWidth      = placeHolder.width();
								maxHeight     = placeHolder.height();

								// Calculate size
								var size = 	$.Image.resizeWithin(
									image.data("width"),
									image.data("height"),
									maxWidth,
									maxHeight
								);

								size.top  = (maxHeight - size.height) / 2;
								size.left = (maxWidth - size.width) / 2;

								return size;
							};

							var size = resize();

							var checkDimension = function() {

								if (size.width===0 || size.height===0) {

									self.imageTimer = setTimeout(function(){

										size = resize();

										checkDimension();

									}, 1000);

								} else {

									image.css(size);
								}
							}

							checkDimension();

							// Resize and insert
							image
								.addClass("image")
								.css(size)
								.appendTo(self.placeHolder());

							self.imageData().val($.toJSON(meta));

							self.element.removeClass("empty");
						})
						.fail(function(){

							self.element.addClass("empty");
						})
						.always(function(){

							self.element.removeClass("loading");
						});
				}
			}}

		);
		// controller: end

		module.resolve();
	});
	// require: end

});
// module: end
dashboard/editor.js000064400000001166151167475070010340 0ustar00// module:
start
EasyBlog.module("dashboard/editor", function($){

var module = this;

EasyBlog.Controller(
	"Dashboard.Editor",
	{
		defaultOptions: {

			editorId: "write_content"
		}
	},
	function(self) { return {

		init: function() {

			EasyBlog.dashboard.registerPlugin("editor", self);
		},

		insert: function(html) {

			window.jInsertEditorText(html, self.options.editorId);
		},

		content: function(html) {

			// TODO: Port eblog.editor to this new controller

			if (html!==undefined) {

				window.eblog.editor.setContent(html);
			}

			return window.eblog.editor.getContent();
		}
	}}
);

module.resolve();

});
dashboard/index.html000064400000000037151167475070010505
0ustar00<!DOCTYPE html><title></title>
dashboard/medialink.js000064400000001126151167475070011003 0ustar00//
module: start
EasyBlog.module("dashboard/medialink", function($) {

var module = this;

EasyBlog.Controller(
	"Dashboard.MediaLink",
	{
		defaultOptions: {
			"{menu}": ".ui-togmenu",
			"{content}": ".ui-togbox"
		}
	},
	function(self){ return {

		init: function() {

		},

		"{menu} click": function(el) {

			var hiding = el.hasClass("active");

			self.menu().removeClass("active");

			self.content().removeClass("active");

			if (!hiding) {

				el.addClass("active");

				self.content("." +
el.attr("togbox")).addClass("active");
			}
		}
	}}
);

module.resolve();

});
// module: end
dashboard.js000064400000000631151167475070007046 0ustar00// module: start
EasyBlog.module("dashboard", function($){

var module = this;

EasyBlog.Controller(
	"Dashboard",
	{
		defaultOptions: function() {

		}
	},
	function(self) { return {

		init: function() {

			EasyBlog.dashboard = self;
		},

		registerPlugin: function(pluginName, instance) {

			if (self[pluginName]===undefined) {

				self[pluginName] = instance;
			}
		}
	}}
);

module.resolve();

});
eblog.js000064400000133207151167475070006215 0ustar00/**
 * @package		EasyBlog
 * @copyright	Copyright (C) 2010 Stack Ideas Private Limited. All rights
reserved.
 * @license		GNU/GPL, see LICENSE.php
 *
 * EasyBlog is free software. This version may have been modified pursuant
 * to the GNU General Public License, and as distributed it includes or
 * is derivative of works licensed under the GNU General Public License or
 * other free or open source software licenses.
 * See COPYRIGHT.php for copyright notices and details.
 */

EasyBlog.module('eblog', function($){

	var module = this;

window.isSave = false;

var eblog = window.eblog = {

	stream: {
		load: function( startlimit ){
			ejax.load( 'dashboard' , 'loadStream' , startlimit
);
		}
	},

	login:{
		toggle: function(){
			$( '#easyblog-search-form'
).hide().siblings().removeClass('active');
			$( '.user-options'
).hide().siblings().removeClass('active');
			$( '#easyblog-login-form' ).toggle();

            $( '#easyblog-login-form'
).siblings().toggleClass('active')
		}
	},
	report:{
		show: function( objId , objType ){
			EasyBlog.ajax( 'site.views.reports.show' , {
				id: objId,
				type: objType
			}, function( title , html ){
				ejax.dialog( { 'title' : title , 'content' : html }
);
			});
		}
	},
	search:{
		toggle: function(){
			$( '.user-options'
).hide().siblings().removeClass('active');
			$( '#easyblog-login-form'
).hide().siblings().removeClass('active');
			$( '#easyblog-search-form' ).toggle();
			$( '#easyblog-search-form' ).siblings().toggleClass(
'active' );
		}
	},
	toolbar:{
		dashboard: function(){
			$( '#easyblog-search-form' ).hide();
			$( '#easyblog-login-form' ).hide();
			$( '.user-options' ).toggle();
			$( '.user-options' ).siblings().toggleClass(
'active' );
		}
	},
	images: {
		initFancybox: function(element, options) {

			if (window.eblog_lightbox_strip_extension &&
window.eblog_lightbox_title) {

				$(element).each(function(){

					var el = $(this),
						title = el.attr("title") || "",
						parts = title.split(".").reverse();

					if (/jpg|png|gif|xcf|odg|bmp|jpeg/.test(parts[0].toLowerCase())) {
						parts.splice(0, 1);
					}

					title = parts.reverse().join('.');

					el.fancybox($.extend(true, {}, options, {title: title}));
				});

			} else {

				$(element).fancybox(options);
			}
		},

		initCaption: function(images) {

			$(images).each(function(i, image){

				var image = $(image).removeClass("easyblog-image-caption");

				if (image.parents(".easyblog-image-caption-container").length
> 0) {
					return;
				}

				var imageUrl = $(image).attr("src"),
					hasFancybox =
image.parent().hasClass("easyblog-thumb-preview");

				var hasSiblings = function(image) {

					var image = image[0],
						value = false;

					$.each(image.parentNode.childNodes, function(i, node){

						if (node!=image &&
!$(node).hasClass("easyblog-image-caption") &&
!$(node).hasClass("easyblog-thumb-preview")) {
							value = true;
						}

					});

					return value;
				}

				// Reinject src so we can trigger the load function
				image
					.one("load", function() {

						var target = (hasFancybox) ? image.parent() : image;

						// Decide where to float
						var orientation = target.css("float");

						if (orientation=="none") {

							orientation = image.css("float");
						}

						if (orientation=="none") {

							var props = (image.attr("style") ||
"").split(";"),
								css = {};

							$.each(props, function(i, prop){
								var _prop = prop.split(":");
								css[$.trim(_prop[0])] = $.trim(_prop[1]);
							});

							if (css["margin-left"]=="auto" &&
css["margin-right"]=="auto") {
								orientation = "center";
							}
						}

						// Use alignment
						if (orientation=="none") {

							var alignment = image.parent().attr("align");

							if (alignment===undefined || alignment=="none") {
								alignment = image.attr("align");
							}

							switch (alignment) {

								case "left":
									orientation = "left";
									break;

								case "right":
									orientation = "right";
									break;

								case "center":
								case "middle":
									orientation = "center";
									break;
							}
						}

						if (!/none|center/.test(orientation)) {

							orientation = ((hasSiblings(target)) ? "float" :
"align") + orientation;
						}

						// Prepare container
						var container =
							$("<span>")
								.addClass("easyblog-image-caption-container orientation-"
+ orientation);

						if (orientation=="center" ||
orientation=="alignright" || orientation=="alignleft")
{

							var additionalWrapper = $("<span>");

							target.wrap(additionalWrapper);

							target.parent().wrap(container);

						} else {

							// Insert container
							target.wrap(container);
						}

						// Prepare caption
						var caption =
$("<span>").addClass("easyblog-image-caption");

						caption
							.width(target.outerWidth())
							.html(image.attr("title"));

						// Insert caption
						target.after(caption);

					})
					.removeAttr("src")
					.attr("src", imageUrl);
			});
		}
	},
	captcha: {
		reload: function(){
			var previousId	= $( '#captcha-id' ).val();
			ejax.load( 'entry' , 'reloadCaptcha' , previousId );
		},
		reloadImage: function( id , source ){
			$( '#captcha-image' ).attr( 'src' , source );
			$( '#captcha-id' ).val( id );
			$( '#captcha-response' ).val( '' );
		}
	},
	comments:{
		edit: function( id ){
			ejax.load( 'entry' , 'editComment' , id );
		},
		remove: function( id ){
			ejax.load( 'entry' , 'deleteComment' , id );
		}
	},
	checkbox: {
		render: function(){
			// Transform all checkboxes into nicer switches
			$( '.option-enable' ).click( function(){
				var parent = $(this).parent();
				$( '.option-disable' , parent ).removeClass(
'selected' );
				$( this ).addClass( 'selected' );
				$( '.radiobox' , parent ).attr( 'value' , 1 );
			});

			$( '.option-disable' ).click( function(){
				var parent = $(this).parent();
				$( '.option-enable' , parent ).removeClass(
'selected' );
				$( this ).addClass( 'selected' );
				$( '.radiobox' , parent ).attr( 'value' , 0 );
			});
		}
	},
	categories :
	{
		loadMore : function( element )
		{
			$( element ).parent().hide().next( '.more-subcategories'
).show();
		}
	},

	drafts: {
		getContent: null,
		// Frequency of draft checks by default to 5 seconds
		frequency: 15000,
		chars: 0,
		check: function(){

			// Returns the content
			var content	= eblog.drafts.getContent();

			if( typeof content == 'undefined' )
			{
				return;
			}

			var title	= $("#title").val();

			if( content.length > 0 || ( title.length > 0 && title !=
emptyText ))
			{
				// Only run this when there's more contents
				ejax.load( 'dashboard' , 'saveDraft' ,
ejax.getFormVal( '#blogForm' ) , content , '' );
			}
			setTimeout( 'eblog.drafts.check()', eblog.drafts.frequency );
		},
		save: function() {
	        //do submitting
	        eblog.editor.toggleSave();

			$(window).unbind('beforeunload');
			$('#form-task').val('savedraft');

			var data 	= eblog.editor.getContent(),
				content	= $( '<div>' ).html( data ).html();

			$('#write_content_hidden' ).val( content );
			$('#blogForm').submit();
		}
	},
	subscription: {
        // show subscription
		show: function( type , id ) {
			ejax.load( 'subscription', 'showForm' , type , id );
		},
		submit: function( type ) {
			eblog.loader.loading( 'eblog_loader' );
			ejax.load( 'subscription', 'submitForm', type ,
ejax.getFormVal('#frmSubscribe') );
		}
	},
	/**
	 * Dashboard
	 */
	dashboard: {
		logout: function(){
			$( '#eblog-logout' ).submit();
		},
		changeCollab: function( type ){
			$( '#blog_contribute_source' ).val( type );
		},
		changeAuthor: function( title , url ){
			ejax.dialog({
				width: 700,
				height: 500,
				title: title ,
				content: '',
				beforeDisplay: function(){

					var dialog = $(this);

					// Remove padding from dialog
					dialog.find('.dialog-middle').css('padding', 0);
				},
				afterDisplay: function(){

					var dialog = $(this);

					// Add iframe
					$('<iframe>')
						.attr('src', url )
						.css({
							width: dialog.find('.dialog-middle').width(),
							height: dialog.find('.dialog-middle').height(),
							border: 'none'
						})
						.appendTo(dialog.find('.dialog-middle-content'));
				}
			});

		},
		changeCategory: function( title, url ){
			ejax.dialog({
				width: 700,
				height: 500,
				title: title ,
				content: '',
				beforeDisplay: function(){

					var dialog = $(this);

					// Remove padding from dialog
					dialog.find('.dialog-middle').css('padding', 0);
				},
				afterDisplay: function(){

					var dialog = $(this);

					// Add iframe
					$('<iframe>')
						.attr('src', url )
						.css({
							width: dialog.find('.dialog-middle').width(),
							height: dialog.find('.dialog-middle').height(),
							border: 'none'
						})
						.appendTo(dialog.find('.dialog-middle-content'));
				}
			});

		},
		socialshare: {
			setActive: function( element ){
				$( element ).parent().toggleClass( 'active' );
			}
		},
		drafts: {
			discard: function( cids ){
				ejax.load( 'dashboard' , 'confirmDeleteDraft' ,
cids );
			},
			discardAll: function(){
				ejax.load( 'dashboard' , 'confirmDeleteAllDraft' );
			}
		},
		lists: {
			init: function( element ){

				$( '#dashboard-'+ element ).checkList({
					checkbox: ".stackSelect",
					masterCheckbox: ".stackSelectAll",
					check: function(){
						this.parent('.ui-list-select').addClass('active');

						$('#select-actions').show();
					},
					uncheck: function(){
						this.parent('.ui-list-select').removeClass('active');
						$('#select-actions').hide();
					},
					change: function(selected, deselected){
					}
				});
			}
		},
		toggle: function( element ){
			if( $( element ).parent().next().css( 'display' ) ==
'block' )
			{
                $( element ).parent().addClass( 'ui-togbox' );
				$( element ).parent().next().hide();
			}
			else
			{
                $( element ).parent().removeClass( 'ui-togbox' );
				$( element ).parent().next().show();
			}
		},
		quickpost: {
			notify: function( type , message ){
				$( '#eblog-message' ).removeClass( 'error info
success' ).addClass( type );
				$( '#eblog-message div' ).html( message );
				$( '#eblog-message').show();
			},
			save: function(){
				eblog.loader.loading( 'quickpost-loading' );
				var values	= ejax.getFormVal( '#quick-post' );
				ejax.load( 'dashboard' , 'save' , values );
			},
			draft: function(){
				eblog.loader.loading( 'quickdraft-loading' );

				var content	= $( '#eblog-post-content' ).val();

				// Only run this when there's more contents
				ejax.load( 'dashboard' , 'quickSaveDraft' ,
ejax.getFormVal( '#quick-post' ) , content , '' );
			}
		},
		settings: {
			submit: function(){
				// Validate password
				if( $( '#password' ).val() != '' || $(
'#password2' ).val() != '' )
				{
					if( $( '#password' ).val() != $( '#password2'
).val() )
					{
						$( '.password-notice' ).show();
						return false;
					}
				}
				$( '#dashboard' ).submit();
			}
		},
		categories:{
			create: function(){
				if( $( '#widget-create-category' ).css( 'display' )
== 'block' )
				{
					$( '#widget-create-category' ).slideUp();
				}
				else
				{
					$( '#widget-create-category' ).slideDown();
				}
				return false;
			},
			edit: function( id ) {
				ejax.load( 'dashboard', 'editCategory' , id );
			},
			remove: function( url , id ){
				ejax.load( 'dashboard' , 'confirmDeleteCategory' ,
id , url );
			},
			quicksave: function( name ){
			    ejax.load( 'dashboard' , 'quickSaveCategory' ,
name);
			}
		},
		comments: {
			publish: function( id , status ){
				ejax.load( 'dashboard' , 'publishComment' , id ,
status );
			},
			publishModerated: function( id , status ){
				ejax.load( 'dashboard' , 'publishModerateComment' ,
id , status );
			},
			edit: function( id ){
				ejax.load( 'dashboard' , 'editComment' , id );
			},
			remove: function( url , id ){
				ejax.load( 'dashboard' , 'confirmDeleteComment' ,
id , url );
			}
		},
		action: function( element , redirect ){
			var action	= $( '#' + element + '-action' ).val();
			var form	= '#' + element + '-form';
			var cids	= '';

		    $( form + ' INPUT[name="cid[]"]').each(
function() {
		        if ( $(this).attr('checked') ) {
		            if(cids.length == 0)
		            {
		                cids    = $(this).val();
		            }
		            else
		            {
		                cids    = cids + ',' + $(this).val();
		            }
				}
			});

			if( cids == '' )
			{
				eblog.system.alert('COM_EASYBLOG_PLEASE_SELECT_ONE_ITEM_TO_CONTINUE',
'COM_EASYBLOG_WARNING');
				return;
			}

			switch( action )
			{
				case 'copy':
					// Copy blog posts
					ejax.load( 'dashboard' , 'copyForm' , cids );
				break;
				case 'discardDraft':
					eblog.dashboard.drafts.discard( cids );
				break;
				case 'publishBlog':
					eblog.blog.togglePublish( cids , 'publish' );
				break;
				case 'unpublishBlog':
					eblog.blog.togglePublish( cids , 'unpublish' );
				break;
				case 'deleteBlog':
					eblog.blog.confirmDelete( cids , redirect );
				break;
				case 'rejectBlog':
					eblog.editor.reject( cids );
				break;
				case 'unpublishComment':
					eblog.dashboard.comments.publish( cids , 'unpublish' );
				break;
				case 'publishComment':
					eblog.dashboard.comments.publish( cids , 'publish' );
				break;
				case 'removeComment':
					eblog.dashboard.comments.remove( redirect , cids, '' );
				break;
				default :
					eblog.system.alert('COM_EASYBLOG_PLEASE_SELECT_ACTION_TO_PERFORM',
'COM_EASYBLOG_WARNING');
				break;
			}
		},
		videos:{
			insert: function( editor ){
				var url		= $( '#video-source' ).val();
				var width	= $( '#video-width' ).val();
				var height	= $( '#video-height' ).val();

				var data 	= '[embed=videolink]'
							+ '{"video":"' + url +
'","width":"' + width +
'","height":"' + height + '"}'
							+ '[/embed]';

				jInsertEditorText( data , editor )
				ejax.closedlg();
			},
			showForm: function( editor ){
			    try { IeCursorFix(); } catch(e) {};
				ejax.load( 'dashboard' , 'showVideoForm' , editor
);
			}
		},
		preview: function( itemId ) {
			var content	= eblog.drafts.getContent();

			if( typeof content == 'undefined' )
			{
				return;
			}

			var title	= $("#eblog-wrapper #title").val();

			if( content.length > 0 && ( title.length > 0 &&
title != emptyText ))
			{
				ejax.call('dashboard','saveDraft',
[ejax.getFormVal( '#blogForm' ), content, ''], {
				    success: function(){
				    	//second step
						var draftId = $('#draft_id').val();
						if( draftId != '')
						{	var url 	= $.rootPath +
'index.php?option=com_easyblog&view=entry&layout=preview&draftid='
+ draftId + '&Itemid=' + itemId,
								width	= screen.width,
								height	= screen.height,
								left	= (screen.width/2)-( width /2),
								top		= (screen.height/2)-(height/2);


							window.open( url , '' , 'toolbar=no, location=no,
directories=no, status=yes, menubar=yes, scrollbars=yes, resizable=yes,
copyhistory=no, width='+width+', height='+height+',
top='+top+', left='+left );
						}
					}
				});
			}
			else
			{
				if( content.length > 0 )
				{
					eblog.system.alert('COM_EASYBLOG_PLEASE_SET_TITLE_BEFORE_PREVIEW',
'COM_EASYBLOG_ENTRY_PREVIEW_MODE');
				}
				else
				{
					eblog.system.alert('COM_EASYBLOG_ENTRY_PREVIEW_MODE_NO_CONTENT',
'COM_EASYBLOG_ENTRY_PREVIEW_MODE');
				}

			}
		}
	},
	/**
	 * Ratings
	 **/
	ratings:{
		setup: function( elementId , disabled , ratingType ){
			$("#" + elementId ).stars({
				split: 2,
				disabled: disabled,
				oneVoteOnly: true,
				cancelShow: false,
				callback: function( element ){
					eblog.loader.loading( elementId + '-command .rating-text' );
					ejax.load( 'ratings' , 'vote' , element.value() ,
$( '#' + elementId ).children( 'input:hidden' ).val() ,
ratingType , elementId );
				}
			});
		},
		showVoters: function( elementId , elementType ){
			ejax.load( 'ratings' , 'showvoters' , elementId ,
elementType );
		},
		update: function( elementId , ratingType , value , resultCommand ){
			$( '#' + elementId ).children( '.ui-stars-star'
).removeClass( 'ui-stars-star-on' );
			value	= parseInt( value );

			// Hide command
			$( '#' + elementId + '-command' ).hide();

			$( '#' + elementId ).addClass( 'voted' );

			$( '#' + elementId ).children( '.ui-stars-star'
).each( function( index ){
				if( index < value )
				{
					$( this ).addClass( 'ui-stars-star-on' );
				}
				else
				{
					$( this ).removeClass( 'ui-stars-star-on' );
				}
			});
		}
	},
	/**
	 * Editor
	 */
	editor: {
	    checkPublishStatus: function() {
	        var status  		= $('#published').val();
	        var unpublishdate   = $('#publish_down').val();

	        if(unpublishdate == '' || unpublishdate ==
'0000-00-00 00:00:00')
	        {
	            eblog.editor.postSubmit();
	            return true;
	        }

	        ejax.load( 'dashboard' , 'checkPublishStatus'
, status,  unpublishdate);
	        return true;
	    },
	    cancelSubmit: function() {
			isSave = false;
			$("#save_post").attr('disabled', '');
			return false;
	    },
	    postSubmit: function () {
	        //do submitting
			$(window).unbind('beforeunload');
			$('#blogForm').submit();
	    },
		// save the post
		save: function() {
			eblog.editor.toggleSave();

			// Retrieve the main content.
			var editorContents 	= eblog.editor.getContent();

			// Try to break the parts with the read more.
			var val	= editorContents.split( '<hr
id="system-readmore" />' );

			if( val.length > 1 )
			{
				// It has a read more tag
				var intro		= $.sanitizeHTML( val[0] );
				var fulltext	= $.sanitizeHTML( val[1] );
				var content 	= intro + '<hr id="system-readmore"
/>' + fulltext;
			}
			else
			{
				// Since there is no read more tag here, the first index is always the
full content.
				var content 	= $.sanitizeHTML( editorContents );;
			}
			$( '#write_content_hidden' ).val( content );

			$('#save_post_button' ).addClass( 'ui-disabled' );
			$( '#save_post_button' ).attr( 'disabled' ,
'disabled' );
			eblog.editor.checkPublishStatus();
		},
		apply: function(){
			$( 'input[name=apply]' ).val( 1 );

			eblog.editor.save();
		},
		reject: function( blogId ) {
		    ejax.load( 'Dashboard' , 'confirmRejectBlog' ,
blogId );
		},
		search: {
			load: function(){
				try { IeCursorFix(); } catch(e) {};
				ejax.load( 'search' , 'search' , $(
'#search-content' ).val() );
			},
			insert: function( value , title , editor ){
				var link = '<a
href="'+value+'">'+title+'</a>';

				switch(editor)
				{
					case 'intro':
						if($( '#widget-write-introtext .ui-modhead'
).hasClass('ui-togbox'))
						{
							eblog.editor.setIntro(link);
						}
						else
						{
							jInsertEditorText( link, editor );
						}
						break;
					case 'write_content':
						if($( '#widget-writepost .ui-modhead'
).hasClass('ui-togbox'))
						{
							eblog.editor.setContent(link);
						}
						else
						{
							jInsertEditorText( link, editor );
						}
						break;
					default:
						//do nothing
				}
			}
		},
		setIntro: null,
		setContent: null,
		getContent: null,
		/**
		 * Generate date time picker like Wordpress
		 */
		datetimepicker: {

			element: function( id, reset ) {
				// Referenced from
http://www.quackit.com/javascript/javascript_date_and_time_functions.cfm

				// Adds active class on the element.
				$( '#datetime_' + id ).addClass( 'toggle-active' );

				// Hide edit button
				$( '#datetime_edit_' + id ).hide();
				var day, month, year, hour, minute, ampm;

				eblog.editor.datetimepicker.hideEditLink(id);

				var day, month, year, hour, minute, ampm;

				eblog.editor.datetimepicker.hideEditLink(id);

				if( id == 'publish_down' && $('#' +
id).val() == '')
				{
				    var tmpStr  = $('#publish_down_reset').val();
				    $('#' + id).val(tmpStr);
				}

				if ( $('#' + id).val() != '' ) {
					var strValue = $('#' + id).val();

					var strTemp = strValue.split(' ');
					var strTime = strTemp[1].split(':');
					var strDate = strTemp[0].split('-');

					day 	= strDate[2];
					month 	= strDate[1];
					year 	= strDate[0];
					hour	= strTime[0];
					minute	= strTime[1];

				}
				else {
					today = new Date();

					day 	= today.getDate();
					month 	= today.getMonth() + 1;  //in js, month start from 0, not 1
					year 	= today.getFullYear();
					hour	= today.getHours();
					minute	= today.getMinutes();
				}

				//minute = parseInt(minute);
				hour = parseInt(hour, 10);

				if (minute.length <= 1) {
					minute = '0' + minute;
				}

				if ( hour >= 12 ) {
					ampm = 'pm';
				}
				else {
					ampm = 'am';
				}

				if ( hour > 12 ) {
					hour -= 12;
				}

				if( ampm == 'am' && hour == 0)
				{
				    hour    = 12;
				}

				if( hour < 10 )
				{
				    hour    = '0' + hour;
				}

				var html = '';
				html += '<div class="dtpicker-wrap"
id="dtpicker_'+id+'" style="display:
none;">';
				html += '	<select tabindex="4"
name="dt_month"
id="dt_month_'+id+'">';
				html += '		<option value="01" '+ (month ==
'01' ? 'selected="selected"' : "" )
 +'>'+ sJan +'</option>';
				html += '		<option value="02" '+ (month ==
'02' ? 'selected="selected"' : "" )
 +'>'+ sFeb +'</option>';
				html += '		<option value="03" '+ (month ==
'03' ? 'selected="selected"' : "" )
 +'>'+ sMar +'</option>';
				html += '		<option value="04" '+ (month ==
'04' ? 'selected="selected"' : "" )
 +'>'+ sApr +'</option>';
				html += '		<option value="05" '+ (month ==
'05' ? 'selected="selected"' : "" )
 +'>'+ sMay +'</option>';
				html += '		<option value="06" '+ (month ==
'06' ? 'selected="selected"' : "" )
 +'>'+ sJun +'</option>';
				html += '		<option value="07" '+ (month ==
'07' ? 'selected="selected"' : "" )
 +'>'+ sJul +'</option>';
				html += '		<option value="08" '+ (month ==
'08' ? 'selected="selected"' : "" )
 +'>'+ sAug +'</option>';
				html += '		<option value="09" '+ (month ==
'09' ? 'selected="selected"' : "" )
 +'>'+ sSep +'</option>';
				html += '		<option value="10" '+ (month ==
'10' ? 'selected="selected"' : "" )
 +'>'+ sOct +'</option>';
				html += '		<option value="11" '+ (month ==
'11' ? 'selected="selected"' : "" )
 +'>'+ sNov +'</option>';
				html += '		<option value="12" '+ (month ==
'12' ? 'selected="selected"' : "" )
 +'>'+ sDec +'</option>';
				html += '	</select>';
				html += '	<input type="text"
autocomplete="off" tabindex="4" maxlength="2"
size="2" value="' + day + '"
name="dt_day" id="dt_day_'+id+'">, ';
				html += '	<input type="text"
autocomplete="off" tabindex="4" maxlength="4"
size="4" value="' + year + '"
name="dt_year" id="dt_year_'+id+'"> @
';
				html += '	<input type="text"
autocomplete="off" tabindex="4" maxlength="2"
size="2" value="' + hour + '"
name="dt_hour" id="dt_hour_'+id+'"> :
';
				html += '	<input type="text"
autocomplete="off" tabindex="4" maxlength="2"
size="2" value="' + minute + '"
name="dt_min" id="dt_min_'+id+'">';
				html += '	<select tabindex="4"
name="dt_ampm" id="dt_ampm_'+id+'">';
				html += '		<option value="am" ' + (ampm ==
"am" ? 'selected="selected"' : '')
+ '>'+ sAm +'</option>';
				html += '		<option value="pm" ' + (ampm ==
"pm" ? 'selected="selected"' : '')
+ '>'+ sPm +'</option>';
				html += '	</select>';
				html += '	<div class="dtpicker-action"
id="dtpicker_action_'+id+'">';
				html += '		<a class="dtpicker-save ui-button"
href="javascript:void(0);"
onclick="eblog.editor.datetimepicker.save(\''+id+'\')">'+btnOK+'</a>';

				if ( reset )
				{
					html += '		<a class="dtpicker-reset"
href="javascript:void(0);"
onclick="eblog.editor.datetimepicker.reset(\''+id+'\')">'+btnReset+'</a>';
				}

				html += '		<a class="dtpicker-cancel"
href="javascript:void(0);"
onclick="eblog.editor.datetimepicker.cancel(\''+id+'\')">'+btnCancel+'</a>';
				html += '	</div>';
				html += '</div>';

				$(html).insertAfter('#datetime_' + id);
				$('#dtpicker_' + id).slideDown('fast');
			},
			reset: function(id) {
				$('#dtpicker_' + id).slideUp('fast');
				$('#' + id).val('');
				$('#datetime_' + id + '
.datetime_caption').html(sNever);
				eblog.editor.datetimepicker.showEditLink(id);
			},
			cancel: function(id) {
				$('#dtpicker_' + id).slideUp('fast');

				if( id == 'publish_down' &&
($('#publish_down_ori').val() == '' ||
$('#publish_down_ori').val() == '0000-00-00 00:00:00'))
				{
				    // make sure the value get remove.
				    $('#' + id).val('');
				}

				// Remove toggle-active class once the cancel is clicked
				$( '#datetime_' + id ).removeClass( 'toggle-active'
);

				eblog.editor.datetimepicker.showEditLink(id);
			},
			save: function(id) {
				$('#dtpicker_' + id).slideUp('fast');

				// Remove toggle-active class once the cancel is clicked
				$( '#datetime_' + id ).removeClass( 'toggle-active'
);

				// construct date time
				var day, month, year, hour, minute, ampm;

				//today = new Date();
				day 	= $('#dtpicker_' + id + ' #dt_day_' +
id).val();
				month 	= $('#dtpicker_' + id + ' #dt_month_' +
id).val();

				month = parseInt(month, 10);
				if ( month < 10 ) {
					month = '0' + month;
				}

				year 	= $('#dtpicker_' + id + ' #dt_year_' +
id).val();
				hour	= $('#dtpicker_' + id + ' #dt_hour_' +
id).val();

				ampm	= $('#dtpicker_' + id + ' #dt_ampm_' +
id).val();
				if ( ampm == 'pm' ) {
					switch ( parseInt(hour, 10) ) {
						case 12:
							//hour = parseInt(hour);
							break;
						default:
							hour = parseInt(hour, 10) + 12;
							break;
					}
				}
				else {
					switch ( parseInt(hour) ) {
						case 12:
							hour = '00';
							break;

						default:
							if ( hour.length <= 1) {
							    hour    = '0' + hour;
							}
							break;
					}
				}

				minute	= $('#dtpicker_' + id + ' #dt_min_' +
id).val();
				//minute  = parseInt(minute);
				if ( minute.length <= 1) {
					minute = '0' + minute;
				}


				var setTime = year + '-' + month + '-' + day +
' ' + hour + ':' + minute + ':00';
				$('#' + id).val(setTime);

				// $('#datetime_' + id + '
.datetime_caption').html(setTime);
				ejax.load( 'dashboard' , 'updateDisplayDate' , id, 
setTime);

				eblog.editor.datetimepicker.showEditLink(id);
				// $('.dtpicker-wrap').remove();
			},
			showEditLink: function(id) {
				$('#datetime_edit_' + id ).show();
			},
			hideEditLink: function(id) {
				$('#datetime_edit_' + id ).hide();
			}
		},
		permalink: {
			edited: false,
			// get permalink from controller
			generate: function() {
				// We don't want to generate empty permalinks and
				// if the permalink is edited, we don't want to change the
user's value.
				if( $('#title').val() != '' &&
!eblog.editor.permalink.edited )
				{
					ejax.load( 'dashboard' , 'getPermalink' ,
$('#title').val() );
				}
			},
			edit: function(){
				if( $( '#permalink-edit' ).css( 'display' ) ==
'none' )
				{
					// We try to remember the state here so that permalink don't get
					// generated everytime we try to change the title.
					eblog.editor.permalink.edited	= true;

					$( '#permalink-edit' ).show();
					$( '#permalink-value' ).hide();
				}
				else
				{
					$( '#permalink-edit' ).hide();
					$( '#permalink-value' ).show();
				}
			},
			save: function(){
				// Change the value of the display
				$( '#permalink-url' ).html( $(
'#permalink-data').val() );

				// Hide the edit form first.
				eblog.editor.permalink.edit();
			}
		}
	},
	tags: {
		search: {
			init: function(){
				$('#filter-tags').keyup(function()
				{
					var text = $.trim($(this).val());

					$('.post-tags li')
						.hide()
						.filter(function()
						{
							return (this.textContent || this.innerText ||
'').toUpperCase().indexOf(text.toUpperCase()) >= 0
						})
						.show();
				});
			}
		}
	},
	loader:{
		item: null,
		loading: function( elementId ) {
			eblog.loader.item = elementId;
			$( '#' + elementId ).addClass( 'eblog_loader' );
			$( '#' + elementId ).show();
		},
		doneLoading: function(){
			if( eblog.loader.item != null )
			{
				$( '#' + eblog.loader.item ).removeClass(
'eblog_loader');
			}
		}
	},
	/**
	 * All comment operations
	 */
	comment: {
	    /**
	     * Comment like or dislike
	     */
	    likes: function(contentId, status, likeId) {
	    	eblog.loader.loading( 'likes-' + contentId );
	        ejax.load('Entry', 'likesComment', contentId,
status, likeId);
	    },
		/**
		 * Save comment
		 */
		save: function() {
			//clear err-msg
			$('#eblog-message').removeClass('info error');
			$('#eblog-message').html('');

			eblog.loader.loading( 'comment-form-title' );

			finalData	= ejax.getFormVal('#frmComment');
			ejax.load('Entry', 'commentSave', finalData);

			if ( $('#empty-comment-notice').length > 0 ) {
				$('#empty-comment-notice').fadeOut('100');
			}
		},
		/**
		 * Reply to comment
		 */
		reply: function( id , commentDepth , autoTitle ) {
			// hide all reply container
			$('.cancel_container').hide();

			// show all reply container
			$('.reply_container').show();

			//prepare the comment input form
			$('#comment-reply-form-' + id).show();
			var commentForm = $('#eblog-wrapper #frmComment').clone();
			$('#eblog-wrapper #frmComment').remove();

			$('#comment-reply-form-' +
id).addClass('comment-form-inline').append(commentForm);
			$('#parent_id').val(id);
			$('#comment_depth').val(commentDepth);

			if(autoTitle)
			{
				//auto insert title
				var title   = $('#comment-title-' + id).text();
				var reTitle = (title != '') ? 'RE:' + title :
'';
				$('#title.inputbox').val(reTitle);
			}

			//toggle toolbar button
			//$('#toolbar-reply-' + id).hide();
			//$('#toolbar-cancel-' + id).show();

			// reset all reply/cancel to reply
			$('.comment-reply-no').removeClass('show-this');
			$('.comment-reply-yes').addClass('show-this');

			// set reply to cancel
			$('#toolbar-reply-' + id).removeClass('show-this');
			$('#toolbar-cancel-' + id).addClass('show-this');
			$('#toolbar-cancel-' +
id).parent('.comment-reply').toggleClass('in-action');

			//need to check if bbcode enabled
			if($('.markItUpContainer').length > 0)
			{
				$("#comment").markItUpRemove();
				$("#comment").markItUp(EasyBlogBBCodeSettings);
			}

		},
		/**
		 * Cancel comment reply
		 */
		cancel: function(id) {
			//revert the comment input form
			var commentForm = $('#eblog-wrapper #comment-reply-form-' + id
+ ' #frmComment').clone();
			$('#eblog-wrapper #comment-reply-form-' + id + '
#frmComment').remove();
			$('#eblog-wrapper #comment-separator').after(commentForm);
			$('#parent_id').val('0');
			$('#comment_depth').val('0');
			$('#comment-reply-form-' + id).hide();

			$('#title.inputbox').val('');

			//toggle toolbar button
			//$('#toolbar-cancel-' + id).hide();
			//$('#toolbar-reply-' +
id).toggleClass('hide-this');
			//$('#toolbar-reply-' + id).removeAttr('style');
			$('#toolbar-reply-' + id).toggleClass('show-this');
			$('#toolbar-cancel-' + id).toggleClass('show-this');
			$('#toolbar-cancel-' +
id).parent('.comment-reply').toggleClass('in-action');

			//need to check if bbcode enabled
			if($('.markItUpContainer').length > 0)
			{
				$("#comment").markItUpRemove();
				$("#comment").markItUp(EasyBlogBBCodeSettings);
			}
		},

		/**
		 * Save edit comment
		 */
		edit: function() {
			//clear err-msg
			$('#eblog-message').removeClass('info error');
			$('#eblog-message').html('');
			//toggleSpinner(true);

			finalData	= ejax.getFormVal('#frmComment');
			ejax.load('dashboard', 'updateComment', finalData);
		},


		/**
		 * Actions
		 */
		action: function(param, url) {
			var count	= 0;
			var cids    = "";
			var actionStr   = $("#"+param).val();

			if(actionStr == '')
			{
				eblog.system.alert('COM_EASYBLOG_PLEASE_SELECT_ACTION_TO_PERFORM',
'COM_EASYBLOG_WARNING');
				return;
			}

		    $("#adminForm INPUT[name='cid[]']").each(
function() {
		        if ( $(this).attr('checked') ) {
		            if(cids.length == 0)
		            {
		                cids    = $(this).val();
		            }
		            else
		            {
		                cids    = cids + ',' + $(this).val();
		            }
		            count++;
				}
			});

			if(count <= 0)
			{
				eblog.system.alert('COM_EASYBLOG_PLEASE_SELECT_ONE_ITEM_TO_CONTINUE',
'COM_EASYBLOG_WARNING');
				return;
			}

			if(actionStr == 'unpublishComment')
			{
				ejax.load('dashboard', 'publishComment', cids,
'0', 'comment');
			}
			else if(actionStr == 'publishComment')
			{
			    ejax.load('dashboard', 'publishComment', cids,
'1', 'comment');
			}
			else if(actionStr == 'removeComment')
			{
				eblog.comment.confirm( url , cids, '');
			}
		},
		confirm: function(url, commentId, lbl)
		{
			var targetUrl   = url +
'&task=removeComment&commentId=' + commentId;
			var callback    = 'window.location = "' + targetUrl +
'";';

			eblog.system.dialog('COM_EASYBLOG_ARE_YOU_SURE_YOU_WANT_TO_REMOVE_COMMENT',
callback, 'CONFIRMATION');
		    return;
		},

		displayInlineMsg: function (msgType, msg)
		{
		    //$('#err-msg').show();
		    $('#eblog-message').removeClass('info error');
		    $('#eblog-message').html(msg);
		    $('#eblog-message').addClass(msgType);

		    if(msgType == 'info')
		    {
				setTimeout( function() {
					$('#eblog-message').removeClass('info error');
					$('#eblog-message').html('');
				}, 6000);
			}
		}

	},

	/**
	 * Featured
	 */

	featured: {
	    add: function(type, cid){
			ejax.load('Latest', 'makeFeatured', type, cid);
	    },
	    remove: function(type, cid){
		    ejax.load('Latest', 'removeFeatured', type, cid);
		},
		slider: {
			holderWidth: 0,
			element: Array(),
			autorotate: function( interval ){
				var items	= $( '#ezblog-featured .featured-a' ).children();
				var set		= false;

				$( items ).each( function(){
					if( $( this ).hasClass( 'active' ) && set != true )
					{
						if( $( this ).next().length == 0 )
						{
							// return to the parent
							$( '#ezblog-featured .featured-a :first' ).click();
						}
						else
						{
							$( this ).next().click();
						}
						set	= true;
					}
				});

				setTimeout( 'eblog.featured.slider.autorotate(' + interval +
');' , interval );
			},
			init: function( sliderElement , autorotate , interval ){

				eblog.featured.slider.element[ sliderElement ]	= { 'width' :
parseInt( $( '.' + sliderElement ).parent().width() ) ,
'element' : '.' + sliderElement };

				var total	= 0;
				$( eblog.featured.slider.element[ sliderElement ].element
).children().each( function(){
					total	+= eblog.featured.slider.element[ sliderElement ].width;
				});
				$( eblog.featured.slider.element[ sliderElement ].element ).css(
'width' , total );
				$( eblog.featured.slider.element[ sliderElement ].element
).children().css( 'width' , eblog.featured.slider.element[
sliderElement ].width );

				if( autorotate )
				{
					interval	= parseInt( interval ) * 1000;
					setTimeout( 'eblog.featured.slider.autorotate(' + interval +
');' , interval );
				}
			},
			slide: function( index , sliderElement ){
				var left		= 0;
				var elementId	= index;

				if( index != 1 )
				{
					index	-= 1;
					left	= eblog.featured.slider.element[ sliderElement ].width *
parseInt( index );
				}
				$( eblog.featured.slider.element[ sliderElement ].element ).animate( {
'left' : '-' + left + 'px' } ,
'slow' );
				$( eblog.featured.slider.element[ sliderElement ].element
).parent().parent().children( 'div.featured-navi'
).children().children().removeClass( 'active' );

				// Set active element for the slider buttons.
				$( eblog.featured.slider.element[ sliderElement ].element
).parent().parent().children( 'div.featured-navi'
).children().children( '.slider-navi-' + elementId ).addClass(
'active' );
			}
		}
	},


	/**
	 * Spinner
	 */
	spinner: {

		// toggle btw the spinner and save button
		show: function() {
			$('#blogSubmitBtn').hide();
			$('#blogSubmitWait').show();
		},

		// toggle btw the spinner and save button
		hide: function() {
			$('#blogSubmitWait').hide();
			$('#blogSubmitBtn').show();
		},

		// for publish operation
		publish: function(id, show) {
			if(show == 1)
			{
				$("#"+id+"Spinner").html("<img
src=\""+spinnerPath+"\"
alt=\"Loading\">");
			}
			else
			{
				$("#"+id+"Spinner").html("");
			}
		}

	},


	/**
	 * Elements
	 */
	element: {

		focus: function(element) {
			ele	= '#' + element;
			$(ele).focus();
			ejax.closedlg();
		}
	},


	/**
	 * Blog
	 */
	blog: {

		/**
		 * HTTP POST
		 */
		publish: function(url, id, status) {
			var targetUrl   = url +
'&task=toggleBlogStatus&status=' + status +
'&blogId=' + id;
			window.location = targetUrl;
		},
		remove: function(id, actionSrc) {
			var id_str = "";
			var src     = (actionSrc) ? actionSrc : 'Dashboard';

			$.each(id, function() {
				eblog.spinner.publish(id, 1);
				if(id_str!="")
				{
					id_str += ",";
				}
				id_str += this;
		    });

			ejax.load('Dashboard', 'deleteBlog', id_str, src);
		},
		confirmDelete: function( ids , url ){
			ejax.load( 'dashboard' , 'confirmDelete' , ids , url
);
		},
		confirm: function(url, blogId, lbl) {
			var targetUrl   = url + '&task=deleteBlog&blogId=' +
blogId;
			var callback    = 'window.location = "' + targetUrl +
'";';

			//console.log(callback);

 		    //eblog.system.dialog(
'COM_EASYBLOG_ARE_YOU_SURE_YOU_WANT_TO_REMOVE_BLOG' , callback,
'CONFIRMATION');
		    return;
		},

		approve: function( url , blogId ) {
			ejax.load( 'dashboard' , 'confirmApproveBlog' ,
blogId , url );
		},
		ajaxpublish: function(id, status, actionSrc) {
			var id_str  = "";
			var src     = (actionSrc) ? actionSrc : 'Dashboard';

			$.each(id, function() {
				eblog.spinner.publish( id , 1 );
				if( id_str!="" )
				{
					id_str += ",";
				}
				id_str += this;
		    });
			ejax.load( 'Dashboard', 'togglePublishStatus',
id_str , status , src);
		},
		togglePublish: function( id , action ){
			ejax.load( 'dashboard' , 'togglePublish' , id ,
action );
		},
		action: function( param , url ) {
			var count		= 0;
			var cids    	= "";
			var actionStr   = $("#"+param).val();

			if(actionStr == 'default')
			{
				return;
			}

		    $("#adminForm INPUT[name='cid[]']").each(
function() {
		        if ( $(this).attr('checked') ) {
		            if(cids.length == 0)
		            {
		                cids    = $(this).val();
		            }
		            else
		            {
		                cids    = cids + ',' + $(this).val();
		            }
		            count++;
				}
			});

			if(count <= 0)
			{
				eblog.system.alert('COM_EASYBLOG_PLEASE_SELECT_ONE_ITEM_TO_CONTINUE',
'COM_EASYBLOG_WARNING');
				return;
			}

			if(actionStr == 'unpublishBlog')
			{
				eblog.blog.togglePublish( cids , 'unpublish' );
			}
			else if(actionStr == 'publishBlog')
			{
				eblog.blog.togglePublish( cids , 'publish' );
			}
			else if(actionStr == 'deleteBlog')
			{
				eblog.blog.confirmDelete( cids , url );
			}
		},


		/**
		 * Tab section in blog.read.php
		 */
		tab: {
			init: function() {

				// hide all containers
				$('.tab_container').hide();

				// Show the first container
				$( 'div.tab-wrapper .tab_container:first' ).show();

				// Make the first tab active all the time.
				$('.tab_item:first').addClass('item-active');

				// Bind the click function on the tabs.
				$('ul.tab_button li.tab_item a').click( function() {
					var element	= $(this).parent();

					if ( element.hasClass( 'item-active' ) )
					{
						return false;
					}

					element.siblings().each( function(){

						if( $(this).hasClass( 'item-active' ) )
						{
							$(this).removeClass( 'item-active' );
						}
					});

					element.addClass( 'item-active' );

					// hide all other container
					$( '.tab_container' ).hide();

					// get id from element
					var _id = element.attr('id');

					var _x = _id.split('-');
					var id = _x[1];

					$( '#section-' + id ).show();

					return false;
				});
			}
		},

		/**
		 * ajax unsubscribe blog
		 */
		unsubscribe: function( sid, bid )
		{
			ejax.load( 'entry' , 'confirmUnsubscribeBlog' , sid
, bid );
		}
	},
	/**
	 * Tags
	 */
	tag: {
		remove: function( redirect , tagId ) {
			ejax.load( 'Dashboard' , 'confirmDeleteTag' , tagId
, redirect );
		},
		edit: function(id) {
			ejax.load('Dashboard', 'editTagDialog', id);
		},
		/**
		 * Actions
		 */
		action: function(param, url) {
			var count	= 0;
			var cids    = "";
			var actionStr   = $("#"+param).val();

			if(actionStr == '')
			{
				eblog.system.alert('COM_EASYBLOG_PLEASE_SELECT_ACTION_TO_PERFORM',
'COM_EASYBLOG_WARNING');
				return;
			}

		    $("#adminForm INPUT[name='cid[]']").each(
function() {
		        if ( $(this).attr('checked') ) {
		            if(cids.length == 0)
		            {
		                cids    = $(this).val();
		            }
		            else
		            {
		                cids    = cids + ',' + $(this).val();
		            }
		            count++;
				}
			});

			if(count <= 0)
			{
				eblog.system.alert('COM_EASYBLOG_PLEASE_SELECT_ONE_ITEM_TO_CONTINUE',
'COM_EASYBLOG_WARNING');
				return;
			}

			if(actionStr == 'deleteTag')
			{
				eblog.tag.confirm(url, cids, '');
			}
		},

		confirm: function(url, tagId, lbl)
		{
			var targetUrl   = url + '&task=deleteTag&tagId=' +
tagId;
			var callback    = 'window.location = "' + targetUrl +
'";';

			eblog.system.dialog('COM_EASYBLOG_ARE_YOU_SURE_YOU_WANT_TO_REMOVE_TAGS',
callback, 'CONFIRMATION');
		    return;
		},

		save: function() {
			finalData	= ejax.getFormVal('#frmEditTag');
			ejax.load('Dashboard', 'saveTag', finalData);
		}

	},
	socialshare:{
		share: function( id , type ){
			eblog.spinner.publish( id , 1 );
			ejax.load( 'dashboard' , 'ajaxSocialShare' , id ,
type );
		}
	},
	/**
	 * Twitter
	 */
	twitter: {

		update: function(id) {
			if ( id != "" )
			{
				eblog.spinner.publish(id, 1);
				ejax.load('Dashboard', 'ajaxUpdateTwitter', id);
			}
		}

	},


	/**
	 * Forms
	 */
	form: {

		checkbox: {

			checkall: function() {
				$("#adminForm INPUT[type='checkbox']").each(
function() {
				    if ( $('#toggle').attr('checked') )
						$(this).attr('checked', true);
			  		else
			  		    $(this).attr('checked', false);
				});
				return false;
			}
		}

	},


	/**
	 * Trackbacks
	 */
	trackback: {

		url: {

			copy: function() {
				$( '#trackback-url' ).focus().select();
			}

		}

	},
	/**
	 *  Common method for EasyBlog
	 */
	system: {
	    alert: function ( text, title ) {
	    	ejax.alert(ejax.string(text), ejax.string(title), '450',
'auto');

			//ejax.load('Latest', 'ajaxShowAlertDialog', _text,
_title);
	    },

	    dialog: function ( text, callback, title ) {

			var dialogActions = '<div
class="dialog-actions"><input type="button"
value="' + ejax.string('No') + '"
class="button" id="edialog-cancel"
name="edialog-cancel" onclick="ejax.closedlg();"
/><input type="button" value="' +
ejax.string('Yes') + '" class="button"
id="edialog-submit" name="edialog-submit"
onclick="' + callback + '" /></div>';

	       	var options = {
	    		title: ejax.string(title),
	    		content: ejax.string(text) + dialogActions
	    	}

	    	ejax.dialog(options);

	        //ejax.load('Latest', 'ajaxShowDialog', text,
callback, title);
	    },

	    loader: function (show) {

	        if(show)
	        {
	            if($('img#easyblog-loader').length > 0)
	            {
	                $('img#easyblog-loader').remove();
	            }

	            var img  = new Image;
	            img.src  =
'/components/com_easyblog/assets/images/loader.gif';
	            img.name = 'easyblog-loader';
	            img.id 	 = 'easyblog-loader';


	            var divBody     = $('div#eblog-wrapper');
	            var divWidth	= divBody.width();

	            //divHeight   	= window.innerHeight || self.innerHeight ||
(de&&de.clientHeight) || window.parent.document.body.clientHeight;
	            divHeight   	= window.innerHeight || self.innerHeight ||
window.parent.document.body.clientHeight;

	            divBody.prepend(img);
	            $('img#easyblog-loader').css('marginTop',
(divHeight / 2));
	            $('img#easyblog-loader').css('marginLeft',
(divWidth / 2));
	            $('img#easyblog-loader').css('position',
'absolute');
	            $('img#easyblog-loader').css('z-index',
10);
	        }
	        else
	        {
	            if($('img#easyblog-loader').length > 0)
	            {
	                $('img#easyblog-loader').remove();
	            }
	        }
		}
	},

	teamblog: {
	    join: function(teamId) {
	        var id  = String(teamId);
	        ejax.load('TeamBlog', 'showDialog', id,
'join');
	    },
	    leave: function(teamId) {
	        var id  = String(teamId);
	        ejax.load('TeamBlog', 'showDialog', id,
'leave');
	    },
	    leaveteam: function() {
			eblog.loader.loading( 'eblog_loader' );
			ejax.load( 'teamblog' , 'leaveTeam' ,
ejax.getFormVal( '#frmLeave' ) );
	    },
	    send: function() {
			eblog.loader.loading( 'eblog_loader' );
			ejax.load( 'teamblog' , 'addJoinRequest' ,
ejax.getFormVal( '#frmJoin' ) );
	    },
	    approve: function() {

	    },
	    reject: function() {

	    }
	},

	calendar: {
		reload: function(view, func, position, itemid, size, type, timestamp) {
			ejax.load( view , func, position, itemid, size, type, timestamp);
		},

		showtooltips : function(id)
		{
			$('.easyblog_calendar_tooltips').hide();
			$('#com_easyblog_calendar_day_'+id).show();
		}
	}
}

$(document).ready(function(){

	$.sanitizeHTML = function(html)
	{
		var fragmentContainer = document.createElement('div'),
		fragment = document.createDocumentFragment();

		$.clean([html], document, fragment);

		fragmentContainer.appendChild(fragment);

		return fragmentContainer.innerHTML;
	}

	/**
	 * Initializes all the gallery stuffs here
	 **/
	// Init fancy box images.
	if (window.eblog_enable_lightbox) {

		var options = {
			showOverlay: true,
			centerOnScroll: true,
			overlayOpacity: 0.7
		}

		if (!window.eblog_lightbox_title) {
			options.helpers = { title: false };
		}

		if (window.eblog_lightbox_enforce_size) {
			options.maxWidth = window.eblog_lightbox_width;
			options.maxHeight = window.eblog_lightbox_height;
		}

		eblog.images.initFancybox('a.easyblog-thumb-preview', options);
	}

	eblog.images.initCaption('img.easyblog-image-caption');
});

// module: end
	module.resolve();
});


EasyBlog
.require()
//.script('toolbar' , 'responsive')
.script( 'responsive')
.done(function($) {
	if( EasyBlog.responsive )
	{
		$('#eblog-wrapper').responsive({at: 818, switchTo:
'w768'});
		$('#eblog-wrapper').responsive({at: 600, switchTo:
'w600'});
		$('#eblog-wrapper').responsive({at: 500, switchTo:
'w320'});
	}
	// /$('.discuss-searchbar').responsive({at: 500, switchTo:
'narrow'});
});
ejax.js000064400000025064151167475070006055 0ustar00/**
 * @package		EasyBlog
 * @copyright	Copyright (C) 2010 Stack Ideas Private Limited. All rights
reserved.
 * @license		GNU/GPL, see LICENSE.php
 *
 * EasyBlog is free software. This version may have been modified pursuant
 * to the GNU General Public License, and as distributed it includes or
 * is derivative of works licensed under the GNU General Public License or
 * other free or open source software licenses.
 * See COPYRIGHT.php for copyright notices and details.
 */

EasyBlog.module('ejax', function($) {

	var module = this;

ejax = {
	http:		false, //HTTP Object
	format: 	'text',
	callback:	function(data){},
	error:		false,
	getHTTPObject : function() {
		var http = false;

		//Use IE's ActiveX items to load the file.
		if ( typeof ActiveXObject != 'undefined' ) {
			try {
				http = new ActiveXObject("Msxml2.XMLHTTP");
			}
			catch (e) {
				try {
					http = new ActiveXObject("Microsoft.XMLHTTP");
				}
				catch (E) {
					http = false;
				}
			}
		//If ActiveX is not available, use the XMLHttpRequest of Firefox/Mozilla
etc. to load the document.
		}
		else if ( XMLHttpRequest ) {
			try {http = new XMLHttpRequest();}
			catch (e) {http = false;}
		}
		return http;
	},

	/**
	 * Ajax function
	 */

	// ejax.call('controller','task', ['arg1',
'arg2'], function(){});
	// ejax.call('controller','task', ['arg1',
'arg2'], {
	//    success: function(){},
	//    error: function(){}
	// });
	call: function(view, method, params, callback)
	{
		var args = [{view: view, callback: callback}, method];
		args = args.concat(params);
		ejax.load.apply(this, args);
	},

	load : function ( view, method )
	{
		var callback = {
			success: function(){},
			error: function(){}
		};

		if (typeof view == "object")
		{
			callback = $.extend(callback, ($.isFunction(view.callback)) ? {success:
view.callback} : view.callback);
			view = view.view;
		}

		// This will be the site we are trying to connect to.
		url	 = eblog_site;
		url	+= '&tmpl=component';
		url += '&no_html=1';
		url += '&format=ejax';

		//Kill the Cache problem in IE.
		url	+= "&uid=" + new Date().getTime();

		var parameters	= '&view=' + view + '&layout='
+ method;

		// If there is more than 1 arguments, we want to accept it as parameters.
		if ( arguments.length > 2 )
		{
			for ( var i = 2; i < arguments.length; i++ )
			{
				var myArgument	= arguments[ i ];

				if($.isArray(myArgument))
				{
					for(var j = 0; j < myArgument.length; j++)
					{
					    var argument    = myArgument[j];
						if ( typeof( argument ) == 'string' )
						{
							// Encode value to proper html entities.
							parameters	+= '&value' + ( i - 2 ) + '[]=' +
encodeURIComponent( argument );
						}
					}
				} else {
				    var argument    = myArgument;
					if ( typeof( argument ) == 'string' )
					{
						// Encode value to proper html entities.
						parameters	+= '&value' + ( i - 2 ) + '=' +
encodeURIComponent( argument );
					}
				}
			}
		}

		var http = this.getHTTPObject(); //The XMLHttpRequest object is recreated
at every call - to defeat Cache problem in IE

		if ( !http || !view || !method ) return;

// 		if ( this.http.overrideMimeType )
// 			this.http.overrideMimeType( 'text/xml' );

		//Closure
 		var ths = this;

		http.open( 'POST' , url , true );

		// Required because we are doing a post
		http.setRequestHeader( "Content-type",
"application/x-www-form-urlencoded" );
		http.setRequestHeader( "Content-length", parameters.length );
		http.setRequestHeader( "Connection", "close" );

		http.onreadystatechange = function(){
			//Call a function when the state changes.

			if (http.readyState == 4)
			{
				//Ready State will be 4 when the document is loaded.
				if (http.status == 200)
				{
					var result = "";

					if (http.responseText)
					{
						result = http.responseText;
					}

					// Evaluate the result before processing the JSON text. New lines in
JSON string,
					// when evaluated will create errors in IE.
					result	= result.replace(/[\n\r]/g,"");

					try {
						result	= eval( result );
					} catch(e) {
						if (callback.error) { callback.error('Invalid response.');
}
					}

					// Give the data to the callback function.
					ths.process( result, callback );
				}
				else
				{
					//An error occured
					if (ths.error)
					{
						ths.error( http.status );
						if (callback.error) { callback.error(http.status); }
					}
				}
			}
		}
		http.send( parameters );
	},

	/**
	 * Method to get translated string from server
	 *
	 * @param	string
	 */
	_string: [],

	string: function( str ) {

		if (ejax._string[str]!=undefined)
			return ejax._string[str];

		var url	 = eblog_site +
'&tmpl=component&no_html=1&controller=easyblog&task=ajaxGetSystemString';

		var r1 = $.ajax({
		    type: "POST",
			url: url,
			data: "data=" + str,
			async: false,
			cache: true
		}).responseText;

		ejax._string[str] = r1;

		return r1;
	},

	/**
	 * Get form values
	 *
	 * @param	string	Form ID
	 */
	getFormVal : function( element ) {

	    var inputs  = [];
	    var val		= null;

		$( ':input', $( element ) ).each( function() {
			val = this.value.replace(/"/g, "&quot;");
			val = encodeURIComponent(val);

			if($(this).is(':checkbox') || $(this).is(':radio'))
		    {
				if($(this).prop('checked'))
				{
					inputs.push( this.name + '=' + escape( val ) );
				}
		    }
		    else
		    {
				inputs.push( this.name + '=' + escape( val ) );
			}
		});
		//var finalData = inputs.join('&&');
		//return finalData;
		return inputs;
	},

	process : function ( result, callback ){

		// Process response according to the key
		for(var i=0; i < result.length;i++)
		{
			var action	= result[ i ][ 0 ];

			switch( action )
			{
				case 'script':
					var data	= result[ i ][ 1 ];
					eval("EasyBlog(function($){" + data + "});");
					break;

				case 'after':
					var id		= result[ i ][ 1 ];
					var value	= result[ i ][ 2 ];


					$( '#' + id ).after( value );
					break;

				case 'append':
					var id		= result[ i ][ 1 ];
					var value	= result[ i ][ 2 ];

					$( '#' + id ).append( value );
					break;

				case 'assign':
					var id		= result[ i ][ 1 ];
					var value	= result[ i ][ 2 ];

					$( '#' + id ).html( value );
					break;

				case 'value':
					var id		= result[ i ][ 1 ];
					var value	= result[ i ][ 2 ];

					$( '#' + id ).val( value );
					break;
				case 'prepend':
					var id		= result[ i ][ 1 ];
					var value	= result[ i ][ 2 ];
					$( '#' + id ).prepend( value );
					break;
				case 'destroy':
					var id		= result[ i ][ 1 ];
					$( '#' + id ).remove();
					break;
				case 'dialog':
					ejax.dialog( result[ i ][ 1 ] );
					break;
				case 'alert':
					ejax.alert( result[ i ][ 1 ], result[ i ][ 2 ], result[ i ][ 3 ] ,
result[ i ][ 4 ] );
					break;
				case 'create':
					break;
				case 'error':
					var args = result[ i ].slice(1);
					callback.error.apply(this,args);
					break;
				case 'callback':
					var args = result[ i ].slice(1);
					callback.success.apply(this, args);
					break;
			}
		}
		delete result;
	},

	/**
	 * Dialog
	 */
	dialog: function( options ) {
		ejax._showPopup( options );
	},

	closedlg: function() {
		var dialog = $('#eblog-dialog');
		var dialogOverlay = $('#eblog-overlay');

		var options = dialog.data('options');

		dialogOverlay.hide();

		dialog
			.fadeOut(function()
			{
				options.afterClose.apply(dialog);
			});

		$(window).unbind('.dialog');

		$(document).unbind('keyup', ejax._attachPopupShortcuts);
	},

	_attachPopupShortcuts: function(e)
	{
		if (e.keyCode == 27) { ejax.closedlg(); }
	},

	/**
	 * Alert
	 */
	alert: function( content, title, width, height ) {

		var COM_EASYBLOG_OK = ejax.string('COM_EASYBLOG_OK');

		var dialogActions = '<div
class="dialog-actions"><input type="button"
value="' + COM_EASYBLOG_OK + '"
class="button" id="edialog-cancel"
name="edialog-cancel" onclick="ejax.closedlg();"
/></div>';

 		var options = {
 			title: title,
			content: content + dialogActions,
			width: width,
			height: height
		}

		ejax._showPopup( options );
	},

	/**
	 * Private function
	 *
	 * Generate dialog and popup dialog
	 */
	_showPopup: function( options ){

		var defaultOptions = {
			width: '500',
			height: 'auto',
			type: 'dialog',
			beforeDisplay: function(){},
			afterDisplay: function(){},
			afterClose: function(){}
		}

		var options = $.extend({}, defaultOptions, options);

		var dialogOverlay = $('#eblog-overlay');

		if (dialogOverlay.length < 1)
		{
			dialogOverlay = '<div
id="eblog-overlay"></div>';

			dialogOverlay = $(dialogOverlay).appendTo('body');

			dialogOverlay.click(function()
			{
				ejax.closedlg();
			});
		}

		var dialog = $('#eblog-dialog');

		if (dialog.length < 1)
		{
			dialogTemplate   = '<div id="eblog-dialog">';
			dialogTemplate	+= '	<div class="dialog">';
			dialogTemplate	+= '		<div
class="dialog-wrap">';
			dialogTemplate	+= '			<div
class="dialog-top">';
			dialogTemplate	+= '				<h3></h3>';
			dialogTemplate	+= '				<a href="javascript:void(0);"
onclick="ejax.closedlg();"
class="closeme">Close</a>';
			dialogTemplate	+= '			</div>';
			dialogTemplate	+= '			<div class="dialog-middle
clearfix">';
			dialogTemplate	+= '				<div
class="dialog-middle-content"></div>';
			dialogTemplate	+= '			</div>';
			dialogTemplate	+= '		</div>';
			dialogTemplate	+= '	</div>';
			dialogTemplate	+= '</div>';

			dialog = $(dialogTemplate).appendTo('body');
		}

		// Store dialog options
		dialog
			.data('options', options);

		var dialogTitle = dialog.find('.dialog-top h3');

		options.title	= options.title != null ? options.title :
'&nbsp;';
		dialogTitle.html(unescape(options.title));

		var dialogContent = $('#eblog-dialog .dialog-middle-content');

		dialogContent
			.css({
				width : (options.width=='auto') ? 'auto' :
parseInt(options.width),
				height: (options.height=='auto') ? 'auto' :
parseInt(options.height)
			})
			.html(options.content);

		options.beforeDisplay.apply(dialog);


		var positionDialog = function()
		{
			dialog
				.css({ top: 0, left: 0 })
				.position({ my: 'center', at: 'center', of: window
});

			dialogOverlay
				.css({
					width: $(document).width(),
					height: $(document).height()
				})
				.show();
		};

		dialog
			.show(0, function()
			{
				positionDialog();

				var positionDelay;
				$(window)
					.bind('resize.dialog scroll.dialog', function()
					{
						clearTimeout(positionDelay);
						positionDelay = setTimeout(positionDialog, 50);
					});
			});

		dialog.fadeOut(0, function() {
			dialog.fadeIn(function() {
				options.afterDisplay.apply(dialog);
			});
		});

		$('#edialog-cancel, #edialog-submit').live('mouseup',
function() {
		 	ejax.closedlg();
		});

		$(document).bind('keyup', ejax._attachPopupShortcuts);
	}
}

// module: end
	module.resolve();
});
featured.js000064400000005376151167475070006731 0ustar00EasyBlog.module(
"featured" , function($) {

var module = this;

// require: start
EasyBlog.require()
.done(function(){

// controller: start

EasyBlog.Controller(

	"Featured.Scroller",

	{
		defaultOptions: {

			elements: null,

			itemWidth: null,

			// Auto rotate option
			autorotate: {
				enabled		: false,
				interval	: 50
			},

			// Items
			"{placeHolder}"	: ".slider-holder",
			"{slider}"		: ".featured-entries",
			"{sliderItems}"	: ".slider-holder ul li",
			"{sliderNavigation}" : ".featured-navi .featured-a
a"
		}
	},

	function(self) {return {

		/**
		 * Featured scroller object initialization happens here.
		 *
		 */
		init: function() {

			// Set the current holder width to a temporary location.
			self.options.itemWidth	= self.placeHolder().width() + 1;

			// Calculate the total width of the whole parent container as we need to
multiply this by the number of child elements.
			var totalWidth 			= self.sliderItems().length * parseInt(
self.options.itemWidth );

			// Now, we need to stretch the parent's width to match the total
items.
			self.slider().css( 'width' , totalWidth );

			// Make sure the width of each child items has the same width as its
parent.
			self.sliderItems().css( 'width' , self.options.itemWidth );

			if( self.options.autorotate.enabled )
			{
				setTimeout( function(){
					self.initAutoRotate();	
				}, parseInt( self.options.autorotate.interval ) * 1000 );
			}
		},

		"{sliderNavigation} click" : function( element ){

			var index 	= $( element ).data( 'slider' );
			var left 	= 0;

			// If the current index is 1, we can just leave left as 0
			if( index != 1 )
			{
				left 	= self.options.itemWidth * parseInt( index - 1 );
			}

			// Since any items after the first item is hidden by default, we need to
show the current item.
			self.slider().children( ':nth-child(' + index + ')'
).show();

			// Now let's animate the placeholder.
			self.slider().animate( {
				left : '-' + left + 'px'
			}, 'slow' );

			// Remove active class from the navigation anchor link.
			self.sliderNavigation( '.active' ).removeClass(
'active' );

			// Set the active element on the current item.
			$( element ).addClass( 'active' );
		},

		/**
		 * This initializes the auto rotation for the featured items.
		 */
		initAutoRotate: function(){

			var set 	= false;

			self.sliderNavigation().each(function(){

				if( $( this ).hasClass( 'active' ) && set != true )
				{
					if( $( this ).next().length == 0 )
					{
						self.sliderNavigation( ':first' ).click();
					}
					else
					{
						$( this ).next().click();
					}
					set	= true;
				}

			});

			setTimeout( function(){
				self.initAutoRotate();
			}, parseInt( self.options.autorotate.interval ) * 1000 );

		}

	} }
);

module.resolve();

// controller: end	
});

});
index.html000064400000000037151167475070006556 0ustar00<!DOCTYPE
html><title></title>
location.js000064400000031604151167475070006733
0ustar00EasyBlog.module("location", function($) {

var module = this;

// require: start
EasyBlog.require()
	.library(
		"throttle-debounce",
		"ui/autocomplete"
	)
	.done(function(){

// controller: start

EasyBlog.Controller(

	"Location.Form",

	{
		defaultOptions: {

			language: 'en',

			initialLocation: null,

			mapType			: "ROADMAP",

			"{locationInput}": ".locationInput",

			"{locationLatitude}": ".locationLatitude",

			"{locationLongitude}": ".locationLongitude",

			"{locationMap}": ".locationMap",

			"{autoDetectButton}": ".autoDetectButton"

		}
	},

	function(self) { return {


		init: function() {

			var mapReady = $.uid("ext");

			window[mapReady] = function() {
				$.___GoogleMaps.resolve();
			}

			if (!$.___GoogleMaps) {

				$.___GoogleMaps = $.Deferred();

				EasyBlog.require()
					.script(
						{prefetch: false},
						"https://maps.googleapis.com/maps/api/js?sensor=true&language="
+ self.options.language + "&callback=" + mapReady
					);
			}

			// Defer instantiation of controller until Google Maps library is
loaded.
			$.___GoogleMaps.done(function() {
				self._init();
			});
		},

		_init: function(el, event) {

			self.geocoder = new google.maps.Geocoder();

			self.hasGeolocation = navigator.geolocation!==undefined;

			if (!self.hasGeolocation) {
				self.autoDetectButton().remove();
			} else {
				self.autoDetectButton().show();
			}

			self.locationInput()
				.autocomplete({

					delay: 300,

					minLength: 0,

					source: self.retrieveSuggestions,

					select: function(event, ui) {

						self.locationInput()
							.autocomplete("close");

						self.setLocation(ui.item.location);
					}
				})
				.prop("disabled", false);

			self.autocomplete =
self.locationInput().autocomplete("widget");

			self.autocomplete
				.addClass("location-suggestion");

			var initialLocation = $.trim(self.options.initialLocation);

			if (initialLocation) {

				self.getLocationByAddress(

					initialLocation,

					function(location) {

						self.setLocation(location[0]);
					}
				);

			};

			self.busy(false);
		},

		busy: function(isBusy) {
			self.locationInput().toggleClass("loading", isBusy);
		},

		getUserLocations: function(callback) {
			self.getLocationAutomatically(
				function(locations) {
					self.userLocations = self.buildDataset(locations);
					callback && callback(locations);
				}
			);
		},

		getLocationByAddress: function(address, callback) {

			self.geocoder.geocode(
				{
					address: address
				},
				callback);
		},

		getLocationByCoords: function(latitude, longitude, callback) {

			self.geocoder.geocode(
				{
					location: new google.maps.LatLng(latitude, longitude)
				},
				callback);
		},

		getLocationAutomatically: function(success, fail) {

			if (!navigator.geolocation) {
				return fail("ERRCODE", "Browser does not support
geolocation or do not have permission to retrieve location data.")
			}

			navigator.geolocation.getCurrentPosition(
				// Success
				function(position) {
					self.getLocationByCoords(position.coords.latitude,
position.coords.longitude, success)
				},
				// Fail
				fail
			);
		},

		renderMap: function(location, tooltipContent) {

			self.busy(true);

			self.locationMap().show();

			var map	= new google.maps.Map(
				self.locationMap()[0],
				{
					zoom: 15,
					center: location.geometry.location,
					mapTypeId: google.maps.MapTypeId[self.options.mapType],
					disableDefaultUI: true
				}
			);

			var marker = new google.maps.Marker(
				{
					position: location.geometry.location,
					center	: location.geometry.location,
					title	: location.formatted_address,
					map		: map
				}
			);

			var infoWindow = new google.maps.InfoWindow({ content: tooltipContent
});

			google.maps.event.addListener(map, "tilesloaded", function() {
				infoWindow.open(map, marker);
				self.busy(false);
			});
		},

		setLocation: function(location) {

			if (!location) return;

			self.locationResolved = true;

			self.lastResolvedLocation = location;

			self.locationInput()
				.val(location.formatted_address);

			self.locationLatitude()
				.val(location.geometry.location.lat());

			self.locationLongitude()
				.val(location.geometry.location.lng());

			self.renderMap(location, location.formatted_address);
		},

		removeLocation: function() {

			self.locationResolved = false;

			self.locationInput()
				.val('');

			self.locationLatitude()
				.val('');

			self.locationLongitude()
				.val('');

			self.locationMap().hide();
		},

		buildDataset: function(locations) {

			var dataset = $.map(locations, function(location){
				return {
					label: location.formatted_address,
					value: location.formatted_address,
					location: location
				};
			});

			return dataset;
		},

		retrieveSuggestions: function(request, response) {

			self.busy(true);

			var address = request.term,

				respondWith = function(locations) {
					response(locations);
					self.busy(false);
				};

			// User location
			if (address=="") {

				respondWith(self.userLocations || []);

			// Keyword search
			} else {

				self.getLocationByAddress(address, function(locations) {

					respondWith(self.buildDataset(locations));
				});
			}
		},

		suggestUserLocations: function() {

			if (self.hasGeolocation && self.userLocations) {

				self.removeLocation();

				self.locationInput()
					.autocomplete("search", "");
			}

			self.busy(false);
		},

		"{locationInput} blur": function() {

			// Give way to autocomplete
			setTimeout(function(){

				var address = $.trim(self.locationInput().val());

				// Location removal
				if (address=="") {

					self.removeLocation();

				// Unresolved location, reset to last resolved location
				} else if (self.locationResolved) {

					if (address != self.lastResolvedLocation.formatted_address) {

						self.setLocation(self.lastResolvedLocation);
					}
				} else {
					self.removeLocation();
				}

			}, 250);
		},

		"{autoDetectButton} click": function() {

			self.busy(true);

			if (self.hasGeolocation && !self.userLocations) {

				self.getUserLocations(self.suggestUserLocations);

			} else {

				self.suggestUserLocations();
			}
		}

	}}
);

EasyBlog.Controller(

	"Location.Map",

	{
		defaultOptions: {
			animation: 'drop',
			language: 'en',
			useStaticMap: false,
			disableMapsUI: true,

			// fitBounds = true will disobey zoom
			// single location with fitBounds = true will set zoom to max (by
default from Google)
			// locations.length == 1 will set fitBounds = false unless explicitly
specified
			// locations.length > 1 will set fitBounds = true unless explicitly
specified
			zoom: 5,
			fitBounds: null,

			minZoom: null,
			maxZoom: null,

			// location in center has to be included in locations array
			// center will default to first object in locations
			// latitude and longitude always have precedence over address
			// {
			// 	"latitude": latitude,
			// 	"longitude": longitude,
			// 	"address": address
			// }
			center: null,

			// address & title are optional
			// latitude and longitude always have precedence over address
			// title will default to geocoded address
			// first object will open info window
			// [
			// 	{
			// 		"latitude": latitude,
			// 		"longitude": longitude,
			// 		"address": address,
			// 		"title": title
			// 	}
			// ]
			locations: [],

			// Default map type to be road map. Can be overriden.
			mapType: "ROADMAP",

			width: 500,
			height: 400,

			"{locationMap}": ".locationMap"
		}
	},

	function(self) { return {

		init: function() {
			self.mapLoaded = false;

			var mapReady = $.uid("ext");

			window[mapReady] = function() {
				$.___GoogleMaps.resolve();
			}

			if(self.options.useStaticMap == true) {
				var language = '&language=' +
String(self.options.language);
				var dimension = '&size=' + String(self.options.width) +
'x' + String(self.options.height);
				var zoom = '&zoom=' + String(self.options.zoom);
				var center = '&center=' +
String(parseFloat(self.options.locations[0].latitude).toFixed(6)) +
',' +
String(parseFloat(self.options.locations[0].longitude).toFixed(6));
				var maptype = '&maptype=' + google.maps.MapTypeId[
self.options.mapType ];
				var markers = '&markers=';
				var url =
'https://maps.googleapis.com/maps/api/staticmap?sensor=false' +
language + dimension;

				if(self.options.locations.length == 1) {
					markers +=
String(parseFloat(self.options.locations[0].latitude).toFixed(6)) +
',' +
String(parseFloat(self.options.locations[0].longitude).toFixed(6));

					url += zoom + center + maptype + markers;
				} else {
					var temp = new Array();
					$.each(self.options.locations, function(i, location) {
						temp.push(String(parseFloat(location.latitude).toFixed(6)) +
',' + String(parseFloat(location.longitude).toFixed(6)));
					})
					markers += temp.join('|');

					url += markers + maptype;
				}

				self.locationMap().show().html('<img src="' + url +
'" />');
				self.busy(false);
			} else {
				var mapReady = $.uid("ext");

				window[mapReady] = function() {
					$.___GoogleMaps.resolve();
				}

				if (!$.___GoogleMaps) {

					$.___GoogleMaps = $.Deferred();

					EasyBlog.require()
						.script(
							{prefetch: false},
							"https://maps.googleapis.com/maps/api/js?sensor=true&language="
+ self.options.language + "&callback=" + mapReady
						);
				}

				// Defer instantiation of controller until Google Maps library is
loaded.
				$.___GoogleMaps.done(function() {
					self._init();
				});
			}
		},

		_init: function() {

			// initialise fitBounds according to locations.length
			if(self.options.fitBounds === null) {
				if(self.options.locations.length == 1) {
					self.options.fitBounds = false;
				} else {
					self.options.fitBounds = true;
				}
			}

			// initialise disableMapsUI value to boolean
			self.options.disableMapsUI = Boolean(self.options.disableMapsUI);

			// initialise all location object
			self.locations = new Array();
			$.each(self.options.locations, function(i, location) {
			    if( location.latitude != 'null' &&
location.longitude != 'null' ) {
					self.locations.push(new google.maps.LatLng(location.latitude,
location.longitude));
				}
			});

			if(self.locations.length > 0) {
				self.renderMap();
			}

			self.busy(false);
		},

		busy: function(isBusy) {
			self.locationMap().toggleClass("loading", isBusy);
		},

		renderMap: function() {
			self.busy(true);

			self.locationMap().show();

			var latlng;

			if(self.options.center) {
				latlng = new google.maps.LatLng(center.latitude, center.longitude);
			} else {
				latlng = self.locations[0];
			}

			self.map = new google.maps.Map(
				self.locationMap()[0],
				{
					zoom: parseInt( self.options.zoom ),
					minZoom: parseInt( self.options.minZoom ),
					maxZoom: parseInt( self.options.maxZoom ),
					center: latlng,
					mapTypeId: google.maps.MapTypeId[ self.options.mapType ],
					disableDefaultUI: self.options.disableMapsUI
				}
			);

			google.maps.event.addListener(self.map, "tilesloaded",
function() {
				if(self.mapLoaded == false) {
					self.mapLoaded = true;
					self.loadLocations();
				}
			});
		},

		loadLocations: function() {
			self.bounds = new google.maps.LatLngBounds();
			self.infoWindow = new Array();

			var addLocations = function() {
				$.each(self.locations, function(i, location) {
					self.bounds.extend(location);
					var placeMarker = function() {
						self.addMarker(location, self.options.locations[i]);
					}

					setTimeout(placeMarker, 100 * ( i + 1 ) );
				});

				if(self.options.fitBounds) {
					self.map.fitBounds(self.bounds);
				}
			};

			setTimeout(addLocations, 500);
		},

		addMarker: function(location, info) {
			if (!location) return;

			var marker = new google.maps.Marker(
				{
					position: location,
					map: self.map
				}
			);

			marker.setAnimation(google.maps.Animation.DROP);
			self.addInfoWindow(marker, info)
		},

		addInfoWindow: function(marker, info) {
			var content = info.content;

			if(!content) {
				content = info.address;
			}

			var infoWindow = new google.maps.InfoWindow();
			infoWindow.setContent(content);
			self.infoWindow.push(infoWindow);

			if(self.options.locations.length > 1) {
				google.maps.event.addListener(marker, 'click', function() {
					$.each(self.infoWindow, function(i, item) {
						item.close();
					});
					infoWindow.open(self.map, marker);
				});
			} else {
				google.maps.event.addListener(marker, 'click', function() {
					infoWindow.open(self.map, marker);
				});

				infoWindow.open(self.map, marker);
			}

			// custom hack for postmap module
			if(info.ratingid) {
				google.maps.event.addListener(infoWindow, 'domready',
function() {
					$.each(info.ratingid, function(i, rid) {
						eblog.ratings.setup( 'ebpostmap_' + rid +
'-ratings' , true , 'entry' );
						$('#ebpostmap_' + rid +
'-ratings').removeClass('ui-state-disabled');
						$('#ebpostmap_' + rid +
'-ratings-form').find('.blog-rating-text').hide();
						$('#ebpostmap_' + rid + '-ratings
.ratings-value').hide();
					})
				});
			}
		}
	}}
);

module.resolve();

// controller: end

	});
// require: end
});
media/browser.item.js000064400000026706151167475100010623 0ustar00//
module: start
EasyBlog.module("media/browser.item", function($) {

var module = this;

EasyBlog.Controller("Media.Browser.Item",

	{
		defaultOptions: {

			"{itemTitle}": ".itemTitle",
			"{itemIcon}": ".itemIcon",
			"{childItem}": ".browserItem",

			hasCustomHandler: ["folder"]
		}
	},

	// Instance properties
	function(self) {

		var $Media, $Library, $Browser;

		return {

			init: function() {

				$Media = self.media;
				$Library = $Media.library;
				$Browser = $Media.browser;

				// Store a reference to the controller inside item data
				// and also add a item-type class.
				self.element
					.data("item", self)
					.addClass("item-type-" + self.meta().type);

				// Bind to the remove event
				self.meta().data.on("removed", function(){
					$Browser.removeItem(self);
				});

				// Create item handler
				self.createHandler();
			},

			meta: function() {
				return $Library.getMeta(self.key);
			},

			place: function() {
				return $Library.getPlace(self.key);
			},

			parentFolder: function() {
				return $Browser.getItem($Library.getParentKey(self.key));
			},

			createHandler: function() {

				if ($.inArray(self.meta().type, self.options.hasCustomHandler) < 0)
return;

				var ItemHandler =
EasyBlog.Controller.Media.Browser.Item[$.String.capitalize(self.meta().type)];

				if (ItemHandler===undefined) {

					EasyBlog.require()
						.script("media/browser.item." + self.meta().type)
						.done(function() {
							self.createHandler();
						});

					return;
				}

				self.handler = new ItemHandler(
					self.element,
					{
						controller: {
							media: self.media,
							item: self
						}
					}
				);
			},

			activate: function() {

				self.setLayout();

				if (self.handler) {
					self.handler.activate();
				}
			},

			remove: function() {

				try {

					// Destroy handler
					if (self.handler) {
						if (!self.handler._destroyed) {
							self.handler.destroy();
						}
					}

					if (self.element) {
						self.element.remove();
					}

				} catch(e) {

				}
			},

			isVisible: function() {

				// TODO: Optimize routines using seed
				var itemElement = self.element,
					itemHeight  = itemElement.outerHeight(),
					itemTop     = itemElement.offset().top,
					itemBottom  = itemTop + itemHeight,
					itemField       = self.media.browser.itemField(),
					itemFieldTop    = itemField.offset().top,
					itemFieldBottom = itemFieldTop + itemField.height();

					isVisible = !((itemTop < itemFieldTop    && itemBottom <
itemFieldTop) ||
						          (itemTop > itemFieldBottom && itemBottom >
itemFieldBottom));

					// #debug:start
					if (self.media.options.debug.itemVisiblity) {

						self.media.console("info", [
							"Item visibility",
							{
								title: self.meta().title,
								isVisible: isVisible,
								item: self,
								itemHeight: itemHeight,
								itemTop: itemTop,
								itemBottom: itemBottom,
								itemFieldTop: itemFieldTop,
								itemFieldBottom: itemFieldBottom
							}
						]);
					}
					// #debug:end

				return isVisible;
			},

			setLayout: function(animate) {

				// Nothing to be done for folders
				if (self.meta().type=="folder") return;

				// Call handler's setLayout if exists
				if (self.handler && $.isFunction(self.handler.setLayout)) {

					return self.handler.setLayout();
				}

				self.setIcon();
			},

			setIcon: function() {

				// If icon is loading, skip.
				if (self.setIcon.loading || self.setIcon.loaded) return;

				// If no icon given or item has been destroyed, skip.
				if (self.meta().icon===undefined || self._destroyed) return;

				self.setIcon.loading = true;

				$Browser.iconThread.addDeferred(function(thread) {

					var itemIcon = self.itemIcon();

					// Save on calculating this
					// if we rely on a set layout seed
					if (!self.isVisible()) {

						self.setIcon.loading = false;

						thread.reject();

					} else {

						var meta = self.meta(),
							place = self.place(),
							iconUrl = meta.icon.url;

						if (!self.setIcon.useNaturalUrl &&
							!/jomsocial|flickr/.test(place.id) &&
							meta.type==="image") {

							iconUrl = EasyBlog.baseUrl
							          + "&view=media&layout=getIconImage"
							          + "&place=" + encodeURIComponent(place.id)
							          + "&path="  +
encodeURIComponent(self.meta().path)
							          + "&format=image&tmpl=component";
						}

						self.element.addClass("loading-icon");

						itemIcon
							.image("get", iconUrl)
							.done(function(){

								self.element.removeClass("loading-icon");

								self.setIcon.loaded = true;
								self.setIcon.loading = false;

								thread.resolve();
							})
							.fail(function(){

								self.element.removeClass("loading-icon");

								self.setIcon.loaded = false;
								self.setIcon.loading = false;

								thread.reject();

								if (!self.setIcon.triedNaturalUrl) {
									self.setIcon.useNaturalUrl = true;
									self.setIcon.triedNaturalUrl = true;
								}
							});
					}
				});
			}

		}
	}

);

EasyBlog.Controller("Media.Browser.Item.Folder",

	{
		defaultOptions: {
			"{childItem}": ".browserItem"
		}
	},

	// Instance properties
	function(self) {

		var $Media, $Library, $Browser;

		return {

			init: function() {

				$Media = self.media;
				$Library = $Media.library;
				$Browser = $Media.browser;

				self.element.empty();
			},

			items: {},

			// This is to make sure parent class's setLayout isn't called.
			setLayout: function() {

				var place = self.item.place(),
					status;

				switch (place.ready.state()) {

					case "pending":
						status = "loading";
						break;

					case "rejected":
						status = "error";
						break;

					case "resolved":

						if (self.folderView && self.folderView.map.length > 0) {

							status = "ready";
							$Browser.browserPagination().show();

						} else {

							switch (place.populate.task.state()) {

								case "pending":
									status = "loading";
									break;

								case "rejected":
									status = "error";
									break;

								case "resolved":

									if (self.folderView && self.folderView.map.length < 1)
{

										status = place.acl.canUploadItem ? "empty canUpload" :
"empty";

										if (self.item.meta().place==="jomsocial" &&
self.item.meta().path===$Media.options.directorySeparator) {
											status = "selectAlbum";
										}

									} else {

										status = "ready";
									}

									$Browser.browserPagination().toggle(!/empty|selectAlbum/.test(status));
									break;
							}
						}
						break;
				}

				$Browser.currentFolderStatus(status);

				$Browser.setItemLayout();

				if(self.isChangingPage) {
					self.isChangingPage = false;
				} else {
					self.populatePages();
				}
			},

			populate: function(files) {

				if ($Browser.itemField().hasClass("searching")) return;

				var i, l = files.length;

				var _items = self.items;
					self.items = {};

				// If there is nothing to show
				if (l<1) {

					// Detach everything
					try {
						// Wrapped in try catch because deleted items by may be involved.
						self.childItem().detach();
					} catch(e) {

					}

					// TODO: If this at an imposible range,
					// revert to the last possible range.
					// return;

				} else {

					for (i=0; i<l; i++) {

						var key = files[i];

						// This either return the newly created file,
						// or the file that has been previously created.
						var file = $Browser.createFile(key);

						file.element
							.appendTo(self.element);

						self.items[key] = file;
						delete _items[key];
					}

					for (key in _items) {

						// TODO: Check if this will result in error for removed item
						// Then remove the try catch
						try {
							_items[key].element.detach();
						} catch(e) {

						}
					}
				}

				// If we are populating in the background,
				// we don't need to set the item layout yet.
				if (self.item.place().itemGroup.hasClass("active") &&
					self.element.hasClass("focus")) {

					self.setLayout();
				}
			},

			activate: function() {

				if (!self.folderView) {

					self.folderView =
						self.item.meta().data.views
							.create({from: 0, to: $Browser.options.layout.maxIconPerPage});

					self.folderView
						.updated(self.populate);
				}

				self.setLayout();
			},

			populatePages: function() {

				var page = self.totalPage();

				if(page < 2) {
					$Browser.browserPagination().hide();
				} else {
					$Browser.browserPagination().show();

					$Browser.pageSelection().html('');

					for(var i = 1; i <= page; i++) {
						$Browser.view.paginationPage({
							page: i
						}).appendTo($Browser.pageSelection());
					}

					self.folderView.currentPage = self.folderView.currentPage || 1;

					$Browser.paginationPage().removeClass('selected');
					$Browser.paginationPage('.page' +
self.folderView.currentPage).addClass('selected');
				}
			},

			totalPage: function() {

				var totalItems = self.folderView.map.length,
					basePage = totalItems % $Browser.options.layout.maxIconPerPage,
					page = Math.floor((basePage > 0) ? totalItems /
$Browser.options.layout.maxIconPerPage + 1 : totalItems /
$Browser.options.layout.maxIconPerPage);

				if($Browser.totalPage().text() != page) {
					$Browser.totalPage().text(page);
				}

				return page;
			},

			// both getter and setter
			currentPage: function(page, callback) {

				var current = parseInt(self.folderView.currentPage);

				if(isNaN(current)) {
					current = 1;

					self.folderView.currentPage = 1;

					$Browser.paginationPage().removeClass('selected');
					$Browser.paginationPage(':first').addClass('selected');
				}

				if(page===undefined) {
					page = {
						from: self.folderView.from
					};
				}

				if($.isPlainObject(page) && page.from !== undefined) {
					var totalItems = self.folderView.map.length,
						currentPage = Math.floor(page.from /
$Browser.options.layout.maxIconPerPage) + 1;
				}

				page = currentPage || page;

				if(page != current) {

					var from = (page - 1) * $Browser.options.layout.maxIconPerPage,
						to = from + $Browser.options.layout.maxIconPerPage;

					if(from != page.from) {
						self.folderView.select({from: from, to: to});
					}

					self.folderView.currentPage = page;

					$Browser.paginationPage().removeClass('selected');
					$Browser.paginationPage('.page' +
page).addClass('selected');

					$Browser.trigger('pageChanged', [current, page]);
				}

				callback && callback();

				return page;
			},

			next: function() {
				self.changePage('next');
			},

			prev: function() {
				self.changePage('prev');
			},

			changePage: function(type) {
				self.isChangingPage = true;

				var totalPage = self.totalPage(),
					currentPage = self.currentPage();

				if(type == 'next' && currentPage < totalPage) {
					currentPage += 1;
				}

				if(type == 'prev' && currentPage > 1) {
					currentPage -= 1;
				}

				self.currentPage(currentPage);
			},

			locateItem: function(meta) {

				var meta = $Library.getMeta(meta),
					page = self.getItemPage(meta);

				if (page) {

					self.currentPage(page, function(){
						$Browser.focusItem(meta.key, true);
					});
				}
			},

			getItemPage: function(meta) {

				var meta = $Library.getMeta(meta),
					key = meta.key,
					mapLength = self.folderView.map.length,
					matchedIndex;

				$.each(self.folderView.map, function(i, value) {
					if(value == key) {
						matchedIndex = i;
						return false;
					}
				});

				return (matchedIndex !== undefined) ? Math.floor(matchedIndex /
$Browser.options.layout.maxIconPerPage) + 1 : false;
			}
		}
	}

);

module.resolve();

});
// module: end
media/browser.item.less000064400000021402151167475100011141
0ustar00(~"@{MediaManager}") {

    .browserItemField {

        position: relative;
        text-align: left;
        overflow: hidden;
        height: 100%;
        margin-left: 181px;


        &.searching {

            .browserItemGroup {
                display: none !important;
            }

            .browserItemGroup.search-mode {
                display: block !important;
            }
        }

        // Hints: Start;
        .hints {

            background: #fff;

            .hint {
                display: none;
            }
        }

        &.ready {

            .hints {
                display: none;
            }

            overflow-y: scroll;
        }

        &.loading {

            .hint.hint-loading {

                margin-top: (42px / 2) * -1;
                display: block;

                i {
                    width: 220px;
                    height: 19px;
                    background: url(loader.bar.gif) no-repeat;
                    display: inline-block;
                }
            }
        }

        &.empty {

            .hint.hint-empty {

                display: block;

                .uploaderButton {
                    display: none;
                }
            }

            &.canUpload {

                .hint.hint-empty {

                    margin-top: -29px;

                    .uploaderButton {
                        display: inline-block;
                        height: 32px;
                        padding-left: 28px;
                        margin-top: 4px;

                        i {
                            .icon-media(7, 2);
                            display: block;
                            height: 16px;
                            left: 7px;
                            position: absolute;
                            top: 6px;
                            width: 16px;
                        }
                    }
                }
            }
        }

        &.emptySearch {

            .hint.hint-emptySearch {
                display: block;
            }
        }

        &.error {

            .hint.hint-error {
                display: block;
            }
        }

        &.selectAlbum {

            .hint.hint-selectAlbum {
                display: block;
            }
        }

        &.flickr {

            .hint.hint-flickr {

                margin-top: (82px / 2) * -1;
                display: block;

                .hint-content {
                    height: auto;
                    padding: 0 100px 10px;
                }
            }
        }
        // Hints: End;

        .browserItemGroup {

            position: relative;
            width: 100%;
            display: none;
            border-bottom: 1px solid #fff; /* Fixes flickering */
            .clearfix();
            .unselectable();

            &.active {
                display: block;
            }
        }

        .browserItem {
            position: relative;
            cursor: pointer;
            overflow: hidden;

            i.loading {
                background: url(loader.gif) center center no-repeat;
                width: 16px;
                height: 16px;
                display: none;
            }

            &.loading-icon {
                i.loading {
                    display: block;
                }
            }

            .itemTitle {
                font-size: 12px;
                .unselectable();
            }

            &.loading-icon {
                .itemIcon {
                    .opacity(0);
                }
            }

            // Folder start
            &.item-type-folder {

                padding: 0;
                display: none;

                // Prevent width/height overriding by tile view
                width: auto !important;
                height: auto !important;

                &.active,
                &.focus {
                    display: block;
                }
            }
            // Folder end
        }

        &.view-tile {

            .browserItem {

                .item-type-general() {

                    float: left;
                    .rounded(5px);

                    // It is perfectly fine to increase tile height
                    // as it won't affect the filling of available
                    // horizontal space.
                    padding-top: 10px;
                    padding-bottom: 28px;

                    i.loading {
                        .absolute-center(-16px);
                        margin-left: -10px;
                    }

                    .item-wrap {

                        display: block;
                        width: 100%;
                        height: 100%;
                        overflow: hidden;

                        .item-wrap-outer {
                            // Sets the boundary of the tile
                            display: table;
                            width: 100%;
                            height: 100%;
                        }

                        // Sets the content boundary of the tile
                        .item-wrap-inner {
                            display: table-cell;
                            padding: 0 10px;
                            text-align: center; // Allow horizontal
centering on child elements that are inline
                            vertical-align: middle; // Allow vertical
centering
                        }
                    }

                    .itemIcon {
                        display: inline; // So it can be centered
horizontally
                        z-index: 1; // Ensure this is above loading
indicator
                        // max-height: 100%;
                        max-width: 100%;

                        &.orientation-tall {
                            width: 100%;
                            // height: 100%;
                        }

                        &.orientation-wide {
                            width: 100%;
                        }

                        &.orientation-square {
                            width: 100%;
                        }
                    }

                    .itemTitle {
                        display: inline;
                        position: absolute;
                        bottom: 0;
                        left: 0;
                        width: 100%;
                        height: 18px;
                        margin-bottom: 10px;

                        span {
                            display: block;
                            margin: 0 10px;
                            line-height: 24px; // 18px + 6px cosmetic
                            .text-overflow();
                            white-space: nowrap;
                            overflow: hidden;
                        }
                    }

                    &.active {
                        .activeItemColorScheme();
                    }
                }

                &.item-type-file,
                &.item-type-image,
                &.item-type-audio,
                &.item-type-video {
                    .item-type-general();
                }

                &.item-type-image {

                    .itemIcon {
                        // .box-shadow(0px 0px 3px 0 rgba(0, 0, 0, 0.5));
                    }
                }

                &.item-type-folder {
                    .clearfix();
                }
            }
        }

        &.view-list {

            .browserItem {

                line-height: 32px;
                border-top: 1px solid #ddd;

                .item-wrap {
                    position: relative;
                }

                i.loading {
                    position: absolute;
                    top: 8px;
                    left: 6px;
                }

                .folderItemGroup {
                    width: auto;
                }

                .item-type-general() {

                    height: 32px;
                    padding: 4px 8px;

                    &.active {
                        .activeItemColorScheme();
                    }

                    .itemIcon {
                        max-width: 32px;
                        max-height: 32px;
                        display: inline-block;
                        position: absolute;
                        z-index: 1;
                    }

                    .itemTitle {
                        display: block;
                        text-align: left;
                        position: relative;
                        z-index: 2;
                        padding: 0 0 0 37px;
                    }
                }

                &.item-type-file,
                &.item-type-image,
                &.item-type-audio,
                &.item-type-video,
                &.item-type-upload {
                    .item-type-general();
                }
            }
        }
    }
}
media/browser.js000064400000101054151167475100007654 0ustar00// module:
start
EasyBlog.module("media/browser", function($) {

var module = this;

// require: start
EasyBlog.require()
.library(
	"image",
	"easing",
	"scrollTo",
	"throttle-debounce"
)
.script(
	"media/browser.item"
)
// .view(
// 	"media/browser",
// 	"media/browser.itemGroup",
// 	"media/browser.item",
// 	"media/browser.treeItemGroup",
// 	"media/browser.treeItem",
// 	"media/browser.paginationPage"
// )
// .language(
// 	'COM_EASYBLOG_MM_CONFIRM_DELETE_ITEM',
// 	'COM_EASYBLOG_MM_CANCEL_BUTTON',
// 	'COM_EASYBLOG_MM_YES_BUTTON',
// 	'COM_EASYBLOG_MM_ITEM_DELETE_CONFIRMATION'
// )
.done(function(){

var $Media, $Library, $Browser, $Uploader, $Prompt, DS;

// controller: start
EasyBlog.Controller("Media.Browser",

	// Class properties
	{
		defaultOptions: {

			view: {
				browser			: "media/browser",
				itemGroup		: "media/browser.item-group",
				item			: "media/browser.item",
				treeItemGroup	: "media/browser.tree-item-group",
				treeItem		: "media/browser.tree-item",
				paginationPage	: "media/browser.pagination-page"
			},

			path: "",

			items: undefined,

			mode: "browse",

			layout: {
				viewMode: "tile",
				tileSize: 0.125,
				scrollToItemDuration: 500,
				scrollToItemEasing: 'swing',
				iconMaxLoadThread: 8
			},

			search: {
				chunkSize: 128,
				chunkDelay: 500
			},

			"{modalHeader}"			: ".modalHeader",
			"{modalToolbar}"		: ".modalToolbar",
			"{modalContent}"		: ".modalContent",
			"{modalFooter}"			: ".modalFooter",
			"{modalPrompt}"			: ".modalPrompt",

			// Also shared with folder hint's .uploaderButton
			"{modalUploaderButton}"	: ".uploaderButton",

			"{header}"	: ".browserHeader",
			"{content}"	: ".browserContent",
			"{footer}"	: ".browserFooter",

			"{treeToggleButton}": ".browserTreeToggleButton",
			"{tileViewButton}"	: ".browserTileViewButton",
			"{listViewButton}"	: ".browserListViewButton",

			"{itemField}"	: ".browserItemField",
			"{itemGroup}"	: ".browserItemGroup",
			"{item}"		: ".browserItem",

			"{treeItemField}"	: ".browserTreeItemField",
			"{treeItemGroup}"	: ".browserTreeItemGroup",
			"{treeItem}"		: ".browserTreeItem",

			"{headerTitle}"		: ".browserTitle",
			"{headerSearch}"	: ".browserSearch",
			"{headerNavigation}": ".browserNavigation",
			"{headerUpload}"	: ".browserUploadButton",

			"{footerStatus}"	: ".browserStatus",
			"{footerMessage}"	: ".browserMessage",

			"{itemActionSet}": ".browserItemActionSet",

			"{itemFieldHints}": ".browserItemField .hints",

			"{browserPagination}"	: ".browserPagination",
			"{currentPage}"			: ".currentPage",
			"{totalPage}"			: ".totalPage",
			"{prevPageButton}"		: ".prevPageButton",
			"{nextPageButton}"		: ".nextPageButton",
			"{pageSelection}"		: ".pageSelection",
			"{paginationPage}"		: ".paginationPage",

			"{searchInput}"  : ".searchInput"
		}
	},

	// Instance properties
	function(self) {

		return {

		init: function() {

			// Globals
			$Media = self.media;
			$Library = $Media.library;
			$Browser = $Media.browser = self;
			DS = $Media.options.directorySeparator;

			self.iconThread = $.Threads({threadLimit:
self.options.layout.iconMaxLoadThread});
			self.enqueue = $.Enqueue();

			// Render browser UI
			self.element
				.addClass("browser")
				.html(
					self.view.browser()
				);

			// Browser navigation
			self.headerNavigation()
				.implement(
					EasyBlog.Controller.Media.Navigation,
					{
						controller: self.controllerProps()
					},
					function() {
						// Assign controller as a property of myself
						self.navigation = this;
					}
				);

			self.modalPrompt()
				.implement(
					EasyBlog.Controller.Media.Prompt,
					{
						controller: self.controllerProps()
					},
					function() {
						$Prompt = self.promptDialog = this;
					}
				);

			// Implement browser actions
			self.element
				.implement(
					EasyBlog.Controller.Media.Browser.Actions,
					{
						controller: self.controllerProps()
					},
					function() {
						self.actions = this;
					}
				);

			self.search = $.debounce(500, self._search);

			// Set to browse mode
			self.mode("browse");

			// Always revert to browser mode when going back to dashboard
			$Media.element.bind("hideModal", function(){
				self.mode("browse");
			});

			// Set browser layout
			self.viewMode(self.options.layout.viewMode);

			self.setLayout();

			// Bind item group scroll event
			self._bind(
				self.itemField(),
				"scroll",
				$.debounce(250, self["{itemField} scroll"])
			);

			// Create all places
			$.each($Library.places, function(id, place) {

				self.createPlace(place);
			});

			// Determine which place is the initial place,
			// if no intial place was given, automatically select
			// the first place on the list.
			self.activatePlace(self.options.initialPlace || $Library.places[0].id)
				.done(
					self.enqueue(function(place){
						self.activateItem(place.baseFolder());
					})
				);
		},

		controllerProps: function(prop) {

			return $.extend(
			{
				media: $Media

			}, prop || {});
		},

		items: {},

		createPlace: function(place) {

			var place = $Library.getPlace(place);

			place.treeItemGroup =
				self.view.treeItemGroup()
					.appendTo(self.treeItemField());

			place.treeItem =
				self.view.treeItem({title: place.title})
					.addClass("type-place")
					.data("place", place)
					.appendTo(place.treeItemGroup);

			place.itemGroup =
				self.view.itemGroup()
					.appendTo(self.itemField());

			return place;
		},

		activatePlace: function(place) {

			var place = $Library.getPlace(place);

			if (place===undefined) return;

			// Toggle active class on item group
			self.itemGroup().removeClass("active");
			place.itemGroup.addClass("active");

			// Toggle active class on item tree
			self.treeItem().removeClass("active");
			place.treeItem.addClass("active");

			// Create the activator task
			if (!place.activator) {

				place.activator = $.Deferred();
			}

			// If flickr is not authenticated yet
			if (place.id==="flickr" && !place.options.associated)
{

				// Show the flickr login prompt
				$Browser.currentFolderStatus("flickr");

				return place.activator;
			}

			if (!place.populated) {

				// Mark as populated so this doesn't run again
				place.populated = true;

				// Add busy indicator
				self.currentFolderStatus("loading");

				var populator = /jomsocial|flickr/.test(place.id) ? place.populate() :
place.ready;

				populator
					.done(function() {

						// Create base folder
						var baseFolderItem = self.createFolder(place.baseFolder());

						place.activator.resolveWith(place, [place, baseFolderItem]);
					})
					.fail(function() {

						self.currentFolderStatus("error");

						place.activator.rejectWith(place, arguments);
					});
			}

			return place.activator;
		},

		getItem: function(item) {

			// Skip going through all the tests below.
			if (item===undefined) return;

			// Item instance
			if (item instanceof EasyBlog.Controller.Media.Browser.Item) {
				return item;
			}

			// Item key
			if (typeof item === "string") {
				return self.items[item];
			}

			// Meta
			if ($Library.isMeta(item)) {
				return self.items[$Library.getKey(item)];
			}
		},

		createItem: function(meta, options) {

			var meta = $Library.getMeta(meta);

			if (!meta) return;

			// Create item, store to item map, return item.
			return self.items[meta.key] =

				new EasyBlog.Controller.Media.Browser.Item(

					self.view.item({meta: meta}),
					{
						controller: {
							key: meta.key,
							media: $Media
						}
					}
				);
		},

		createFolder: function(meta, options) {

			var meta = $Library.getMeta(meta);

			return self.getItem(meta) || (function(){

				// Create & insert item
				var item = self.createItem(meta);

				var place = item.place(),

					parentFolder = item.parentFolder();

					((parentFolder) ?
						item.element
							.insertAfter(parentFolder.element)
						:
						item.element
							.appendTo(place.itemGroup));

				// Create & insert tree item
				item.treeItem =
					((parentFolder) ?
						self.view.treeItem({title: meta.title})
							.addClass("type-folder")
							.css("marginLeft", 18 * (meta.path.split(DS).length - 1))
							.insertAfter(parentFolder.treeItem)
						:
						place.treeItem

					// Store a reference to the item
					).data("item", item);

				// Listen to the subfolder for changes
				meta.data.views
					.create({group: "folders"})
					.updated(function(folders){
						$.each(folders, function(i, key) {
							self.createFolder(key);
						});
					});

				return item;

			})();
		},

		createFile: function(meta, options) {

			var meta = $Library.getMeta(meta);

			return self.getItem(meta) || self.createItem(meta);
		},

		removeItem: function(item) {

			clearTimeout(self.removeItem.revert);

			var item = self.getItem(item),

				parentFolder = item.parentFolder();

				// Remove item element & handler
				item.remove();

				// Remove treeItem if it exists
				if (item.treeItem) {
					item.treeItem.remove();
				}

				// Delete from entry
				delete self.items[item.key];

			// Don't revert if searching
			if (self.itemField().hasClass("searching")) return;

			self.removeItem.revert = setTimeout(function(){

				if (parentFolder) {
					self.activateItem(parentFolder);
				}

			}, 500);
		},

		focusItem: function(item, alsoActivate) {

			var item = self.getItem(item);

			// If item does not exist, skip.
			if (!item) return;

			if (!alsoActivate) {

				// Set item as current item
				self.currentItem(item);

				// Remove the active class because
				// we just want to focus it, not activate it.
				item.element.removeClass("active");

			} else {

				self.activateItem(item);
			}

			self.scrollTo(item);

			self.trigger("itemFocus", [item]);
		},

		locateItem: function(meta) {

			if (self.itemField().hasClass("searching")) {
				self.clearSearch(true);
			}

			var meta = $Library.getMeta(meta);

			if (!meta) return;

			self.activatePlace(meta.place)
				.done(
					self.enqueue(function() {

						var isFolder = meta.type==="folder",

							item = self.activateItem((isFolder) ? meta : meta.parentKey);

							if (item===undefined) return;

							if (!isFolder) {
								item.handler.locateItem(meta);
							}

							// Quick monkey patch
							var folderView = item.handler.folderView;

							if (folderView) {
								folderView.refresh();
							}
					})
				);
		},

		activateItem: function(item) {

			var item = self.getItem(item);

			// If item does not exist, skip.
			if (!item) return;

			// Set item as current item
			self.currentItem(item);

			// Activating an item will trigger its handler, e.g.
			// for folders it will generate items inside it.
			item.activate();

			self.trigger("itemActivate", [item]);

			return item;
		},

		scrollTo: function(item) {

			var item = self.getItem(item);

			if (!item) return;

			self.itemField()
				.scrollTo(item.element, {
					duration: self.options.layout.scrollToItemDuration,
					easing: self.options.layout.scrollToItemEasing,

					// This means that the item will be scrolled to 10% from the top of
the field
					offset: {top: self.itemField().height() * -0.10}
				});
		},

		currentItem: function(item) {

			// Get current item.
			var currentItem = self.currentItem.item;

			// If current item has been destroyed,
			if (currentItem && currentItem._destroyed) {

				// set current item as undefined.
				currentItem = self.currentItem.item = undefined;
			}

			// If this is a setter operation, get the item.
			var item = self.getItem(item);

			// If the new current item does not exist,
			// just return current item.
			if (!item) return currentItem;

			// If the new current item has already been destroyed,
			// just return current item.
			if (item._destroyed) return currentItem;

			// If previous current item exists,
			if (currentItem) {

				/// remove its active & focus class.
				currentItem.element.removeClass("active focus");

				// Also, if this item is a file,
				// remove active & focus class from its parent folder.
				if (currentItem.meta().type!=="folder") {

					currentItem.parentFolder().element.removeClass("active
focus");
				}

				// Also remove active class from place's itemgroup
				currentItem.place().itemGroup.removeClass("active");
			}

			// Add active & focus class to new current item
			item.element.addClass("active focus");

			// Lets see if this item is a folder.
			var isFolder = item.meta().type=="folder";

			// If new current item is file,
			if (!isFolder) {

				// then add a focus class to its parent folder.
				item.parentFolder().element.addClass("focus");
			}

			// Add active class to item group
			item.place().itemGroup.addClass("active");

			// If this a folder, set current folder to the item itself.
			// If this is a file, set current folder to the item's parent
folder.
			self.currentFolder(
				(isFolder) ? item : item.parentFolder()
			);

			// Set the navigation to the new current item.
			self.navigation.setPathway(item.key);

			// Set and return new current item.
			return self.currentItem.item = item;
		},

		currentFolder: function(folder) {

			// Get current folder
			var currentFolder = self.currentFolder.folder;

			// If current folder has been destroyed,
			if (currentFolder && currentFolder._destroyed) {

				// set current folder as undefined.
				currentFolder = self.currentFolder.folder = undefined;
			}

			// If this is a setter operation, get the item.
			var folder = self.getItem(folder);

			// If the folder does not exist, return current folder.
			// Also, as getter operation.
			if (!folder) return currentFolder;

			// Add active class to new current folder
			self.treeItem().removeClass("active");
			folder.treeItem.addClass("active");

			// Also expand the place tree
			if (folder.meta().path!==DS) {
				folder.place().treeItemGroup.addClass("expanded");
			}

			// Also refresh view
			if (folder.handler.folderView) {

				if (folder.handler.refreshSeed!==self.folderRefreshSeed) {
					folder.handler.folderView.refresh();
					folder.handler.refreshSeed = self.folderRefreshSeed;
				}
			}

			// Set and return new current folder.
			return self.currentFolder.folder = folder;
		},

		currentFolderStatus: function(status) {

			// Quick monkey patch to prevent double activation (also fixes
jomsocial)
			if (self.itemField().hasClass("searching") &&
!/emptySearch|ready/.test(status)) return;

			var lastStatus = self.currentFolderStatus.lastStatus;

			// Getter
			if (status === undefined) return lastStatus;

			// Setter
			if (typeof status !== "string") return;

			// Remove last status
			if (lastStatus) {
				self.itemField()
					.removeClass(lastStatus);
			}

			// Add new status
			self.itemField().addClass(status);

			return self.currentFolderStatus.lastStatus = status;
		},

		setLayout: function() {

			// Skip if no layout has been set OR current modal is not us.
			if (!$Media.layout || $Media.currentModal!=="browser") return;

			var contentHeight;

			self.modalContent()
				.hide()
				.height(
					contentHeight =
						self.element.height() -
						self.modalHeader().outerHeight() -
						self.modalToolbar().outerHeight() -
						self.modalFooter().outerHeight()
				)
				.show();

			if ($.browser.msie) {

				self.treeItemField()
					.height(contentHeight);

				self.itemField()
					.height(contentHeight);

				self.itemFieldHints()
					.height(contentHeight);
			}

			self.setItemLayout();

			self.trigger("setLayout");
		},

		setItemStyle: function(force) {

			// If this is not forced, skip setting item style
			// if layout seed hasn't changed yet.
			if (!force) {

				// Get current layout seed
				var seed = $Media.layout;

				// If layout seed matches, no setting of item style is necessary.
				if (self.setItemStyle.seed===seed) return;

				// Set current layout seed
				self.setItemStyle.seed = seed;
			}

			// Set up variables
			var viewMode = self.viewMode(),
				cssRules = {};

			if (viewMode=="tile") {

				var browserItem = "#EasyBlogMediaManager .browser
.browserItemField.view-tile .browserItem",
					availableWidth = (function() {
						var testElement =
$(document.createElement("DIV")).prependTo(self.itemField()),
							availableWidth = testElement.width();
						testElement.remove();
						return availableWidth;
					})(),
					itemWidth = Math.floor(availableWidth * self.options.layout.tileSize),
					itemHeight = itemWidth - 24;

				cssRules[browserItem] = {
					width: itemWidth + "px",
					height: itemHeight + "px"
				}
			}

			// Get the document head
			var head = document.getElementsByTagName("head")[0];

			// Remove previous stylesheet
			if (self.itemStyle) {
				try {
					head.removeChild(self.itemStyle);
				} catch(e) {};
			}

			// Create new stylesheet
			self.itemStyle = document.createElement("style");
			self.itemStyle.type = "text/css";

			// Generate css text
			var cssText = "";
			$.each(cssRules, function(selector, props) {
				cssText += selector + "{" + $.map(props, function(val, key){
return key + ":" + val; }).join(";") + "}\n";
			});

			// Append css text to stylesheet
			if (self.itemStyle.styleSheet) {
				self.itemStyle.styleSheet.cssText = cssText;
			} else {
				self.itemStyle.appendChild(document.createTextNode(cssText));
			}

			// Append stylesheet to head
			head.appendChild(self.itemStyle);
		},

		setItemLayout: function() {

			// Skip if no layout has been set OR current modal is not us.
			if (!$Media.layout || $Media.currentModal!=="browser") return;

			self.setItemStyle();

			setTimeout(function() {

				var items = [];

				if (self.itemField().hasClass("searching")) {

					// Monkey patch
					if (self.searchItemGroup) {
						items = self.searchItemGroup.find(".browserItem");
					}

				} else {

					// If there's no current folder selected, don't do anything.
					var currentFolder = self.currentFolder();
					if (currentFolder===undefined) return;

					items = currentFolder.childItem();
				}

				if (items.length < 1) return;

				// Drill down
				var itemFieldOffset = self.itemField().offset(),
					item,
					itemOffset,
					j = items.length,
					i = 1;

				if (items.length < 1) return;

				while (Math.abs(j - i) > 1) {
					item = items.eq(i-1);
					itemOffset = item.offset();

					var itemBottom = itemOffset.top - itemFieldOffset.top +
item.outerHeight();
					if (itemBottom < 0) {
						i = Math.ceil((j + i) / 2);
					} else {
						j = i;
						i = Math.ceil(j / 2);
					}
				}

				// From the first found visible item,
				// work backwards & forwards until all
				// visible items on the viewport are covered
				if (i===1) i = 0;

				var b = i,
					f = i,
					min = 0,
					max = items.length - 1;
					setLayout = function(i) {
						if (i < min || i > max) return false;
						var item = items.eq(i).data("item");
						if (!item.isVisible()) return false;
						item.setLayout();
					};

					while (true) {
						if (setLayout(b)===false) break;
						b--;
					}

					while (true) {
						if (setLayout(f)===false) break;
						f++;
					}

			}, 0);
		},

		viewMode: function(mode) {

			// Get current view mode
			var currentMode = self.viewMode.mode;

			// If a mode hasn't been set yet, take from options.
			if (!currentMode) {
				currentMode = self.viewMode.mode = self.options.layout.viewMode;
			}

			// Setter operation
			if (mode!==undefined) {

				// Force a seed refresh
				self.setItemStyle.seed = null;

				// Replace view mode
				self.itemField()
					.removeClass("view-" + currentMode)
					.addClass("view-" + mode);

				// Update current view mode
				self.viewMode.mode = currentMode = mode;

				// Set browser layout
				self.setLayout();

				// Scroll to current item (as its position have changed in different
view modes)
				var currentItem = self.currentItem();

				if (currentItem!==undefined) {

					self.scrollTo(currentItem);
				}
			}

			// Getter operation
			return currentMode;
		},

		mode: function(mode) {

			// Getter
			if (mode===undefined) return self.mode.currentMode ||
"browse";

			switch (mode) {
				case "browse":

					self.element
						.removeClass("mode-blogimage")
						.addClass("mode-browse");

					// Quick monkey patch to hide jomsocial & flickr items
					// under blog imagemode.
					$.each($Library.places, function(i, place){
						if (/jomsocial|flickr/.test(place.id)) {
							place.treeItemGroup && place.treeItemGroup.show();
							place.itemGroup && place.itemGroup.show();
						}
					});

					break;

				case "blogimage":

					self.element
						.addClass("mode-blogimage")
						.removeClass("mode-browse");

					// Quick monkey patch to hide jomsocial & flickr items
					// under blog imagemode.
					var currentItem = self.currentItem(),
						switchToNearestLocalPlace = false;

					if (currentItem) {
						if (/jomsocial|flickr/.test(currentItem.place().id)) {
							switchToNearestLocalPlace = true;
						}
					}

					$.each($Library.places, function(i, place){

						if (/jomsocial|flickr/.test(place.id)) {
							place.treeItemGroup && place.treeItemGroup.hide();
							place.itemGroup && place.itemGroup.hide();
						} else {
							if (switchToNearestLocalPlace) {
								switchToNearestLocalPlace = false;
								if (place.treeItem) {
									place.treeItem.click();
								}
							}
						}
					});
					break;
			}

			self.mode.currentMode = mode;
		},

		"{self} itemActivate": function(el, event, item) {

			self.itemActionSet().removeClass("active");

			if (item.meta().type=="folder") {

				self.itemActionSet(".type-folder").addClass("active");

			} else {

				self.itemActionSet(".type-item").addClass("active");
			}
		},

		"{headerNavigation} activate": function(el, event, key) {

			self.activateItem(key);
		},

		"{tileViewButton} click": function(el, event) {

			el.addClass("active")
				.siblings()
				.removeClass("active");

			self.viewMode("tile");
		},

		"{listViewButton} click": function(el, event) {

			el.addClass("active")
				.siblings()
				.removeClass("active");

			self.viewMode("list");
		},

		"{treeItem} click": function(el, event) {

			self.clearSearch(true);

			var item = el.data("item");

			if (el.hasClass("type-place")) {

				var place = el.data("place");

				// If the toggle icon was clicked
				if ($(event.target).hasClass("treeItemToggle")) {

					// Expand the tree group
					place.treeItemGroup.toggleClass("expanded");
				}

				self.activatePlace(place)
					.done(
						self.enqueue(function(place, baseFolder) {

							if (place.id==="jomsocial") {
								place.treeItemGroup.addClass("expanded");
							}

							self.activateItem(baseFolder);
						})
					);

				return;
			}

			self.activateItem(item);
		},

		"{itemField} scroll": function(el, event) {

			self.setItemLayout();
		},

		"{item} click": function(el, event) {

			// Prevents click event from being bubbled back to parent folder item
			event.stopPropagation();

			var item = el.data("item");

			if (item===undefined) return;

			var place = item.place();

			self.activatePlace(place)
				.done(
					self.enqueue(function(place, baseFolder) {

						// Monkey patch to work with search
						// self.activateItem(baseFolder);
						self.activateItem(item);
					})
				);
		},

		"{item} dblclick": function(el, event) {

			// Prevents click event from being bubbled back to parent folder item
			event.stopPropagation();

			var item = el.data("item");

			// #debug:start
			if (event.shiftKey) {
				$Media.console("log", [item]);
				return;
			}
			// #debug:end

			if (item===undefined) return;

			if (item.meta().type=="folder") return;

			if(self.mode.currentMode==='blogimage') {

				if (item.meta().type=="image") {

					// We are getting the raw meta
					var meta = $Library.meta[item.key];

					EasyBlog.dashboard.blogImage.setImage(meta);

					$Media.hide();
				}

			} else {

				$Media.edit(item.key);
			}
		},

		"{modalUploaderButton} click": function() {

			var item = self.currentFolder();

			$Media.upload((item.place().acl.canUploadItem) ? item.key :
"");
		},

		"{self} modalActivate": function(el, event, meta, mode) {

			if (mode!==undefined) {

				self.mode(mode);
			}

			var meta = $Library.getMeta(meta) || self.currentItem().meta();

			if (meta) {

				self.locateItem(meta);
			}
		},

		"{prevPageButton} click": function() {
			var folder = $Browser.currentFolder();
			folder.handler.changePage('prev');
		},

		"{nextPageButton} click": function() {
			var folder = $Browser.currentFolder();
			folder.handler.changePage('next');
		},

		// "{pageSelection} change": function(el) {
		// 	var folder = $Browser.currentFolder(),
		// 		page = el.val();

		// 	folder.handler.currentPage(page);
		// },

		"{pageSelection} click": function(el) {
			if(self.paginationPage().length > 1) {
				el.toggleClass('expanded');
			}
		},

		"{paginationPage} click": function(el) {
			if(self.pageSelection().hasClass('expanded') &&
!el.hasClass('selected')) {
				var page = el.data('page'),
					folder = $Browser.currentFolder();

				folder.handler.isChangingPage = true;

				folder.handler.currentPage(page);
			}
		},

		"{window} click": function(el, event) {

			var className = $(event.target).attr('class');

			if(!/pageSelection|paginationPage/.test(className)) {
				if(self.pageSelection().hasClass('expanded')) {
					self.pageSelection().removeClass('expanded');
				}
			}
		},

		_search: function(keyword) {

			if (!self.itemBeforeSearch) {
				self.itemBeforeSearch = self.currentItem().meta();
			}

			self.element.addClass("searching");

			self.itemField()
				.addClass("searching");

			if (!self.searchItemGroup) {
				self.searchItemGroup =
					self.view.itemGroup()
						.appendTo(self.itemField());
			}

			self.searchItemGroup
				.addClass("active search-mode");

			var timer;

			self.searchView =
				$Library.search(keyword)
					.create({from: 0, to: 300})
					.updated(function(files){

						var l = files.length;

						if (l < 1) {
							timer = setTimeout(function(){
								$Browser.currentFolderStatus("emptySearch");
							}, 500);
							return;
						}

						clearTimeout(timer);
						$Browser.currentFolderStatus("ready");

						for (i=0; i<l; i++) {

							var key = files[i];

							// This either return the newly created file,
							// or the file that has been previously created.
							var file = $Browser.createFile(key);

							file.element
								.appendTo(self.searchItemGroup);
						}

						self.setItemLayout();
					});
		},

		clearSearch: function(cancel) {

			self.folderRefreshSeed = $.uid();

			if (cancel) {
				self.searchInput().val("").blur();
			}

			self.element.removeClass("searching");

			self.itemField()
				.removeClass("searching");

			if (self.searchItems) {
				$.each(self.searchItems, function(i, item){
					$(item).detach();
				});
			}

			if (self.searchItemGroup) {

				self.searchItemGroup
					.find(".browserItem")
					.detach();

				self.searchItemGroup.removeClass("active");
			}

			if (self.searchView) {
				self.searchView.destroy();
			}

			delete self.searchView;

			if (self.itemBeforeSearch) {
				self.locateItem(self.itemBeforeSearch);
			}
		},

		"{searchInput} focusin": function(el) {
			el.parent().addClass("active");

			if ($.trim(el.val())!=="") {
				el.parent().addClass("showCancelButton");
			}
		},

		"{searchInput} focusout": function(el) {

			setTimeout(function(){
				if ($.trim(el.val())==="") {
					el.parent().removeClass("active showCancelButton");
 				}
			}, 50);
		},

		"{searchInput} keyup": function(el) {

			var keyword = $.trim(el.val());

			if (keyword==="") {
				el.parent().removeClass("showCancelButton");
				self.clearSearch();
				delete self.itemBeforeSearch;
				return;
			}

			el.parent().addClass("showCancelButton");

			self.search(keyword);
		}
	}}

);
// controller: end

EasyBlog.Controller("Media.Browser.Actions",
	{
		defaultOptions: {

			// Item actions
			"{customizeItemButton}": ".customizeItemButton",
			"{insertAsGalleryButton}": ".insertAsGalleryButton",
			"{insertItemButton}": ".insertItemButton",
			"{insertBlogImageButton}": ".insertBlogImageButton",

			// Create folder prompt
			"{createFolderButton}"        :
".createFolderButton",
			"{confirmCreateFolderButton}" : ".createFolderPrompt
.confirmCreateFolderButton",
			"{folderPath}"                : ".createFolderPrompt
.folderPath",
			"{folderCreationPath}"        : ".createFolderPrompt
.folderCreationPath",
			"{folderInput}"               : ".createFolderPrompt
.folderInput",
			"{folderCreationFailedReason}": ".createFolderPrompt
.folderCreationFailedReason",

			// Remove item prompt
			"{removeItemButton}"       : ".removeItemButton",
			"{removeItemFilename}"     : ".removeItemPrompt
.removeItemFilename",
			"{confirmRemoveItemButton}":
".confirmRemoveItemButton",
			"{removeItemFailedReason}" : ".removeItemPrompt
.removeItemFailedReason",

			// Flickr login
			"{flickrLoginButton}": ".flickrLoginButton",

			// Search
			"{cancelSearchButton}": ".cancelSearchButton",

			// Error prompt
			"{retryPopulateButton}": ".retryPopulateButton"
		}
	},
	function(self) { return {

		init: function() {

		},

		"{self} itemActivate": function(el, event, item) {

			self.item = item;

			var acl = item.place().acl;

			// If the current file can't be removed, hide remove item button.
			self.removeItemButton()
				.toggle(acl.canRemoveItem);

			self.createFolderButton()
				.toggle(acl.canCreateFolder);

			// Show insert blog image button if we are selecting blog image
			self.insertBlogImageButton().toggle($Browser.mode()==="blogimage"
&& item.meta().type==="image");
		},

		// Item actions
		"{customizeItemButton} click": function() {

			$Media.edit(self.item.key);
		},

		"{insertAsGalleryButton} click": function() {

			$Media.insert(self.item.key);
		},

		"{insertItemButton} click": function() {

			$Media.insert(self.item.key);
		},

		"{insertBlogImageButton} click": function() {

			// We are getting the raw meta
			var meta = $Library.meta[self.item.key];

			EasyBlog.dashboard.blogImage.setImage(meta);

			$Media.hide();
		},

		// Create folder prompt
		"{createFolderButton} click": function() {

			$Prompt.get("createFolderPrompt")
				.show()
				.state("default");

			var currentFolder = $Browser.currentFolder();

			// Set folder path
			self.folderPath()
				.html(currentFolder.meta().friendlyPath);

			self.folderInput()
				.focus()[0]
				.select();
		},

		"{folderInput} keyup": function(el, event) {

			if (event.keyCode==13) {
				self.confirmCreateFolderButton().click();
			}
		},

		"{confirmCreateFolderButton} click": function() {

			var folderName = $.trim(self.folderInput().val());

			// Don't do anything if folder name not given
			if (folderName==="") return;

			// Get friendly path of the new folder
			var parentMeta = $Browser.currentFolder().meta(),
				path = parentMeta.friendlyPath + DS + folderName;

				// and set it to the folder creation path
				self.folderCreationPath()
					.html(path);

			// Show progress state
			var createFolderPrompt = $Prompt.get("createFolderPrompt");
				createFolderPrompt.state("progress");

			// Create folder on server
			$Library.createFolder(parentMeta, folderName)
				.done(function(meta){

					var item = $Browser.createFolder(meta);

					createFolderPrompt.hide();

					$Browser.activateItem(item);
				})
				.fail(function(message){

					self.folderCreationFailedReason()
						.html(message);

					createFolderPrompt.state("fail");
				});
		},

		// Remove item prompt
		"{removeItemButton} click": function() {

			self.removeItemFilename()
				.html(self.item.meta().title);

			// Show prompt
			$Prompt.get("removeItemPrompt")
				.show()
				.state("default");
		},

		"{confirmRemoveItemButton} click": function(el) {

			var removeItemPrompt = $Prompt.get("removeItemPrompt");

			removeItemPrompt.state("progress");

			$Library.removeRemoteMeta(self.item.key)
				.done(function(){

					removeItemPrompt.hide();
				})
				.fail(function(message){

					self.removeItemFailedReason()
						.html(message);

					removeItemPrompt.state("fail");
				});
		},

		"{flickrLoginButton} click": function(el) {

			var login = el.data("login"),

				callback = el.data("callback"),

				activateFlickrPlace = $Browser.enqueue(function(){

					$Browser.activatePlace("flickr")
						.done(
							$Browser.enqueue(function(place, baseFolder){

								$Browser.activateItem(baseFolder);
							})
						);

				});

				window[callback] = function() {

					var place = $Library.getPlace("flickr");

					// Flickr is now associated
					place.options.associated = true;

					// Reactivate flickr place
					activateFlickrPlace();
				}

			window.open(login, "Flickr Login", 'scrollbars=no,
resizable=no, width=650, height=700');
		},

		"{cancelSearchButton} click": function() {
			$Browser.clearSearch(true);
		},

		"{retryPopulateButton} click": function() {

			var place = self.item.place();
			delete place.activator;
			place.populated = false;
			place.treeItem.click();
		}
	}}
);

// controller: end

module.resolve();

});
// require: end

});
// module: end
media/browser.less000064400000020503151167475110010206
0ustar00(~"@{MediaManager}") {

    .browser {

        background: #fff;

        .modalTitle {
            .modalTitleSnippet { display: none; }
        }

        &.mode-browse {
            .title-browse { display: inline; }
            .title-blogimage { display: none; }
        }

        &.mode-blogimage {

            .title-browse { display: none; }
            .title-blogimage { display: inline; }

            .insertItemButton,
            .customizeItemButton,
            .insertAsGalleryButton {
                display: none !important;
            }
        }

        &.searching {
            .browserPagination {
                display: none !important;
            }
        }

        .browserHeader {
            .browserItemActionSet {
                display: none;

                &.active {
                    display: block;
                }

                .green-button {
                    margin-right: 0 !important;
                }
            }

            .insertItemButton {
                > i {
                    .icon-media(7, 4);
                }
            }

            .insertBlogImageButton {
                > i {
                    .icon-media(7, 4);
                }
                display: none;
            }

            .customizeItemButton {
                > i {
                    .icon-media(8, 4);
                }
            }

            .insertAsGalleryButton {
                > i {
                    .icon-media(9, 4);
                    width: 20px !important;
                }
            }

            .removeItemButton {
                padding-left: 27px !important;
                > i {
                    .icon-media(8, 1);
                }
            }
        }

        .browserContent {

            position: relative;
            z-index: 2;
        }

        .browserFooter {

            position: relative;
            .clearfix();

            .footerButtons() {

                padding-left: 6px + 16px + 4px !important;

                > i {
                    display: inline-block;
                    position: absolute;
                    top: 4px;
                    left: 6px;
                    width: 16px;
                    height: 16px;
                }
            }

            .browserTreeItemFooter {
                width: 180px;
                height: 36px;
                border-right: 1px solid #CCCCCC;
                float: left;
                position: relative;

                .createFolderButton {
                    .footerButtons();
                    > i {
                        .icon-media(10, 4);
                    }
                }
            }

            .browserItemFooter {
                height: 36px;
                margin-left: 181px;
                border-left: 1px solid #FFFFFF;
                position: relative;
            }

            .browserPagination {

                i {
                    display: block;
                    width: 16px;
                    height: 16px;
                    position: absolute;
                    top: 5px;
                    left: 6px;
                }

                .prevPageButton {
                    .border-radius(0px, 0px, 3px, 3px);
                    float: right;
                    padding-left: 20px;

                    > i {
                        .icon-media(3, 1);
                    }
                }

                .nextPageButton {
                    .border-radius(3px, 3px, 0px, 0px);
                    float: right;
                    padding-left: 20px;

                    > i {
                        .icon-media(2, 1);
                    }
                }

                .pageNumber {
                    float: right;
                    height: 27px;
                    width: 72px + 1;
                    margin-left: -1px;
                    position: relative;
                    .box-shadow(0 1px 0 rgba(255,255,255,0.7));
                }

                .pageSelection {
                    margin: 0;
                    padding: 0;
                    border-bottom-color: #999999;
                    border-left: none;
                    border-right: none;
                    position: absolute;
                    bottom: 0;
                    width: 72px;
                    height: 25px;
                    list-style: none;
                    background: white;
                    border: 1px solid #aaa;
                    cursor: pointer;
                    overflow: none;

                    .paginationPage {
                        display: none;

                        &.selected {
                            display: block;
                        }
                    }

                    &.expanded {
                        max-height: 200px;
                        min-height: 75px;
                        height: auto;
                        overflow-y: scroll;

                        .paginationPage {

                            display: block;

                            &.selected {
                                .activeItemColorScheme();
                            }
                        }
                    }
                }

                .paginationPage {
                    height: 25px;
                    line-height: 25px;
                    text-align: center;
                    cursor: pointer;

                    &:hover {
                        .hoverItemColorScheme();
                    }
                }

                .pageBreakdown {
                    display: none;
                }
            }
        }

        .browserViewButtons {

            position: absolute;
            top: 4px;
            right: 4px;

            button.button {

                float: left;
                padding: 0 14px !important; // (16px + 6px + 6px) / 2
                position: relative;

                > i {
                    display: block;
                    width: 16px;
                    height: 16px;
                    position: absolute;
                    top: 4px;
                    left: 6px;
                }

                &.active {
                    background: #777 !important;
                    filter: none !important; // Fixes IE not having dark
background
                }

                &.browserListViewButton {

                    .border-radius(0px, 0px, 3px, 3px);
                    border-right: none;

                    > i {
                        .icon-media(9, 2);
                    }
                }

                &.browserListViewButton.active {

                    > i {
                        .icon-media(9, 1);
                    }

                    + .browserTileViewButton {

                        border-left: none;
                    }
                }

                &.browserTileViewButton {

                    .border-radius(3px, 3px, 0px, 0px);

                    > i {
                        .icon-media(10, 2);
                    }
                }

                &.browserTileViewButton.active {

                    > i {
                        .icon-media(10, 1);
                    }
                }
            }
        }

        .modalPrompt {

            .modalPromptDialog {

                .emphasis() {
                    font-weight: bold;
                    color: black;
                    word-wrap: break-word;
                }

                &.createFolderPrompt {

                    height: 200px;
                    margin-top: -100px - 48px;

                    .folderPath {
                        .emphasis();
                    }

                    .folderInput {
                        width: 220px;
                    }

                    .folderCreationPath {
                        .emphasis();
                    }
                }

                &.removeItemPrompt {

                    height: 220px;
                    margin-top: -110px - 48px;

                    .removeItemFilename {
                        .emphasis();
                    }
                }

                &.flickrLoginPrompt {

                    .flickrLogin {
                        margin: 15px;
                        border: none;
                        overflow: hidden;
                        width: 400px;
                    }
                }
            }
        }
    }

}
media/browser.search.less000064400000002337151167475110011457
0ustar00(~"@{MediaManager}") {

    .browserSearch {

        float: right;
        position: relative;
        margin: 8px;

        background: darken(#343A44, 5%);
        height: 28px;
        width: 150px;
        .rounded(3px);
        border: 1px solid darken(#343A44, 10%);
        .box-shadow(~"inset 0px 2px 2px 0px rgba(0, 0, 0, 0.2), 0 1px
0 rgba(255, 255, 255, 0.2)");

        i {
            display: inline-block;
            width: 16px;
            height: 16px;
            position: absolute;
            top: 6px;
            left: 4px;
            .icon-media(3, 2);
            cursor: pointer;
        }

        &.active {
            i { .icon-media(4, 2); }
        }

        &.showCancelButton:hover {
            i {
                .icon-media(5, 2);
            }
        }

        padding-left: 22px;

        .searchInput {
            background: transparent;
            border: none !important;
            width: 95%;
            line-height: 30px;
            height: 30px;
            font-size: 12px;
            color: #fff;
            box-shadow: none !important;
            padding: 0;
            margin: 0;
        }

        .searchInput:focus {
            box-shadow: none !important;
        }
    }
}
media/browser.treeItem.less000064400000003643151167475110011771
0ustar00(~"@{MediaManager}") {

    .browserTreeItemField {
        position: relative;
        overflow: auto;
        float: left;
        background: #f5f5f5;
        width: 180px;
        height: 100%;
        border-right: 1px solid #ccc;
    }

    .browserTreeItemGroup {

        .clearfix();

        border-bottom: 1px solid #F5F5F5;

        &.expanded {

            .browserTreeItem {

                &.type-folder {
                    display: block;
                }

                &.type-place {

                    i {
                        .icon-media(14, 4);
                    }

                    &.active i {

                        .icon-media(14, 3);
                    }
                }
            }
        }
    }

    .browserTreeItem {

        position: relative;
        cursor: pointer;
        padding: 3px 3px 3px 22px;
        text-align: left;
        height: 16px;
        line-height: 16px;
        white-space: nowrap;

        i {
            width: 16px;
            height: 16px;
            position: absolute;
            top: 3px;
            left: 3px;
        }

        .treeItemTitle {
            .unselectable();
        }

        &.active {
            .activeItemColorScheme();
        }

        &.loading i {
            background: url(loader.gif) no-repeat center center !important;
        }

        &.type-folder {
            display: none;
            padding-left: 4px + 16px + 4px;
            margin-left: 18px;
            margin-right: 4px;
            overflow: hidden;
            padding-right: 4px;
            .text-overflow();
            .rounded(3px);
            min-width: 32px;

            i {
                .icon-media(10, 3);
                left: 4px;
            }
        }

        &.type-place {

            i {
                .icon-media(14, 2);
            }

            &.active i {

                .icon-media(14, 1);
            }
        }
    }
}
media/common.less000064400000013337151167475110010022
0ustar00.icon-media(@x,@y) {
    background: url(icon.media.png) no-repeat;
   .spriteGrid-32(@x, @y);
}

.normalGreenButton() {

    color: white !important;
    border: 1px solid #3a950b !important;
    .text-shadow(1px, 1px, 0, #2f7e07);
    .box-shadow(0 1px 0 rgba(255,255,255,0.7));
    .vertical-gradient(#7ad242, #4abb10);

    &:hover {
        .vertical-gradient(lighten(#7ad242, 3%), lighten(#4abb10, 3%));
    }
}

.activeItemColorScheme() {

    .vertical-gradient(#4d71b5, #2f59a8);
    color: white;
}

.hoverItemColorScheme() {
    background: lighten(#2f59a8, 45%);
}

.normalHeaderColorScheme() {
    .vertical-gradient(#f5f5f5, #dfdfdf);
}

.hoverHeaderColorScheme() {
    .vertical-gradient(lighten(#f5f5f5, 3%), lighten(#dfdfdf, 3%));
}

.activeHeaderColorScheme() {

    .vertical-gradient(#dddddd, #c9c9c9);

    border-color: #b8b8b8;

    button.button {
        .vertical-gradient(#fff, #dadada);
        &:hover {
            .vertical-gradient(lighten(#fff, 3%), lighten(#dadada, 3%));
        }
    }
}

.insetButton() {
    border: 1px solid #aaa;
    border-bottom-color: #999;

    &.active {
        border: 1px solid darken(#aaa, 30%);
        border-bottom-color: darken(#999, 10%);
    }

    &.green-button {

        @lightGreen: #87AB60;
        @darkGreen: #74954F;

        border: 1px solid @lightGreen;
        border-bottom-color: @darkGreen;

        &.active {
            border: 1px solid darken(@lightGreen, 30%);
            border-bottom-color: darken(@darkGreen, 10%);
        }
    }
}

(~"@{MediaManager}") {


   .button-tooltip {
        background: none repeat scroll 0 0 #FFFFFF;
        border: 1px solid #BBBBBB;
        border-radius: 2px 2px 2px 2px;
        padding: 10px;
        .text-shadow(0, 0, 0, transparent);
        color: #444 !important;
        position: absolute;
        text-align: left;
        width: 250px;
        z-index: 2;

        > i {
            background:
url("../../../../components/com_easyblog/themes/dashboard/system/images/a-point-top.png")
no-repeat top left transparent;
            display: block;
            width: 15px;
            height: 8px;

            position: absolute;
            top: -8px;
            right: 12px;
            z-index: 3;
        }
    }

    .hints {

        position: absolute;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
        background: #f6f6f6;
        text-align: center;
        z-index: 1;

        .hint {
            margin-top: -11px;
            position: absolute;
            top: 50%;
            width: 100%;
        }

        .hint-label {
            font-size: 22px;
            line-height: 22px;
            padding: 12px;
            display: block;
            color: #bbb;
            .text-shadow(1px, 1px, 0px, #fff);
        }

        .hint-content {
            display: block;
            font-size: 12px;
            height: 22px;
            line-height: 22px;
            color: #999;
            .text-shadow(1px, 1px, 0, #fff);
        }
    }

    button.button {
        display: inline-block;
        background: #fafafa;
        margin: 0;
        padding: 0 8px !important;
        height: 28px;
        font-weight: bold;
        font-family: 'Lucida Grande',Tahoma,sans-serif;
        font-size: 11px;
        line-height: 11px;
        color: #555 !important;
        text-decoration: none !important;
        width: auto;
        overflow: visible;
        vertical-align: top;
        cursor: pointer;
        position: relative;
        z-index: 1;
        text-transform: none !important;

        .insetButton();
        .box-shadow(0 1px 0 rgba(255,255,255,0.7));
        .rounded(3px);
        .vertical-gradient(#fff, #eee);
        .text-shadow(1px, 1px, 0px, #fff);

        &&::-moz-focus-inner {
            border: 0;
            padding: 0;
            margin: 0;
        }

        &.hover,
        &:hover {
            .vertical-gradient(lighten(#fff, 5%), lighten(#eee, 5%));
        }

        &.active {
            background: #999;
            .box-shadow(~"0 1px 0 rgba(255,255,255,0.7), 0 2px 5px
rgba(0, 0, 0, 0.4) inset");
            color: #fff !important;
        }

        &.green-button {

            @darkGreen: #85BF46;
            @lightGreen: #9FDA5F;
            @shadowGreen: #74954F;

            color: #fff !important;
            .text-shadow(1px, 1px, 0px, @shadowGreen);
            .vertical-gradient(@lightGreen, @darkGreen);

            &:hover {
                .vertical-gradient(lighten(@lightGreen, 5%),
lighten(@darkGreen, 5%));
            }
        }

        .button-tooltip {
            display: none;
            top: 28px + 8px + 2px;
            right: -1px;
        }

        &.hover,
        &:hover {
            .button-tooltip {
                display: block;
            }
        }
    }

    @-moz-document url-prefix() {
      progress {
      }
    }

    progress[role] {
        display: inline-block;
        position: relative;
        width: 90%;
        background:#fff;
        -moz-box-sizing: border-box;
        box-sizing: border-box;
    }

    progress[role],
    progress[aria-valuenow]:before {
        background-color: #5af;
    }

    progress[role],
    progress[role]:after {
        background-repeat:repeat-x;
        background-position: 0 0;
        -moz-background-size: auto 100%;
        -webkit-background-size: auto 100%;
        background-size: auto 100%;
    }

    /* Determinate only overrides */
    progress[aria-valuenow] {
        background: #eee;
    }

    progress[aria-valuenow]:before {
        content: "";
        display: block;
        height: 100%;
    }

    /* Overlay */
    progress[role]:after {
        content: "";
        position: absolute;
        top: 0;
        right: 0;
        bottom: 0;
        left: 0;
    }
}


media/constrain.js000064400000013351151167475110010174
0ustar00EasyBlog.module('media/constrain', function($) {
	var module = this;

	EasyBlog.require().library('image').done(function() {
		$.fn.constrain = function() {
			var constrain = this.data('constrain');
			if(constrain instanceof $.Constrain) {
				if(arguments.length > 0) {
					constrain.update(arguments[0]);
				} else {
					return constrain;
				}
			} else {
				constrain = new $.Constrain(this, arguments[0]);
				this.data('constrain', constrain);
			}
		};

		$.Constrain = function(element, options) {

			var self = this;

			var defaultOptions = {
				selector: {
					width: '.inputWidth',
					height: '.inputHeight',
					constrain: '.inputConstrain'
				},
				forceConstrain: false
			}

			var userOptions = options ? options : {};

			self.options = $.extend(true, {}, defaultOptions, userOptions);

			self.options.element = {
				width: element.find(self.options.selector.width).data('type',
'width'),
				height:
element.find(self.options.selector.height).data('type',
'height'),
				constrain: element.find(self.options.selector.constrain)
			}

			self.options.initial = self.options.initial || self.options.source;

			if(self.options.allowedMax !== undefined) {
				self.options.max = $.Image.resizeWithin(self.options.source.width,
self.options.source.height, self.options.allowedMax.width,
self.options.allowedMax.height);

				self.options.initial.width = Math.min(self.options.max.width,
self.options.initial.width);
				self.options.initial.height = Math.min(self.options.max.height,
self.options.initial.height);
			}

			self.options.element.width.data('initial',
self.options.initial.width);
			self.options.element.height.data('initial',
self.options.initial.height);

			self.fieldValues(self.calculate('width',
self.options.initial));

			$.each([self.options.element.width, self.options.element.height],
function(i, element) {

				var	thisType = element.data('type'),
					oppositeType = self.getOppositeType(thisType),
					element = $(element),
					opposite = self.options.element[oppositeType];

				element.bind('keyup', function(event) {
					if(event.keyCode == 9 || event.keyCode == 16) {
						return false;
					}

					self.fieldValues(self.calculate(thisType));
				});

				element.bind('blur', function() {
					if(!self.options.element.constrain.is(':checked') &&
$.trim(element.val()) == '') {
						element.val(self.options.initial[thisType]);
					}

					if($.trim(element.val()) == '' &&
$.trim(opposite.val()) == '') {
						element.val(self.options.initial[thisType]);
						opposite.val(self.options.initial[oppositeType]);
					}
				});
			});

			$(self.options.element.constrain).bind('change', function() {
				if($(this).is(':checked')) {
					var values = self.fieldValues(),
						type = (values.width === '') ? 'height' :
'width';

					self.fieldValues(self.calculate(type));
				}
			});
		};

		$.extend($.Constrain.prototype, {
			calculate: function(thisType, values) {
				var self = this,
					values = (values !== undefined) ? values : self.fieldValues(),
					oppositeType = self.getOppositeType(thisType),
					thisMax = self.options.max ? self.options.max[thisType] : undefined,
					oppositeMax = self.options.max ? self.options.max[oppositeType] :
undefined,
					thisSource = self.options.source[thisType],
					oppositeSource = self.options.source[oppositeType],
					thisVal = values[thisType],
					oppositeVal = values[oppositeType];

				thisVal = (thisVal != '' && thisMax &&
thisVal > thisMax) ? thisMax : thisVal;

				if(this.enforceConstrain()) {
					if(thisVal == '') {
						oppositeVal = '';
					} else {
						var ratio = thisSource / thisVal;

						oppositeVal = Math.round(oppositeSource / ratio);

						if(oppositeMax && oppositeVal > oppositeMax) {
							oppositeVal = oppositeMax;
						}
					}
				}

				var result = {};
				result[thisType] = thisVal;
				result[oppositeType] = oppositeVal;
				return result;
			},

			getOppositeType: function(type) {
				return (type == 'width') ? 'height' :
'width';
			},

			getInput: function(type) {
				var self = this,
					value = self.options.element[type].val();

				value = $.trim(value);
				value = value.replace(new RegExp('[^0-9.]','g'),
"");
				value = parseInt(value, 10);

				return isNaN(value) ? '' : value;
			},

			fieldValues: function(values) {
				var self = this,
					result = {};

				if(values === undefined) {
					// getter
					result.width = self.getInput('width');
					result.height = self.getInput('height');

				} else {
					// setter
					self.options.element.width.val(Math.floor(values.width));
					self.options.element.height.val(Math.floor(values.height));
					result = values;
				}

				return result;
			},

			enforceConstrain: function() {
				var self = this;
				return self.options.forceConstrain ? true :
(self.options.element.constrain.length < 1) ? true :
self.options.element.constrain.is(':checked');
			},

			update: function(options) {
				var self = this;

				// set initial first because initial might have previous source value
				self.options.initial = options.initial || options.source ||
self.options.initial;

				if(options.allowedMax !== undefined && options.source !==
undefined) {
					options.max = $.Image.resizeWithin(options.source.width,
options.source.height, options.allowedMax.width,
options.allowedMax.height);

					self.options.initial.width = Math.min(options.max.width,
self.options.initial.width);
					self.options.initial.height = Math.min(options.max.height,
self.options.initial.height);
				}

				self.options = $.extend(true, {}, self.options, options);

				values = this.calculate('width', {
					width: self.options.initial.width || self.options.source.width,
					height: self.options.initial.height || self.options.source.height
				});

				this.fieldValues(values);
			}
		});

		module.resolve();
	});
});
media/editor.audio.js000064400000005706151167475110010567 0ustar00//
module: start
EasyBlog.module("media/editor.audio", function($){

var module = this;

// require: start
EasyBlog.require()
.view(
	"media/editor.audio",
	"media/editor.audio.player"
)
.done(function() {

// controller: start
EasyBlog.Controller(

	"Media.Editor.Audio",

	{
		defaultOptions: {

			view: {
				panel: "media/editor.audio",
				player: "media/editor.audio.player"
			},

			player: {
				width: 400,
				height: 24,
				autostart: false,
				controlbar: "bottom",
				backcolor: "#333333",
				frontcolor: "#ffffff",
				modes: [
					{
						type: 'html5'
					},
					{
						type: 'flash',
						src: $.rootPath +
"components/com_easyblog/assets/vendors/jwplayer/player.swf"
					},
					{
						type: 'download'
					}
				]
			},

			"{editorPreview}": ".editorPreview",
			"{editorPanel}": ".editorPanel",

			"{playerContainer}": ".playerContainer",

			// Insert options
			"{autoplay}": ".autoplay"
		}
	},

	function(self) {

		var $Media, $Library, $Browser;

		return {

		init: function() {

			$Media = self.media;
			$Library = $Media.library;
			$Browser = $Media.browser;

			var meta = self.meta(),
				place = self.place();

			// Panel
			self.editorPanel()
				.html(self.view.panel({
					meta: meta
				}))
				.implement(
					EasyBlog.Controller.Media.Editor.Panel,
					{},
					function() {

						// Keep a reference to this controller
						self.panel = this;
					}
				);

			// Preview
			self.editorPreview()
				.implement(
					EasyBlog.Controller.Media.Editor.Preview,
					{},
					function() {

						// Keep a reference to this controller
						self.preview = this;

						self.initPlayer();
					}
				);
		},

		initPlayer: function() {

			EasyBlog.require()
				.script($.rootPath +
"/components/com_easyblog/assets/vendors/jwplayer/jwplayer.js")
				.done(function($) {

					var meta = self.meta(),

						place = self.place(),

						id = "player-" + $.uid(),

						options = $.extend(self.options.player, {
							id: id,
							file: self.meta().url,
						}),

						player = self.view.player({
							id: id,
							meta: meta,
							options: options
						});

					// Append player container
					self.preview.container()
						.append(player);

					self.player = jwplayer(id).setup(options);

					self.preview.resetLayout();
				});
		},

		meta: function() {
			return $Library.getMeta(self.key);
		},

		place: function() {
			return $Library.getPlace(self.meta().place);
		},

		setLayout: function() {

		},

		stop: function() {

			if (self.player) {

				if (self.player.getState()=="PLAYING") {

					self.player.pause();
				}
			}
		},

		deactivate: function() {

			self.stop();
		},

		"{self} cancelItem": function() {

			self.stop();
		},

		//
		// Insert audio
		//

		"{self} insertItem": function() {
			var options = {
				autostart: (self.autoplay().val() == '1') ? true : false,
			}

			$Media.insert(self.meta(), options);
		}
	}}

);
// controller: end

module.resolve();

});
// require: end

});
// module: end
media/editor.file.js000064400000005220151167475110010374 0ustar00// module:
start
EasyBlog.module("media/editor.file", function($){

var module = this;

// require: start
EasyBlog.require()
.view(
	"media/editor.file",
	"media/editor.file.preview"
)
.done(function() {

// controller: start
EasyBlog.Controller(

	"Media.Editor.File",

	{
		defaultOptions: {

			view: {
				panel: "media/editor.file",
				preview: "media/editor.file.preview"
			},

			"{editorPreview}": ".editorPreview",
			"{editorPanel}": ".editorPanel",

			// Preview
			"{filePreviewCaption}" : ".filePreviewCaption",

			// Insert button
			"{insertItemButton}": ".insertItemButton",
			"{insertItemDetail}": ".insertItemDetail",

			// Insert options
			"{insertCaption}"	: ".insertCaption",
			"{insertAs}"		: ".insertAs"
		}
	},

	function(self) {

		var $Media, $Library, $Browser;

		return {

		init: function() {

			$Media = self.media;
			$Library = $Media.library;
			$Browser = $Media.browser;

			var meta = self.meta();

			// Panel
			self.editorPanel()
				.html(self.view.panel({
					meta: meta
				}))
				.implement(
					EasyBlog.Controller.Media.Editor.Panel,
					{},
					function() {

						// Keep a reference to this controller
						self.panel = this;
					}
				);

			// Preview
			self.editorPreview()
				.implement(
					EasyBlog.Controller.Media.Editor.Preview,
					{},
					function() {

						// Keep a reference to this controller
						self.preview = this;

						self.generatePreview();
					}
				);
		},

		generatePreview: function() {
			var preview = self.preview.container().find('a'),
				target = self.insertAs().val(),
				content = self.insertCaption().val();

			if(preview.length < 1) {
				var meta = self.meta();

				self.preview.container().html(self.view.preview({
					meta: meta,
					target: target,
					content: content
				}));
			} else {
				preview.attr('target', target).text(content);
			}
			self.preview.resetLayout();
		},

		setLayout: function() {

		},

		meta: function() {
			return $Library.getMeta(self.key);
		},

		place: function() {
			return $Library.getPlace(self.meta().place);
		},

		"{self} insertItem": function() {

			var meta = self.meta(),
				options = {
					title: meta.title,
					target: self.insertAs().val(),
					content: self.insertCaption().val()
				};

			$Media.insert(self.meta(), options);
		},

		"{insertCaption} keyup" : function(el) {
			self.generatePreview();
		},

		"{insertCaption} blur": function(el) {
			if(el.val() == '') {
				var meta = self.meta();

				el.val(meta.title);

				self.generatePreview();
			}
		},

		"{insertAs} change": function(el) {
			self.generatePreview();
		}
	}}

);
// controller: end

module.resolve();

});
// require: end

});
// module: end
media/editor.image.js000064400000056633151167475110010555 0ustar00//
module: start
EasyBlog.module("media/editor.image", function($){

var module = this;

// require: start
EasyBlog.require()
.library(
	"ui/position"
)
.script(
	'media/constrain'
)
.view(
	"media/editor.image",
	"media/editor.image.variation",
	"media/editor.image.caption"
)
.done(function() {

EasyBlog.Controller(

	"Media.Editor.Image",
	{
		defaultOptions: {

			view: {
				panel: "media/editor.image",
				variation: "media/editor.image.variation",
				caption: "media/editor.image.caption"
			},

			defaultVariation: "thumbnail",

			"{editorPreview}": ".editorPreview",
			"{editorPanel}": ".editorPanel",

			// Variation list
			"{imageVariationPanel}": ".imageVariationPanel",
			"{imageVariationList}" : ".imageVariationList",
			"{imageVariations}"    : ".imageVariations",
			"{imageVariation}"     : ".imageVariation",

			// Enforce Dimension
			"{imageEnforceDimensionOption}"	:
".imageEnforceDimensionOption",
			"{imageEnforceWidth}"			: ".imageEnforceWidth",
			"{imageEnforceHeight}"			: ".imageEnforceHeight",

			// Caption
			"{imageCaptionOption}"	: ".imageCaptionOption",
			"{imageCaption}"		: ".imageCaption",

			// Zoom
			"{imageZoomOption}"				: ".imageZoomOption",
			"{imageZoomLargeImageSelection}":
".imageZoomLargeImageSelection",

			// File properties
			"{itemFilesize}": ".itemFilesize",
			"{itemFilename}": ".itemFilename",
			"{itemUrl}"		: ".itemUrl",
			"{itemCreationDate}": ".itemCreationDate",

			// Prompt
			"{modalPrompt}": ".modalPrompt"
		}
	},

	function(self) {

		var $Media, $Library, $Browser, $Prompt;

		return {

		init: function() {

			$Media = self.media;
			$Library = $Media.library;
			$Browser = $Media.browser;

			var meta = self.meta(),
				place = self.place(),
				subcontrollerOptions = {
					controller: {
						editor: self,
						media: self.media
					}
				};

			// Panel
			self.editorPanel()
				.html(self.view.panel({
					meta: meta,
					acl: place.acl
				}))
				.implement(
					EasyBlog.Controller.Media.Editor.Panel,
					{},
					function() {

						// Keep a reference to this controller
						self.panel = this;

						// Don't show file size when editing jomsocial image
						// because we are unable to retrieve them.
						if (meta.place==="jomsocial") {
							self.itemFilesize().remove();
							self.itemFilename().css("padding-right", 0);
						}
					}
				);

			self.modalPrompt()
				.implement(EasyBlog.Controller.Media.Prompt, subcontrollerOptions,
function() {
					$Prompt = self.promptDialog = this;
				});


			// Image filters
			var Filter = EasyBlog.Controller.Media.Editor.Image.Filter;

			self.element
				.implement(Filter.Dimension, subcontrollerOptions)
				.implement(Filter.Caption,   subcontrollerOptions)
				.implement(Filter.Lightbox,  subcontrollerOptions);

			// Preview
			self.editorPreview()
				.implement(
					EasyBlog.Controller.Media.Editor.Preview,
					{
						draggable: true
					},
					function() {

						// Keep a reference to this controller
						self.preview = this;

						// Attempt to load thumbnail image first
						self.previewImage(self.meta().thumbnail.url);
					}
				)

			// Variation form
			if (place.acl.canCreateVariation &&
place.acl.canDeleteVariation) {

				self.element
					.implement(EasyBlog.Controller.Media.Editor.Image.VariationForm,
subcontrollerOptions);
			}

			self.populateImageVariations();

			self.setLayout();
		},

		meta: function() {
			return $Library.getMeta(self.key);
		},

		place: function() {
			return $Library.getPlace(self.meta().place);
		},

		setLayout: function() {

			self.preview.resetLayout();
		},

		"{self} insertItem": function() {
			var variation =
self.currentImageVariation().data("variation"),
				options = {
					variation: variation.name
				};

			if(self.imageEnforceDimensionOption().is(":checked")) {
				options.enforceDimension = true;
				options.enforceWidth = self.imageEnforceWidth().val();
				options.enforceHeight = self.imageEnforceHeight().val();
			}

			if(self.imageCaptionOption().is(":checked")) {
				options.caption = self.imageCaption().val();
			}

			if(self.imageZoomOption().is(":checked")) {
				options.zoom = self.imageZoomLargeImageSelection().val();
			}

			$Media.insert(self.meta(), options);
		},

		//
		// Image variation
		//

		populateImageVariations: function() {

			var meta = self.meta(),
				variations = meta.variations;

			self.imageVariationsData = self.imageVariationsData || {};

			if (variations===undefined) {

				// Show loading indicator
				self.imageVariations()
					.empty()
					.addClass("busy");

				// Get file variations from server
				$Library.getMetaVariations(meta.key)
					.done(function(){

						// Try to populate variations again
						self.populateImageVariations();

						self.imageVariations()
							.removeClass("busy");
					})
					.fail(function() {

						// Ask user to try again on the preview screen
					})
					.always(function() {

						self.imageVariations()
							.removeClass("busy");
					});

				return;
			}

			$.each(variations, function(i, variation) {

				// Skip icon variation
				if (variation.name=="icon") return;

				self.createImageVariation(variation);
			});

			self.trigger("variationPopulated",
[self.imageVariationsData]);
		},

		createImageVariation: function(variation) {

			var imageVariation = self.view.variation({variation: variation});

			imageVariation
				.data("variation", variation)
				.appendTo(self.imageVariations());

			// Add default class if this is a default variation
			if (variation["default"]===true ||
variation["default"]=="true") {
				imageVariation.addClass("default");
			}

			// If this variation can't be deleted, e.g. thumbnail, original,
			// then add a lock indicator.
			if (!variation.canDelete) {
				imageVariation.addClass("locked");
			}

			self.imageVariationsData[variation.name] = imageVariation;

			self.trigger("variationCreated", [imageVariation, variation]);

			return imageVariation;
		},

		"{self} variationPopulated": function() {

			// Find default variation and highlight default variation
			var variationName,
				defaultImageVariation = self.imageVariation(".default");

			if(self.imageVariation().length > 0) {

				if (defaultImageVariation.length < 1) {

					var meta = self.meta(),
						image = self.previewImage();


					if (image!==undefined) {

						$.each(meta.variations, function(i, variation) {

							if(variation.width == image.width() && variation.height ==
image.height()) {
								variationName = variation.name;
								return false;
							}
						});

					}

					variationName = variationName ||
self.imageVariation(":first").data("variation").name;

				} else {

					variationName =
defaultImageVariation.eq(0).data("variation").name;
				}

				self.currentImageVariation(variationName);
			}

		},

		"{imageVariation} click": function(imageVariation) {
			var variation = imageVariation.data("variation");

			self.currentImageVariation(variation.name);
		},

		currentImageVariation: function(variationName) {

			var currentImageVariation = self.currentImageVariation.imageVariation,

				imageVariation = self.imageVariationsData[variationName];

			if (imageVariation!==undefined) {

				var variation = imageVariation.data("variation");

				var meta = self.meta();

				if(meta.place == 'jomsocial') {
					var image = self.previewImage();
					variation.width = image.data('width');
					variation.height = image.data('height');

					$('<span
class="variationDimension"></span>').text(variation.width
+ 'x' + variation.height).appendTo(imageVariation);
				}

				// Deactivate current image variation
				if (currentImageVariation) {
					currentImageVariation.removeClass("active");
				}

				imageVariation.addClass("active");

				self.currentImageVariation.imageVariation = imageVariation;

				self.trigger("variationSelected", [imageVariation,
variation]);
			}

			return self.currentImageVariation.imageVariation;
		},

		"{self} variationSelected": function(el, event, imageVariation,
variation) {

			self.itemFilesize()
				.html(variation.filesize);

			self.itemUrl()
				.html(variation.url);

			self.itemCreationDate()
				.html(variation.dateCreated);

			self.previewImage(variation.url);
		},

		"{self} variationRemoved": function(el, event, imageVariation,
variation) {
			delete self.imageVariationsData[variation.name];
			imageVariation.remove();
			// $Library.removeMetaVaration(self.meta(), variation.name);
		},

		previewImage: function(url) {

			// No url given, return.
			if (url===undefined) {
				return self.previewImage.currentImage;
			};

			// Create a collection of image previews (if this is the first time)
			if (self.previewImage.images===undefined) {
				self.previewImage.images = {};
			}

			var image        = self.previewImage.images[url],
				currentUrl   = self.previewImage.currentUrl,
				currentImage = self.previewImage.images[currentUrl];

			// Show loading indicator
			self.preview.showDialog("loading");

			// Detach current image
			if (currentImage!==undefined && !$.isDeferred(currentImage)) {
				currentImage.detach();
				self.preview.container().empty();
			}

			// Store a copy of the current url
			self.previewImage.currentUrl = url;

			// If image hasn't been loaded
			if (image===undefined) {

				// Load image
				self.previewImage.images[url]  =
					$.Image.get(url)
						.done(function(image) {

							self.previewImage.images[url] = image;

							// If current url has changed, don't show this one.
							if (self.previewImage.currentUrl==url) {
								self.previewImage(url);
							}
						})
						.fail(function() {

							self.preview.hideDialog("loading");

							// If current url is still the same, show error message
							if (self.previewImage.currentUrl==url) {

								// TODO: Show error message
							}
						});

				return;
			}

			// If image is still loading
			if ($.isDeferred(image)) {
				return;
			}

			self.preview.container()
				.append(image);

			self.previewImage.currentImage = image;

			self.trigger("previewImage", [self.preview.container(),
image]);

			// Hide loading indicator
			self.preview.hideDialog("loading");

			self.preview.resetLayout();
		}

	}}

);

EasyBlog.Controller(

	"Media.Editor.Image.VariationForm",

	{
		defaultOptions: {

			// Variation form
			"{imageVariationForm}"		: ".imageVariationForm",
			"{addVariationButton}"		: ".addVariationButton",
			"{createVariationButton}"	:
".createVariationButton",
			"{removeVariationButton}"	:
".removeVariationButton",
			"{cancelVariationButton}"	:
".cancelVariationButton",
			"{tryCreateVariationButton}":
".tryCreateVariationButton",
			"{newVariationName}"		: ".newVariationName",
			"{newVariationWidth}"		: ".newVariationWidth",
			"{newVariationHeight}"		: ".newVariationHeight",
			"{newVariationRatio}"		: ".newVariationRatio",
			"{newVariationLockRatio}"	:
".newVariationLockRatio",
			"{imageVariationMessage}"	:
".imageVariationMessage",
			variationNameFilter			: new
RegExp('[^a-zA-Z0-9]','g'),

			// Variation prompt
			"{createNewImageVariationPrompt}"	:
".createNewImageVariationPrompt",
			"{promptVariationName}"				:
".createNewImageVariationPrompt .variationName",
			"{promptVariationWidth}"			:
".createNewImageVariationPrompt .variationWidth",
			"{promptVariationHeight}"			:
".createNewImageVariationPrompt .variationHeight"
		}
	},

	function(self) { return {

		init: function() {
		},

		"{self} variationSelected": function() {
			var variation =
self.editor.currentImageVariation().data('variation');

			self.removeVariationButton()
				.toggle(variation.canDelete);
		},

		nextVariationName: function(name) {

			var match = false,
				name = $.trim(name.toLowerCase());

			$.each(self.editor.imageVariationsData, function(i, variation) {
				if (name==variation.data('variation').name.toLowerCase()) {

					match = true;

					var suffix = name.substr(-1, 1);

					name = ($.isNumeric(suffix)) ?
								name.substr(0, name.length - 1) + (parseInt(suffix, 10) + 1) :
								name + 1;

					return false;
				}
			});

			return (match) ? self.nextVariationName(name) : name;
		},

		"{addVariationButton} click": function() {

			self.editor.promptDialog
				.get('createNewImageVariationPrompt')
				.state('default')
				.show();

			var variation =
self.editor.currentImageVariation().data('variation');
				variationName =
$.String.capitalize(self.nextVariationName(variation.name));

			self.newVariationName()
				.data("default", variationName)
				.val(variationName)
				.select();

			self.newVariationWidth()
				.data("default", variation.width)
				.val(variation.width);

			self.newVariationHeight()
				.data("default", variation.height)
				.val(variation.height);

			self.imageVariationForm().constrain({
				selector: {
					width: self.options["{newVariationWidth}"],
					height: self.options["{newVariationHeight}"],
					constrain: self.options["{newVariationLockRatio}"]
				},
				source: {
					width: variation.width,
					height: variation.height
				},
				allowedMax: {
					width: self.editor.media.options.exporter.image.maxVariationWidth,
					height: self.editor.media.options.exporter.image.maxVariationHeight
				}
			})
		},

		"{newVariationRatio} click": function(el) {

			el.toggleClass("locked");

			if (el.hasClass("locked")) {
				self.newVariationLockRatio().attr('checked',
'checked');
			} else {
				self.newVariationLockRatio().removeAttr('checked');
			}

			self.newVariationLockRatio().trigger('change');
		},

		"{createVariationButton} click": function() {
			self.createVariation();
		},

		"{tryCreateVariationButton} click": function() {
			self.createVariation();
		},

		"{newVariationName} keyup": function(el, event) {
			var value = $.trim($(el).val());
			value = value.replace(new
RegExp('[^0-9a-zA-Z]','g'), "");
			$(el).val(value);

			if(event.keyCode == 13) {
				self.createVariationButton().trigger('click');
			}
		},

		"[{newVariationWidth}, {newVariationHeight}] keyup":
function(el, event) {
			if(event.keyCode == 13) {
				self.createVariationButton().trigger('click');
			}
		},

		createVariation: function() {
			var meta = self.editor.meta(),
				place = self.editor.place(),
				name = self.newVariationName().val(),
				width = self.newVariationWidth().val(),
				height = self.newVariationHeight().val();

			if(!$.trim(name) || !$.trim(width) || !$.trim(height)) {
				return false;
			}

			self.promptVariationName().text(name);
			self.promptVariationWidth().text(width);
			self.promptVariationHeight().text(height);

			self.editor.promptDialog
				.get('createNewImageVariationPrompt')
				.state('progress')
				.show();

			EasyBlog.ajax(
				"site.views.media.createVariation",
				{
					path: meta.path,
					place: place.id,
					name: name,
					width: width,
					height: height
				},
				{
					success: function( variation ) {

						self.media.library.meta[meta.key].variations.push(variation);

						self.editor.createImageVariation(variation);

						self.editor.currentImageVariation(variation.name);

						self.cancelVariationButton().click();
					},
					fail: function( message ) {
						self.editor.promptDialog
							.get('createNewImageVariationPrompt')
							.state('fail')
							.show();
					}
				}
			);
		},

		"{removeVariationButton} click": function() {

			var imageVariation = self.editor.imageVariation(".active"),
				variation = imageVariation.data("variation"),
				meta = self.editor.meta(),
				place = self.editor.place();

			if (variation.canDelete) {

				EasyBlog.ajax(

					"site.views.media.deleteVariation",

					{
						"fromPath": meta.path,
						"place": place.id,
						'name': variation.name
					},

					{
						beforeSend: function() {

							imageVariation.addClass("busy");
						},

						success: function() {

							// Once the item is successfully removed, we need to remove this
variation.
							imageVariation.slideUp(function(){
								self.trigger('variationRemoved', [imageVariation,
variation]);
							});

							// Revert to default image variation
							self.editor.imageVariation(".default")
								.click();

							self.media.library.removeMetaVariation(meta, variation.name);
						},

						fail: function(message) {

							try { console.log(message); } catch(e) {};
						},

						complete: function() {

							imageVariation.removeClass("busy");
						}
					}
				);
			}
		}
	}}
);


EasyBlog.Controller(
	"Media.Editor.Image.Filter.Caption",
	{
		defaultOptions: {
			view: {
				caption: "media/editor.image.caption"
			},

			"{imageVariation}"		: ".imageVariation",
			"{imageCaptionOption}"	: ".imageCaptionOption",
			"{imageCaption}"		: ".imageCaption"
		}
	},
	function(self) { return {

		init: function() {
			self.item = {
				meta: self.editor.meta()
			}
		},

		"{imageVariation} click": function(el) {
			self.transform();
		},

		"{self} dimensionEnforced": function() {
			self.transform();
		},

		"{imageCaptionOption} change": function(el, event) {

			event.stopPropagation();

			el.parent(".field").toggleClass("hide-field-content",
!el.is(":checked"));

			self.transform();
		},

		"{imageCaptionOption} mouseup": function() {

			setTimeout(function(){
				self.imageCaption().focus()[0].select();
			}, 1);
		},

		"{imageCaption} blur": function(el) {
			if($.trim(el.val()) == '') {
				el.val(self.item.meta.title);
			}

			self.transform();
		},

		"{imageCaption} keyup": function(el, event) {
			self.transform();
		},

		transform: function() {
			var previewContainer = self.editor.preview.container(),
				image = previewContainer.find('img'),
				captionText = previewContainer.find('div.imageCaptionText');

			if(self.imageCaptionOption().is(':checked')) {
				var caption = self.imageCaption().val();

				captionText.remove();

				previewContainer.width(image.width());

				previewContainer.addClass('imageCaptionBorder');

				previewContainer.width(previewContainer.width());

				previewContainer.append(self.view.caption({
					caption: caption
				}));
			} else {
				previewContainer.removeClass('imageCaptionBorder');

				captionText.remove();

				previewContainer.width("auto");
			}

			self.editor.preview.resetLayout();
		}
	}}
);

EasyBlog.Controller(
	"Media.Editor.Image.Filter.Lightbox",
	{
		defaultOptions: {
			defaultImageZoomVariation       : "original",
			"{imageZoomOption}"				: ".imageZoomOption",
			"{imageZoomLargeImageSelection}":
".imageZoomLargeImageSelection",
			"{imageZoomLargeImageOption}"	:
".imageZoomLargeImageSelection option"
		}
	},
	function(self) { return {

		init: function() {

		},

		"{self} variationCreated": function(el, event, imageVariation,
variation) {

			// Also add to insert options
			var variationName = $.String.capitalize(variation.name),
				largeImageOption = $("<option>")
										.val(variationName)
										.html(variationName)
										.data("variation", variation);

			var defaultSelectedVariationName =
					self.media.options.exporter.image.zoom ||
					self.options.defaultImageZoomVariation;

			if (variation.name==defaultSelectedVariationName) {
				largeImageOption.attr("selected", true);
			}

			self.imageZoomLargeImageSelection()
				.append(largeImageOption);
		},

		"{self} variationRemoved": function(el, event, imageVariation,
variation) {
			self.imageZoomLargeImageOption('[value="' +
variation.name + '"]').remove();
		},

		"{imageZoomOption} change": function(el, event) {

			event.stopPropagation();

			el.parent(".field").toggleClass("hide-field-content",
!el.is(":checked"));
		},

		transform: function() {

			// Enable image zooming
			if (self.imageZoomOption().is(":checked")) {

				var largeImageVariation =
					self.imageZoomLargeImageOption(":selected").data("variation");

				image = $("<a>")
					.addClass("easyblog-thumb-preview")
					.attr({
						href: largeImageVariation.url,
						title: imageCaption || self.item.meta.title
					})
					.html(image);
			}
		}
	}}
);

EasyBlog.Controller(
	"Media.Editor.Image.Filter.Dimension",
	{
		defaultOptions: {
			"{imageEnforceDimension}"		:
".imageEnforceDimension",
			"{imageEnforceDimensionOption}"	:
".imageEnforceDimensionOption",
			"{imageEnforceWidth}"			: ".imageEnforceWidth",
			"{imageEnforceHeight}"			: ".imageEnforceHeight",
			"{imageEnforceRatio}"			: ".imageEnforceRatio",
			"{imageEnforceLockRatio}"		:
".imageEnforceLockRatio",
			"{imageVariation}"				: ".imageVariation"
		}
	},
	function(self) { return {

		init: function() {
			var options = {
				selector: {
					width: self.options["{imageEnforceWidth}"],
					height: self.options["{imageEnforceHeight}"],
					constrain: self.options["{imageEnforceLockRatio}"]
				}
			};

			// only apply constrain once variation has been populated
			self.editor.bind('variationPopulated', function() {
				// enforce dimension option
				if(self.editor.media.options.exporter.image.enforceDimension) {
					self.imageEnforceDimensionOption().attr({
						'checked': 'checked',
						'disabled': 'disabled'
					}).parent('.field').removeClass('hide-field-content');
				}

				self.applyConstrain(options);
			});

			// self.imageEnforceWidth().data("default", width);
			// self.imageEnforceHeight().data("default", height);
		},

		"{imageVariation} click": function(el) {
			self.applyConstrain();
		},

		"{imageEnforceDimensionOption} change": function(el, event) {
			event.stopPropagation();

			el.parent(".field").toggleClass("hide-field-content",
!el.is(":checked"));

			self.transform();

			// self.imageEnforceWidth().trigger("keyup");
		},

		"{imageEnforceRatio} click": function(el) {
			el.toggleClass("locked");

			if (el.hasClass("locked")) {
				self.imageEnforceLockRatio().attr('checked',
'checked');
			} else {
				self.imageEnforceLockRatio().removeAttr('checked');
			}

			self.imageEnforceLockRatio().trigger('change');

			if(el.hasClass("locked")) {
				self.transform();
			}
		},

		"{self} previewImage": function() {
			self.transform();
		},

		"[{imageEnforceWidth}, {imageEnforceHeight}] keyup": function()
{
			self.transform();
		},

		"[{imageEnforceWidth}, {imageEnforceHeight}] blur":
function(el) {
			if($.trim(el.val()) == '' &&
!self.imageEnforceLockRatio().is(':checked')) {
				el.val(el.data('initial'));
			}

			self.transform();
		},

		transform: function() {
			var image = self.editor.previewImage();

			if(image === undefined) return;

			var dimensions = {};

			// Enforce image dimension
			if (self.imageEnforceDimensionOption().is(":checked")) {
				dimensions = {
					width: self.imageEnforceWidth().val(),
					height: self.imageEnforceHeight().val()
				};
			} else {
				var variation = self.editor.currentImageVariation();

				variation = variation === undefined ? self.editor.meta() :
variation.data('variation');

				dimensions = {
					width: variation.width,
					height: variation.height
				};
			}

			if(image.width() !== dimensions.width || image.height() !==
dimensions.height) {
				image.css(dimensions);

				// if dimension changed, trigger change in dimension
				self.editor.trigger('dimensionEnforced');
			}

			self.editor.preview.resetLayout();
		},

		applyConstrain: function(options) {
			var variation = self.editor.currentImageVariation() === undefined ?
self.editor.meta() :
self.editor.currentImageVariation().data('variation'),
				dimensions = {
					source: {
						width: variation.width,
						height: variation.height
					}
				};

			if(self.editor.media.options.exporter.image.enforceDimension) {
				dimensions.allowedMax = {
					width: self.editor.media.options.exporter.image.enforceWidth,
					height: self.editor.media.options.exporter.image.enforceHeight
				}
			}

			options = $.extend(true, {}, dimensions, options);

			self.imageEnforceDimension().constrain(options);

			self.transform();
		}
	}}
);

module.resolve();

});
// require: end

});
// module: end
media/editor.image.less000064400000013322151167475110011073
0ustar00(~"@{MediaManager}") {

    .imageVariationMessage {
        position: relative;
        line-height: 16px;
        color: #900;
        display: block;
        text-align: center;
        font-size: 12px;
    }

    .imageVariationList {

        .imageVariations {

            background: #fff;
            border: 1px solid #bbb;
            border-bottom: none;
            .border-radius(3px, 0, 0, 3px);
            overflow-y: auto;

            &.busy {
                background: url(loader.gif) #fff no-repeat center center;
            }

            height: 88px;

            .imageVariation {

                padding: 4px;
                font-size: 11px;
                position: relative;

                .variationName {
                    // padding-left: 14px;
                    background-repeat: no-repeat;
                    background-position: left center;
                    white-space: nowrap;
                }

                &.locked i {
                    // background-image: url(variation.locked.gif);
                    display:inline-block;
                    width:10px;
                    height:10px;
                    .icon-media (17, 3);
                }

                &.busy .variationName {
                    background-image: url(variation.busy.gif);
                }

                .variationDimension {
                    position: absolute;
                    top: 4px;
                    right: 4px;
                }

                &.active {
                    .activeItemColorScheme();
                }

                &:hover{
                	cursor: pointer;
                }
            }
        }

        &.readOnly {
            .imageVariations {
                border: 1px solid #bbb;
                .border-radius(3px, 3px, 3px, 3px);
            }
        }
    }

    .imageVariationForm {

        position: relative;

        form {
            background: #fff;
            border: 1px solid #bbb;
            border-bottom: none;
            .border-radius(3px, 0, 0, 3px);
            padding: 10px;
        }

        .newVariationRatio {
            display: block;
            width: 24px;
            height: 30px;
            position: absolute;
            top: 80px;
            right: 90px;

            // background-image:
url("variation.ratio.unlocked.png");
            .icon-media (17, 2);
            // background-repeat: no-repeat;
            // background-position: top left;
            cursor: pointer;

            &.locked {
                // background-image:
url("variation.ratio.locked.png");
                .icon-media (17, 1);
            }
        }

        .newVariationLockRatio {
            display: none;
        }
    }

    .imageVariationActions {

        position: relative;

        .vertical-gradient-4(#ffffff, #f3f3f3, #ededed, #ffffff);
        border: 1px solid #bbb;
        border-top: 1px solid #ccc;
        .border-radius(0, 3px, 3px, 0);

        height: 24px;

        button {

            display: block;
            position: absolute;
            background: none;
            border: none;
            height: 24px;
            line-height: 24px;
            padding: 0 6px;
            padding-left: 18px; // 6px padding-left, 12px icon
            cursor: pointer;
            margin: 0 !important;
            text-transform: normal !important;
            font-size: 11px !important;

            i {
                width: 12px;
                height: 24px;
                background-repeat: no-repeat;
                background-position: center 8px;
                position: absolute;
                top: 2px;
                left: 6px; // 6px padding left
                .opacity(0.75);
            }

            .leftButton() {
                .border-radius(0, 0, 3px, 0);
                top: 0;
                left: 0;
                border-right: 1px solid #ccc;
            }

            .rightButton() {
                .border-radius(0, 3px, 0, 0);
                top: 0;
                right: 0;
                border-left: 1px solid #ccc;
            }

            &:hover {
                .vertical-gradient-4(lighten(#ffffff, 3%), lighten(#f3f3f3,
3%), lighten(#ededed, 3%), lighten(#ffffff, 3%));
            }

            &.addVariationButton {

                .rightButton();

                i {
                    .icon-media (18, 1);
                }
            }

            &.removeVariationButton {

                .leftButton();

                i {
                    .icon-media (18, 2);
                }
            }

            &.createVariationButton {

                .rightButton();

                i {
                    .icon-media (19, 1);
                }
            }

            &.backVariationButton {

                .leftButton();

                i {
                    .icon-media (19, 2);
                }
            }
        }
    }

    .imageEnforceDimension {

        position: relative;

        .imageEnforceRatio {
            display: block;
            width: 24px;
            height: 30px;
            position: absolute;
            top: 85px;
            right: 58px;

            // background-image:
url("variation.ratio.unlocked.png");
            .icon-media (17, 2);
            // background-repeat: no-repeat;
            // background-position: top left;
            cursor: pointer;

            &.locked {
                // background-image:
url("variation.ratio.locked.png");
                .icon-media (17, 1);
            }
        }

        .imageEnforceLockRatio {
            display: none !important;
        }

        &.field-content {
            .imageEnforceRatio {
                top: 10px;
                right: 20px;
            }
        }
    }
}
media/editor.js000064400000014353151167475110007465 0ustar00// module:
start
EasyBlog.module("media/editor", function($){

var module = this;

// require: start
EasyBlog.require()
// .library(
// 	"ui/position"
// )
// .view(
// 	"media/editor",
// 	"media/editor.viewport"
// )
.done(function(){

// controller: start
EasyBlog.Controller(

	"Media.Editor",

	{
		defaultOptions: {

			view: {
				editor: "media/editor",
				viewport: "media/editor.viewport"
			},

            "{modalHeader}": ".modalHeader",
            "{modalToolbar}": ".modalToolbar",
            "{modalContent}": ".modalContent",

            "{navigationPathway}":
".navigationPathway",

            "{insertItemButton}": ".insertItemButton",
            "{cancelEditingButton}":
".cancelEditingButton"
		}
	},

	function(self) { return {

		init: function() {

            self.element
                .addClass("editor")
                .html(self.view.editor());

			// Browser navigation
			self.navigationPathway()
				.implement(
					EasyBlog.Controller.Media.Navigation,
					{
						controller: {
							media: self.media
						},

						canActivate: false
					},
					function() {
						// Assign controller as a property of myself
						self.navigation = this;
					}
				);

			self.setLayout();
		},

		setLayout: function() {

            // Don't set layout if current modal is not us
            if (self.media.currentModal!=="editor") return;

			self.modalContent()
				.hide()
				.height(
					self.element.height() -
					self.modalHeader().outerHeight() -
					self.modalToolbar().outerHeight()
				)
				.show();

			// Also trigger set layout on handler
			var currentEditor = self.getEditor(self.currentEditor);

			if (currentEditor) {
				currentEditor.setLayout && currentEditor.setLayout();
			}
		},

		editors: [],

		handlers: [],

		loadHandler: function(type) {

			var handlerLoader = self.handlers[type];

			if (handlerLoader!==undefined) return handlerLoader;

			// Create new handler loader
			handlerLoader = $.Deferred();

			// Load handler
			handlerLoader.require =

				EasyBlog.require()
					.script(
						"media/editor." + type
					)
					.done(function(){

						var EditorHandler =
EasyBlog.Controller.Media.Editor[$.String.capitalize(type)];

						if (EditorHandler!==undefined) {

							handlerLoader.resolve(EditorHandler);

						} else {

							delete self.handlers[type];

							handlerLoader.reject();
						}
					})
					.fail(function(){

						handlerLoader.reject();
					});

			return handlerLoader;
		},

		createEditor: function(key, callback) {

			// This will attempt to remove any previously created editor
			self.removeEditor(key);

			var meta = self.media.library.getMeta(key);

			// If there's no meta, skip.
			// TODO: Show error.
			if (meta===undefined) return;

			self.loadHandler(meta.type)
				.done(function(EditorHandler) {

					// Create editor & implement handler
					var editor = new EditorHandler(

						self.view.viewport()
							.addClass("editor-type-" + meta.type)
							.prependTo(self.modalContent()),

						{
							controller: {
								media: self.media,
								editor: self,
								key: self.media.library.getKey(meta)
							}
						}
					);

					// Register this editor instance
					self.editors[key] = editor;

					callback && callback(editor);
				});
		},

		removeEditor: function(key) {

			var editor = self.editors[key];

			if (editor===undefined) return;

			editor.destroy();

			delete self.editors[key];
		},

		getEditor: function(key) {

			return self.editors[key];
		},

		activateEditor: function(key) {

			self.deactivateEditor(self.currentEditor);

			// Set navigation pathway
			self.navigation.setPathway(key);

			var editor = self.getEditor(key),

				activateEditor = function(editor) {

					self.currentEditor = key;

					editor.element.addClass("active");

					editor.activate && editor.activate();
				};

			if (editor===undefined) {

				self.createEditor(key, activateEditor);

			} else {

				activateEditor(editor);
			}
		},

		deactivateEditor: function() {

			var editor = self.getEditor(self.currentEditor);

			if (editor===undefined) return;

			editor.deactivate && editor.deactivate();

			editor.element.removeClass("active");
		},

		"{self} modalActivate": function(el, event, key) {

			self.activateEditor(key);
		},

		"{self} modalDeactivate": function() {

			self.deactivateEditor();
		},

		"{insertItemButton} click": function() {

			var editor = self.getEditor(self.currentEditor);

			if (editor===undefined) return;

			editor.trigger("insertItem");
		},

		"{cancelEditingButton} click": function() {

			var editor = self.getEditor(self.currentEditor);

			if (editor) {
				editor.trigger("cancelItem");
			}

			self.media.browse();
		}
	}}

);

EasyBlog.Controller(

	"Media.Editor.Panel",

	{
		defaultOptions: {

			"{sectionHeader}": ".panelSectionHeader",
			"{sectionContent}": ".panelSectionContent"
		}
	},

	function(self) { return {

		init: function() {

		},

		// Common editor UI behaviour
		"{sectionHeader} click": function(sectionHeader) {

			var section = sectionHeader.parent();

			section.toggleClass("active");
		}
	}}
);

EasyBlog.Controller(

	"Media.Editor.Preview",

	{
		defaultOptions: {

			"{container}": ".previewContainer",
			"{dialogGroup}": ".previewDialogGroup"
		}
	},

	function(self) { return {

		init: function() {
		},

		resetLayout: function() {

			clearTimeout(self.resetLayoutTimer);

			self.resetLayoutTimer = setTimeout(function(){

				var container = self.container(),
					width = self.element.width(),
					height = self.element.height(),
					containerWidth = container.width(),
					containerHeight = container.height(),
					top = 0,
					left = 0,
					overflow = "none";

				if (containerWidth < width) {
					left = (width - containerWidth) / 2;
				} else {
					overflow = "auto";
				}

				if (containerHeight < height) {
					top = (height - containerHeight) / 2;
				} else {
					overflow = "auto";
				}

				self.element.css("overflow", overflow);

				container.css({
					top: top,
					left: left
				});

			}, 100);
		},

		showDialog: function(dialogName) {
			self.dialogGroup().addClass("show-dialog-" + dialogName);
		},

		hideDialog: function(dialogName) {
			self.dialogGroup().removeClass("show-dialog-" + dialogName);
		}
	}}
);

module.resolve();

});
// require: end

});
// module: end
media/editor.less000064400000010476151167475110010021
0ustar00(~"@{MediaManager}") {

    .editor {

        background: #fff;

        .modalToolbar {

            .insertItemButton {
                > i {
                    .icon-media(7, 4);
                }
            }

            .cancelEditingButton {
                > i {
                    .icon-media(6, 4);
                }
            }
        }

        .modalContent {

            .clearfix();

            .editorViewport,
            .editorLoading {
                width: 100%;
                height: 100%;
                overflow: hidden;
                position: absolute;
            }

            .editorViewport {

                top: 99999px;
                left: 99999px;
                z-index: 2;

                &.active {
                    top: 0;
                    left: 0;
                    z-index: 3;
                }

                .editorPreview {
                    height: 100%;
                    margin-right: 300px;
                    background: url("editor.preview.png");
                    overflow: hidden;
                    position: relative;

                    .previewContainer {
                        position: absolute;
                        z-index: 2;
                        // cursor: move;
                        // .box-shadow(0 12px 24px rgba(0, 0, 0, 0.4));

                        object {
                            .no-focus-outline();
                        }

                        &.imageCaptionBorder {
                            padding: 5px;
                            border: 1px solid #ddd;
                            background: #f5f5f5;
                        }

                        .imageCaptionText {
                            background: #f5f5f5;
                            padding: 5px 0;
                        }
                    }

                    .previewDialogGroup {
                        width: 100%;
                        height: 100%;
                        position: absolute;
                        z-index: 1;

                        &.alwaysOnTop {
                            z-index: 3;
                        }

                        &.show-dialog-loading {

                            .previewDialog {

                                &.dialog-loading {
                                    display: block;
                                }
                            }
                        }

                        .previewDialog {
                            display: none;

                            &.dialog-loading {
                                .absolute-center();
                                background: url("loader.gif")
no-repeat center center;
                                width: 16px;
                                height: 16px;
                                margin: 0 auto;
                                position: relative;
                                z-index: 9999;
                            }
                        }
                    }
                }

                .editorPanel {
                    width: 300px;
                    height: 100%;
                    float: right;
                    background: #F5F5F5;
                    border-left: 1px solid #CCCCCC;
                    overflow-y: scroll;
                    overflow-x: hidden;
                }
            }

            .editorLoading {
                z-index: 1;
                top: 0;
                left: 0;
                text-align: center;
                width: 100%;
                height: 100%;
                background: #f6f6f6;

                .loadingHint {

                    position: absolute;
                    top: 50%;
                    width: 100%;
                    margin-top: 19px / 2 * -1;

                    i {
                        background: url("loader.bar.gif");
                        width: 220px;
                        height: 19px;
                        display: inline-block;
                    }

                    .loadingText {
                        font-size: 22px;
                        line-height: 22px;
                        padding: 12px;
                        display: block;
                        color: #bbb;
                        .text-shadow(1px, 1px, 0px, #fff);
                    }
                }
            }
        }
    }

}
media/editor.panel.form.less000064400000005434151167475110012057
0ustar00(~"@{MediaManager}") {

    .editorPanel {
        .formGroup {

            display: block;
            clear:both;
            margin: 8px 0;

            .formLabel {
                display: block;
                float: left;
                width: 85px;
                text-align: right;
                font-size: 11px;
                padding-top: 4px;
            }

            .formControl {
                margin-left: 95px;
            }

            input[type=text] {
                background: transparent;
                border: none;
                line-height: 20px;
                width: 150px;
                height: 20px;
                font-size: 12px;
                border:1px solid #999;
                padding:0 0 0 4px;
                .rounded(4px);
                .box-shadow(0px 1px 3px 0px rgba(0, 0, 0, 0.2) inset);
            }
        }
    }

    .list-form,
    .list-form li {
        font-size:11px;
        margin:0!important;
        padding:0!important;
        list-style:none!important;
        border:0!important;
        background:none!important;

        + li{
            margin:5px 0 0!important;
        }
        > label{
            display:block;
            min-height:17px;
            line-height:17px;
            margin:0;
            text-align:left;
            width:auto;
            float:none;
        }
        > label + div{
            margin:0;
            line-height:20px;
        }

        input[type="text"],
        input[type="password"],
        input[type="checkbox"],
        input[type="radio"]
        textarea,
        select {
            border:1px solid #ccc;
            font-family:'Lucida Grande',Tahoma,Arial,sans-serif
!important;
            font-size:11px !important;
            background:#fff;
            color:#555;
            display:inline-block;
            position:relative;
            vertical-align:top;
        }
        input[type="text"],
        input[type="password"],
        textarea{
            padding:4px;
        }
        input[type="text"],
        input[type="password"]{
            width: 90%;
            height: 20px;
        }
        input[type="checkbox"],
        input[type="radio"]{
            float:left;
            display:inline-block;
            vertical-align:text-bottom;
            bottom:-2px;

            + label{
                margin:0 0 0 20px!important;
            }
        }
        select{
            padding:2px;
            top:-1px;
        }
        label {
            font-family:'Lucida Grande',Tahoma,Arial,sans-serif
!important;
            font-size:11px !important;
        }

        .field-content {
            display: block;
            margin: 5px 0 0 20px;
        }

        &.hide-field-content .field-content {
            display: none;
        }
    }
}
media/editor.panel.info.less000064400000003555151167475110012051
0ustar00(~"@{MediaManager}") {

    .editor-type-video .panelSection.infoPanel .itemInfo > i,
    .editor-type-audio .panelSection.infoPanel .itemInfo > i {
        .icon-media(10, 5);
    }

    .editor-type-image .panelSection.infoPanel .itemInfo > i {
        .icon-media(8, 5);
    }

    .editor-type-file .panelSection.infoPanel .itemInfo > i {
        .icon-media(12, 5);
    }

    .panelSection.infoPanel {

        .panelSectionContent {

            padding: 8px;

            .itemInfo {
                position: relative;
                padding-left: 40px;
                min-height: 32px;

                > i {
                    // background: url(upload.media.png) no-repeat;
                    display: block;
                    position: absolute;
                    width: 32px;
                    height: 32px;
                    top: 0;
                    left: 0;
                }

                .itemFilename {
                    display: block;
                    font-weight: bold;
                    line-height: 16px;
                    .text-overflow();
                    overflow: hidden;
                    white-space: nowrap;
                    padding-right: 64px;
                }

                .itemFilesize {
                    line-height: 16px;
                    position: absolute;
                    top: 0;
                    right: 0;
                }

                .itemCreationDate {
                    font-size: 11px;
                    line-height: 16px;
                }
            }

            .itemExtraInfo {
                background: none repeat scroll 0 0 #FFFFFF;
                border: 1px solid #DDD;
                margin-top: 6px;
                padding: 8px;
                .word-wrap();

                .itemUrl {
                    font-size: 10px;
                }
            }
        }
    }
}
media/editor.panel.section.less000064400000002434151167475110012555
0ustar00(~"@{MediaManager}") {

    // .panelSection (common) start
    .panelSection {

        text-align: left;

        .panelSectionHeader {
            border-top: 1px solid #ccc;
            padding: 8px 16px;
            cursor: pointer;

            .panelSectionTitle {
                .text-shadow(1px, 1px, 0, darken(#fff, 5%));
                position: relative;
                height: 16px;
                line-height: 16px;
                padding-left: 8px;
                .unselectable();

                > i {
                    .icon-media(14, 2);
                    display: block;
                    position: absolute;
                    width: 16px;
                    height: 16px;
                    top: 0px;
                    left: -12px;
                }
            }
        }

        .panelSectionContent {
            padding: 8px 24px 16px;
            display: none;
            position: relative;
        }

        &.active {

            .panelSectionHeader {
                padding: 8px 16px 0px;

                .panelSectionTitle {

                    > i {
                        .icon-media(14, 4);
                    }
                }
            }

            .panelSectionContent {
                display: block;
            }
        }
    }

}
media/editor.preview.png000064400000024437151167475110011321
0ustar00�PNG


IHDR,,N�~GtEXtSoftwareAdobe
ImageReadyq�e<hiTXtXML:com.adobe.xmp<?xpacket
begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP
Core 5.3-c011 66.145661, 2012/02/06-14:56:27        "> <rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmpMM:OriginalDocumentID="xmp.did:3F1B858708206811822ADDB88CA433DD"
xmpMM:DocumentID="xmp.did:0A9B4D67DABE11E1B3DDD613A143814D"
xmpMM:InstanceID="xmp.iid:0A9B4D66DABE11E1B3DDD613A143814D"
xmp:CreatorTool="Adobe Photoshop CS6 (Macintosh)">
<xmpMM:DerivedFrom
stRef:instanceID="xmp.iid:3F1B858708206811822ADDB88CA433DD"
stRef:documentID="xmp.did:3F1B858708206811822ADDB88CA433DD"/>
</rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket
end="r"?>p9��PLTE������������������������^)%)IDATx�읋v��D)Y��������.g�ȴ}��9�ij5�@?��///���6�����r�������_��__/�o�����//߾�[����ǟ����r�1ǧ��/����9�����}|�s����\�g��?s�^����}|�#�3���_��ᄒ�����__�y�Ռ�^.�8���q_��\����/9���6X`q�����M�
��8(����;�K.k|�op���q�q�\j��>���ۀi�f�9�5.x@�c��||k\�f
Ϳ�
��8G�6�=n:���\ø����|�<�@<��qg����9]����k���q�q���$�4�|��7�����#����0��9�~����Q���w�N%�9n�-�W6a)���&����hy������`-�����80f�K8��)r߾��K�ɀ�i����(8&3�:.�ם[��Qe���8v�u����o�s�a�a�m�Mw����l���0�|�f1N7N�M�����I�%�q;��8��
��	�U@��k�1#.f��=Ph�9s`����q\����#�m��Vnm|q����p�^V1'�%6p~�6.z�b�ɫ��6n3��P��,��Y���5KCn0xL�9*p.2���-ȭ�;�=r/�����?��(�0�\R�r�iN����tX�c���b*�t�ԁs�M���k��-�����E/�q�pp�rt��lq3rm8W�t�u,]��<pl���b�?&���0'��[#�ĀC"�m��j��N�X�}����]������d�a�O�&K8��3��5�ݖ�
�X\j��Hէ�u'e�Nb�[L#ټq�<~G���<�Aj���Y�c�.���s%@�T�{�塳��~�1�$6X��(|�syl���$�+���s�7�"�s\���xI�^�Bc���<�s\C��\g~s,%,"@����/��ck[��B��c�`-�5�%�-;I�q��ܸ�,���&|���"��[<�m��e�ם�v�-I���4Y.�$�7�H�Ƒ���qh�F���}	�`-��Ж%g���[v����7�4G�.p&�S�H�0-l�y�Rf�`c�q&s;q&��IV����)�
�y��e�V�;�v��ŬbnI���l�	��Tj�S�q9H�������>&?�+��6��t�0�\{���o/�k������ؒ6=����ۜN�7���h�1�@MBp���LƔ�8H�ƥ�I
�u�%4
v�9N����G�rHQ���n�N��+G4!$K{�uy���9o�)O{�J.��%Kj.u�fj97�%��P��<>��`����9��$r
I��!e��$�~}�k�?��y6u`�u,_q+���E�Nߚ.!�2h�Ԥ
O���4����a/�Ԝ��l�2��y���m�!r��0(�Xu�
�Xn���0���1��W��6�d����>)7n-�%�.����[l?�Y$W,�Z��,�"��t+�%�L�ij�~Y��`��w�Ch<]@O��4��[����L����u���X�2���$E����e[�r�ۀ4�\e����&nO�:���@��`-�eZ?��@o�	���P&o]ڹ�l95X��7bZ93)e�ܤ��&U��7Cw�٫���ք��p
�`rm<�����`-�%ř�=��t\���@�
ܦ��E�������;X��Vig״3��/�4�>>�u�NZ�;;R&��s�$ݯ�o��b��'���vw��N�I��2��hL��ד��D��zy�#1\J�=�,��1��#(��<�F7��f|�
�y��aB��+gh,[7�"hn�&0R|�͆׻�M����bo8EZ���NGS���tB(�j��:'�7S�
R�Z�H��m��`-��J�"Hh�M�R�
9L��S�LprI���n"����Weܦ����$s�«c3nU���Ot{�s��)���uo��rS�h@�����rHћ��%#B�l��C�a���ŝ��G��U6X+`Y>�L��0�/��W�����H��`����M��|�u��HZ��}$�b{�$����1��EX���&���M瘆2��Y�!���9�Cx>�����4�t⫑n���V?��MK���!��()�.�n
��LS��:�a����w$֒Ή)e��$m\���vWx�q1����Y��h�L���-Id
0�1	L�+��ܪ��z��K
7�Ðkv?l{�u�%��MA�Ϝ�7�v&��
�`���`-�e��meYdc6!����8�֦d-����*�6��?���T6s��i�I�����y��KOʶ�)����t���
�o�u,^_�~���f�ַ�J��؟K�3�.%n���RM��WXMg$,P��t1&M�'��.҈Z�M�����2ץtJ��,;@+��6�)&�^HTg�
)}�����M��S�Y���j�`���)�ڀ�:9i�������+�Ï`�
�1� �p~7!e��A
�q���b���tБV�����<ϒc-]6�n�`-�e:�[���9����e���D��e�W9�A@W�C�lJ�H�Xϥ�P��
�0s��̤��=�R��}+S�&��7X`aNRB0K�
���,Y
k�!�f����$�Z�gc���cJfK.Je´���r�]u��HS��"ve;B�7X+`Q%il�	�n�Z�,!�)�[���w!��鞱�KE�9e�N�d���Q^%)i��rU^6�}�]4�h���zOJn���sZ����[�g(.˩-�H+W�$͏���\�
�
X�Z3�u�Z��[�M�[TB(���[(�B^d+�uEs�v"q�[����Bv��v&��T��,(�4��]��^7�`�w�]OZ[aI粽���n�SS��q���4�h&�*yd�L�2?-�]f0��(W@ɴ�"G*y�m�	�E�O�k�`-�թ��\�˹R���%�|N�6�'iB�O(�ЮM3��8.U���禝%"�2�U���Kݡq��7[f�Qj�{�`���ns��rlsr)��6�k���ZKR
[<�I_�\R��B�+�6}��~��u�ϗ��`��e��'6��p(���y�q)M�ds���2��E�#�e�鴨���?)-7Է�6�	I�Ȃ��a�.S���e��֓��d/=��9��
-�j�BQ\O�Q�ˣR�Hl%�;��R2�m]�
�
XJT���%�r#��e�\�I�����VIj��Z���z���;:a��
�1 W����Pȹ��-P+���Z�[�WI
��	.A�70�����ݘβJ�'�ҍ�����M$�Ճ΄ĵbŔRf�b��.�\+��sN[ޮv��V��)R#�:�.������Ѻ�,�Y|-C!c�֤J�F�đ0�9�8�a�%UC��7��C�|��\�ߥ���`��e���J��3d�V7۬c^mBJ2Y��8��mX<�����Ȓ���
�
XN�r�1���EAɱ�F�qw��Л{g�C�FlS0myW��`��%YQ�iSJWJ�r|�����a<�.��g�/TXǔƩ���?i��l�k�G���|M?����,�|
�6X`�n�8���{1(K��<H�J3J��r�mLn��yh�rL�k,���J��W\�7�K��L��Xn"��SI���c
wN�Y(�3��Jڪ�נ��4��7��(�`�`.=�R���`��Q�9:7*��8*��qT�2t�:��B�Sim�A���^6X�����8>)�3��҂$�����Dd5,Q
��MJ��*l�g.��8�$���W!;MR�4tvd��~4�d���s�
��
�F�c���Px�-�	��i+��ꦎ������Y�HJ��<X��
��0=��PVNқ�@���b@P�H�P��LN��Fc赶�C%�X�Pi����{!aT�:�F��h�
�
X��\�mK���Iuz�2��>�.�˴>x
��R�`���X*@�6�eWQ�﨩�XWU��0�0�J`��ĩ�
���h%X�
H-J�s��Ƅ�G�
²��(��Z��H2���3�Lq|m��T6D;�R?�~S��@R4N�1�H��A�`���s�H��y�@�.?�,�6(�$H����E��GҖ�c�(n�:)�`Ҕ[.�Ǒ�J>j�E��`-�e��3i6)d��pTQn�Sa���)���$N�/�,G�0\)�E5��[�!��*�j&�D]\܏�L?���
��`��v�8o���\RR!!�e7Qz��-�`��3��	i//�NU��x����x�
�
X}˶�,�t�6ΦN4Sz�6�	�p,c����VN��v{>(�nJ14F��X��X:���Y��)l�N�����aoS�i1ub�ց\�v~N#w.�IRn���
�nw���K;�T'}I�l�[���v�����7X`eI6��a#��T\C(�!�"�:��̲r9jj�Rgi�PD�H�tZN�D�9qC0lG������Te��奈�2��m��2�7��#�c�㿥���:��)?ؒn�e�3鮴�dYC�5�ETJ����?N`��V\�.�m"Y�������I�
�c�S�)G�ko��0Z>O��2�#iY]��J�n��zF�	���M��r���h99�(t��k
���i'�̱�<2�k'�dž�Q��m���n�N��ZR��r�#�+ƽ�W�pH�#!A	�!��A�cDl�7��!��w��V^vC���A�Ǚ�B��%g�h��t�����ZB���68��#wH�2\E[z�K�c���g`��씤�fsJ���V��ZK�L\7%R�-@�
%xVX
����TXK�0��E�&����N�B`����צ�GS
�N�KX�q!\hy���"h�W���4X?��?j?�
 �0虭�zMQ����k,ÚYX�`	�P�߽�aI�'�76X�`�|�Ku�
P�L�d{���r�=s�	&=`�"E�agy�=���爆y���MJʽƧD�$�H1�ToB��M�G$m��ʦ�<}B�NO@�8J�A�9�d�
�RlǑ@.�А(�!](å����iڙ�Ys2-0���n����C���F?�`-��D��ц>���$s
��6��|�I_���e�o������>H,	�\Z������&�S�b��wSẵ�e�\'`pU[R"�)b��e	g0��L�eH�$D���Vb�`-�����d��5L�WS��M�T"�
�
X��.��V�c���z�H�뿌��`����J����@�RB�`h�RӜ�%�
�X�m��Պ�,JYo���Z�c��3i��@	�3�8��]Fz�m����.�R�����`�K������n��"\O�fP�0��
20����&c�M�$�}��\[�o��4X)�*����d�&r�@38r��	g.�R��c;d_��%�箌�f�ߍ�bS>a��L{S�h�S�l���A��y<,tV���S�nY�V�l��&���(Si�:
��`�����+��N��+��mV���%�G�����`-�����&��s������p��n(��l��]�_�d�0��d��l%��ڙ�6���Ҝ�僺=�4a���2�k	��82�w���렄�e�"k���l�آ��dJU������֙>G�Uƒ��u�gҦ�,DZ���
�i�~��*u��\>m�%����kM�H=J!4�#?
�!ߢ���[Ɓ�H��ݻ�3�Hm6U�@f��Yf�Nm������䏖���p�����F����Y�iꖪC�
A�Qqƅ�f�=F�d�t˴�~�
�i��ٚ��e��.#t2�
�q�$�i���J&�;�s�h��w�K~�v���H�̈lK����g��<*Rw�����w7u��V���<3,���\G��͹�V7[&�,�]~��d�e�-�]Jɣ�l���u���0[4g�OH|-��ZK�N7@��iR�JZ�vAAC�(�Ħ�vk'�[.�[��H�m����!��
����4(W�rrd8瀦KAH�i�
�X`��
�<F��kΏ�"]��Yn_]r��c�6XK`Q�Ⱥ��ַ��[B��d�L���Bh��K5��P�L�f$ۃ2f:ʹ���i;���PP��n�Ͳ��u9n�l��`}�{�ӝwb���{`��r>�=��,�����ao�A��_5���|��I�s�I�Z~��k,_KJO�tZ6H�	M�����N@�
��"o'�Xnߖ'S�@�m�n#����hm��>RE\o������'�r�`���I`�*s
���l?o����!I������##����
2L4}*V�-q6h&�V
c��@�#
lx�W�6T+]m�{�7X�`9T�SZN��J�n雱�)��tS*��wuy]�)��2�M������n�{�!��+-�##
twkB�,ߔh6X���|n�k��wh,2>����@N��4m{�cc{�<RY��Ԯ�OK��:�T��Ĝ�|���k,��4I�%��r:ǰ9rOy:�L+l�
"�ܢ!2��g�
�v
�JϜ[N,�w����続�������*��~M
F��~y
���l�KC��S��:
�ᒆ���
��A�!|����R��T�6�B�M���?uZ�fO�)��K���k��E��'���LA�?��`)���-���<��}�f���S�e���JI�O��[A7�"Q��'��5��D�-����<bpw��gc�\�QYۆpTʷ�d���[l�"��
�V�'e�q�6\��Т�])�f��8w�)�`�˲�#��B8fo�w�ֆ��$���mܤ�H�u�L&��S�2���2�е5���v���2���R/�z����t�)�`���$C�5dq
��`����x�����wb.�&�iv@wS;�5FmS���n�zܐ����s
uIS�&�m������rj���6X+`1^�!Ϥz�ғ~-�{��
��.�le)s��tJRi$�	q�=.�4K���%1w���x����Fnm�V��dMQ3��-��=��(�Cy2�3����?z��"ñ�Z��#�l�$�J�#�Q�y	4�
T�+Rm�	��l��w���1(D��]�o�k~�1�IxTz��d�m~�s�
�`-�մf�je
Iѱ8K;c�[��6ڴL:�H�[��p75SC+X�
��d4Hd2K�	꣄�.52��[�Ъõ�7�`��(�d1'{I�Q�7���,�d7-�[6'�cJz&Ccr|
s�_�P�
�J��ٴpPfCP���m��=ͮ�����`�R�[�������r�:�%�es3.��3"���-0��HLQD��)e�{Ąip�Jf��я7X+`q!��v��X1\@D��ԉ�����-��:�U\�h�2��s���7�R:�aV�{����k�q�
�Xl���_�@�Py4�ฉsk���"�E���J1�����2|�w���)FGhI�liV���7$������0��;��Z�yy�
���J�2f<�v1u��1�G@h�!�~��k,����A��vfY�)�UR�K��H�v�(��x��b�ŀr�6�r�7�r��#K�����S�rZq��O7�6X`�f3�6
C�uzԨ�wZ9:]�
g��e+UH����rt��g��8\���$=���j:�n�	&�FuKn���E��%��Z�he���(no�y'l�dYW�Ց01����)$��I��`���1DM���P��ͤ�g��6X'���u1{���ؖnCֻ�W6X`�`���o(?3-;��6K[1�c��K,�p��|��p�i������g�k��Xb
hK���+N�Ԇ[-K~o.�!�^�R�\���7hB:�sc3AU�����LYE�:�4�E(�t��1���G`v]X6X`�%�.J����v����3n"ۮ�~�^!�䘡�v��V�������	^�!�n�1���y\>&e�l���p��C���Y6X�����(�D�*
�ǹsI,���BX����/�F�jd�`�g�P��H,�	�e��'!�V�-���q&ɕT��E#�~/�l�����nMC�F�<p]p�S
{�j�9����R#of��`��:
I�(�z���L���m̥�Pԭ�
�[~ݨ�\�ڨ�
�
X��$N�h��m��i=�	��bM�HY�ҧ��
�Bģ�vE�<��\6X+`�íl���sHd8,5�";!����2ܬ%�lR!�"��,�$Ǐ�
�F&H#�.5`�]Jiꦸ�7)L��o�N���7�-q�$�L���9�	Fњh35۲?�V�(��w��Y��#�2	�?�A�ۑ��y�A�����M��6X���f#Շ�NhB�@	<K��XZ�L�l��$�6X+`a.�6�@3U�������Aq��aD^�v1-Q�e&.�2fA��]Z�k��v1f�im`����ci��$����
�X�P����:�pJe�US*+A7�%��ʜt�M�@�s�㭹��(�mi��.�"�Jy�1}�:̊�:J�q��=�:��FVs�@,�����ܸ�-���|GOڴ�#T�TޙƝ-"rbI~��дy��
�i�v	�<a���[?cc[����,�����0��J�rQ��y���#��:��
�pGiO#�TJU�)�Z�

c�SM\*�^�n��
�O��V�y�h����gi#�s�wD�%�Zk��V�㟠b�#�E��c��>��=�:�=Rv1?�`�3Z�����)�8�1iC�v%	Le{m���Mr4���l����.�GD�H�7��<
�n��`Z����H�`�-eдl��c���/-�6���.4n�qiH�1e1���6X���ǂBҕ�����L@�Np�qt	B�Ο�ٖ�G�Rz���1�G��9K�!)����|t
PY�Y^*������
�I��lh[8l-��2�1ɖ��D���Ĝ�r(^�c��R�$��NV�G1)%?M[B�C�lJ�#v���w�X�t�
�X�+R�w$|V��q�-Ѩ؞��
�Xm�	�m��bK�g.�!�$�q�4Lt�%i�f�r���B>Y&ly�J�h���)b�]�)1�\��o�B�=��`K\�)��<��A�O��ߕ>��˼�K)�!mDٗ��-zR�e����`-��r���%�]y�}�Sf�\i�VE	-���J��X�t�R���(CM)]Is�x�X�
�z����
p�k�Xژ7Xk`Ie�D�[j���/9x�>.�V<�|�l{�5W�ذ�����x��Z��1*��Mg�IEND�B`�media/editor.video.js000064400000007651151167475110010575
0ustar00// module: start
EasyBlog.module("media/editor.video", function($){

var module = this;

// require: start
EasyBlog.require()
.view(
	"media/editor.video",
	"media/editor.video.player"
)
.done(function() {

// controller: start
EasyBlog.Controller(

	"Media.Editor.Video",

	{
		defaultOptions: {

			view: {
				panel: "media/editor.video",
				player: "media/editor.video.player"
			},

			player: {
				width: 400, // 16
				height: 225, // 9
				autostart: false,
				controlbar: "bottom",
				backcolor: "#333333",
				frontcolor: "#ffffff",
				modes: [
					{
						type: 'html5'
					},
					{
						type: 'flash',
						src: $.rootPath +
"components/com_easyblog/assets/vendors/jwplayer/player.swf"
					},
					{
						type: 'download'
					}
				]
			},

			"{editorPreview}": ".editorPreview",
			"{editorPanel}": ".editorPanel",

			"{playerContainer}": ".playerContainer",

			// Insert options
			"{insertWidth}" : ".insertWidth",
			"{insertHeight}": ".insertHeight",
			"{autoplay}": ".autoplay"
		}
	},

	function(self) {
		var $Media, $Library, $Browser;

		return {

		init: function() {

			$Media = self.media;
			$Library = $Media.library;
			$Browser = $Media.browser;

			var meta = self.meta();

			var insertWidth = $Media.options.exporter.video.width;
			var insertHeight = $Media.options.exporter.video.height;

			if (insertWidth!==undefined) {
				self.options.player.width = insertWidth;
			}

			if (insertHeight!==undefined) {
				self.options.player.height = insertHeight;
			}

			// Panel
			self.editorPanel()
				.html(self.view.panel({
					meta: meta,
					insertWidth: self.options.player.width,
					insertHeight: self.options.player.height
				}))
				.implement(
					EasyBlog.Controller.Media.Editor.Panel,
					{},
					function() {

						// Keep a reference to this controller
						self.panel = this;
					}
				);

			// Preview
			self.editorPreview()
				.implement(
					EasyBlog.Controller.Media.Editor.Preview,
					{},
					function() {

						// Keep a reference to this controller
						self.preview = this;

						self.initPlayer();
					}
				);
		},

		initPlayer: function() {

			// Show loading indicator
			self.preview.showDialog("loading");

			EasyBlog.require()
				.script($.rootPath +
"/components/com_easyblog/assets/vendors/jwplayer/jwplayer.js")
				.done(function($) {

					var meta = self.meta(),

						place = self.place(),

						id = "player-" + $.uid(),

						options = $.extend(self.options.player, {
							id: id,
							file: self.meta().url,
						}),

						player = self.view.player({
							id: id,
							meta: meta,
							options: options
						});

					// Append player container
					self.preview.container()
						.append(player);

					self.player = jwplayer(id).setup(options);

					self.preview.resetLayout();

					// Hide loading indicator
					self.preview.hideDialog("loading");
				})
				.fail(function() {
				});
		},

		meta: function() {
			return $Library.getMeta(self.key);
		},

		place: function() {
			return $Library.getPlace(self.meta().place);
		},

		setLayout: function() {

		},

		"{self} cancelItem": function() {

			if (self.player) {

				if (self.player.getState()=="PLAYING") {

					self.player.pause();
				}
			}
		},

		//
		// Insert video
		//

		"{self} insertItem": function() {
			var options = {
				autostart: (self.autoplay().val() == '1') ? true : false,
				width: parseInt(self.insertWidth().val(), 10),
				height: parseInt(self.insertHeight().val(), 10)
			}

			$Media.insert(self.meta(), options);
		},

		resize: function() {

			if (self.player) {
				var width = parseInt(self.insertWidth().val(), 10);
				var height = parseInt(self.insertHeight().val(), 10);
				self.player.resize(width, height);
				self.preview.resetLayout();
			}
		},

		"{insertWidth} keyup": function() {

			self.resize();
		},

		"{insertHeight} keyup": function() {

			self.resize();
		}

	}}

);
// controller: end

module.resolve();

});
// require: end

});
// module: end
media/elements.less000064400000025232151167475110010343
0ustar00/*---------------------------------------------------
    LESS Elements 0.6
  ---------------------------------------------------
    A set of useful LESS mixins by Dmitry Fadeyev
    Special thanks for mixin suggestions to:
      Kris Van Herzeele,
      Benoit Adam,
      Portenart Emile-Victor,
      Ryan Faerman

    More info at: http://lesselements.com
-----------------------------------------------------*/

.clearfix() {
    zoom: 1;
    &:before, &:after {
        content: "";
        display: table;
    }
    &:after {
        clear: both;
    }
}

@sprite32: 32px;

.spriteGrid-32(@x, @y) {
    background-position: -((@x*@sprite32)-@sprite32)
-((@y*@sprite32)-@sprite32);
}

.horizontal-gradient (@startColor: #555, @endColor: #333) {
    background-color: @endColor;
    background-repeat: repeat-x;
    background-image: -khtml-gradient(linear, left top, right top,
from(@startColor), to(@endColor)); /* Konqueror */
    background-image: -moz-linear-gradient(left, @startColor, @endColor);
/* FF 3.6+ */
    background-image: -ms-linear-gradient(left, @startColor, @endColor); /*
IE10 */
    background-image: -webkit-gradient(linear, left top, right top,
color-stop(0%, @startColor), color-stop(100%, @endColor)); /* Safari 4+,
Chrome 2+ */
    background-image: -webkit-linear-gradient(left, @startColor,
@endColor); /* Safari 5.1+, Chrome 10+ */
    background-image: -o-linear-gradient(left, @startColor, @endColor); /*
Opera 11.10 */
    filter:
e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d',
endColorstr='%d', GradientType=1)",@startColor,@endColor));
/* IE6 & IE7 */
    -ms-filter:
%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d',
endColorstr='%d', GradientType=1)",@startColor,@endColor);
/* IE8+ */
    background-image: linear-gradient(left, @startColor, @endColor); /* the
standard */
}

.vertical-gradient (@startColor: #555, @endColor: #333) {
    background-color: @endColor;
    background-repeat: repeat-x;
    background-image: -khtml-gradient(linear, left top, left bottom,
from(@startColor), to(@endColor)); /* Konqueror */
    background-image: -moz-linear-gradient(@startColor, @endColor); /* FF
3.6+ */
    background-image: -ms-linear-gradient(@startColor, @endColor); /* IE10
*/
    background-image: -webkit-gradient(linear, left top, left bottom,
color-stop(0%, @startColor), color-stop(100%, @endColor)); /* Safari 4+,
Chrome 2+ */
    background-image: -webkit-linear-gradient(@startColor, @endColor); /*
Safari 5.1+, Chrome 10+ */
    background-image: -o-linear-gradient(@startColor, @endColor); /* Opera
11.10 */
    filter:
e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d',
endColorstr='%d', GradientType=0)",@startColor,@endColor));
/* IE6 & IE7 */
    -ms-filter:
%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d',
endColorstr='%d', GradientType=0)",@startColor,@endColor);
/* IE8+ */
    background-image: linear-gradient(@startColor, @endColor); /* the
standard */
}

.vertical-gradient-3 (@startColor: #00b3ee, @midColor: #7a43b6, @endColor:
#c3325f, @colorStop: 0.5) {
    background-color: @endColor;
    background-repeat: no-repeat;
    background-image: -webkit-gradient(linear, 0 0, 0 100%,
from(@startColor), color-stop(@colorStop, @midColor), to(@endColor));
    background-image: -webkit-linear-gradient(top, @startColor 0%,
@midColor @colorStop, @endColor 100%);
    background-image: -moz-linear-gradient(top, @startColor 0%, @midColor
@colorStop, @endColor 100%);
    background-image: -o-linear-gradient(top, @startColor 0%, @midColor
@colorStop, @endColor 100%);
    background-image: -ms-linear-gradient(top, @startColor 0%, @midColor
@colorStop, @endColor 100%);
    background-image: linear-gradient(top, @startColor 0%, @midColor
@colorStop, @endColor 100%);
    filter:
e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d',
endColorstr='%d', GradientType=0)",@startColor,@endColor));
/* IE6 & IE7 */
    -ms-filter:
%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d',
endColorstr='%d', GradientType=0)",@startColor,@endColor);
/* IE8+ */
}

.vertical-gradient-4 (@startColor: #00b3ee, @color1: #7a43b6, @color2,
@endColor: #c3325f, @colorStop1: 50%, @colorStop2: 51%) {
    background-color: @endColor;
    background-repeat: no-repeat;
    background-image: -webkit-gradient(linear, left top, left bottom,
from(@startColor), color-stop(@colorStop1, @color1),
color-stop(@colorStop2, @color2), to(@endColor));
    background-image: -webkit-linear-gradient(top, @startColor 0%, @color1
@colorStop1, @color2 @colorStop2, @endColor 100%);
    background-image: -moz-linear-gradient(top, @startColor 0%, @color1
@colorStop1, @color2 @colorStop2, @endColor 100%);
    background-image: -o-linear-gradient(top, @startColor 0%, @color1
@colorStop1, @color2 @colorStop2, @endColor 100%);
    background-image: -ms-linear-gradient(top, @startColor 0%, @color1
@colorStop1, @color2 @colorStop2, @endColor 100%);
    background-image: linear-gradient(top, @startColor 0%, @color1
@colorStop1, @color2 @colorStop2, @endColor 100%);
    filter:
e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d',
endColorstr='%d', GradientType=0)",@startColor,@endColor));
/* IE6 & IE7 */
    -ms-filter:
%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d',
endColorstr='%d', GradientType=0)",@startColor,@endColor);
/* IE8+ */
}

.absolute-center(@offsetTop: 0, @offsetLeft: 0) {
    position: absolute;
    top: 50%;
    width: 100%;
    margin-top: @offsetTop;
    margin-left: @offsetLeft;
}

.bordered(@top-color: #EEE, @right-color: #EEE, @bottom-color: #EEE,
@left-color: #EEE) {
    border-top: solid 1px @top-color;.box-shadow(inset 0 1px 0
rgba(255,255,255,0.1));
    border-left: solid 1px @left-color;
    border-right: solid 1px @right-color;
    border-bottom: solid 1px @bottom-color;
}

.drop-shadow(@x-axis: 0, @y-axis: 1px, @blur: 2px, @alpha: 0.1) {
    -webkit-box-shadow: @x-axis @y-axis @blur rgba(0, 0, 0, @alpha);
    -moz-box-shadow: @x-axis @y-axis @blur rgba(0, 0, 0, @alpha);
    box-shadow: @x-axis @y-axis @blur rgba(0, 0, 0, @alpha);
}

.text-shadow(@x: 2px, @y: 1px, @blur: 2px, @color: #555) {
    text-shadow: @x @y @blur @color;
    -moz-text-shadow: @x @y @blur @color;
    -webkit-text-shadow: @x @y @blur @color;
    /*
        filter:
progid:DXImageTransform.Microsoft.dropshadow(OffX=@horizontalOffset,
OffY=verticalOffset, Color='@color', Positive='true');
        -ms-filter:
"progid:DXImageTransform.Microsoft.dropshadow(OffX=@horizontalOffset,
OffY=verticalOffset, Color='@color',
Positive='true')";
        *zoom: 1;
    */
}

.text-overflow(@property: ellipsis) {
    -o-text-overflow: ellipsis;
    -ms-text-overflow: ellipsis;
    text-overflow: ellipsis;
}

.rounded(@radius: 2px) {
    -webkit-border-radius: @radius;
    -moz-border-radius: @radius;
    border-radius: @radius;
    -moz-background-clip: padding; -webkit-background-clip: padding-box;
background-clip: padding-box;
}

.border-radius(@topright: 0, @bottomright: 0, @bottomleft: 0, @topleft: 0)
{
    -webkit-border-top-right-radius: @topright;
    -webkit-border-bottom-right-radius: @bottomright;
    -webkit-border-bottom-left-radius: @bottomleft;
    -webkit-border-top-left-radius: @topleft;
    -moz-border-radius-topright: @topright;
    -moz-border-radius-bottomright: @bottomright;
    -moz-border-radius-bottomleft: @bottomleft;
    -moz-border-radius-topleft: @topleft;
    border-top-right-radius: @topright;
    border-bottom-right-radius: @bottomright;
    border-bottom-left-radius: @bottomleft;
    border-top-left-radius: @topleft;
    -moz-background-clip: padding; -webkit-background-clip: padding-box;
background-clip: padding-box;
}

.opacity(@opacity: 0.5) {
    @opacityPercentage: @opacity * 100;
    -moz-opacity: @opacity;
    -khtml-opacity: @opacity;
    -webkit-opacity: @opacity;
    opacity: @opacity;
   -ms-filter:
~"progid:DXImageTransform.Microsoft.Alpha(opacity=@{opacityPercentage})";
    filter: ~"alpha(opacity=@{opacityPercentage})";
}

.transition-duration(@duration: 0.2s) {
    -moz-transition-duration: @duration;
    -webkit-transition-duration: @duration;
    transition-duration: @duration;
}

.rotation(@deg:5deg){
    -webkit-transform: rotate(@deg);
    -moz-transform: rotate(@deg);
    transform: rotate(@deg);
}

.scale(@ratio:1.5){
    -webkit-transform:scale(@ratio);
    -moz-transform:scale(@ratio);
    transform:scale(@ratio);
}

.transition(@duration:0.2s, @ease:ease-out) {
    -webkit-transition: all @duration @ease;
    -moz-transition: all @duration @ease;
    transition: all @duration @ease;
}

.transition-opacity(@duration:0.2s, @ease:ease-out) {
    -webkit-transition: opacity @duration @ease;
    -moz-transition: opacity @duration @ease;
    transition: opacity @duration @ease;
}

.inner-shadow(@horizontal:0, @vertical:1px, @blur:2px, @alpha: 0.4) {
    -webkit-box-shadow: inset @horizontal @vertical @blur rgba(0, 0, 0,
@alpha);
    -moz-box-shadow: inset @horizontal @vertical @blur rgba(0, 0, 0,
@alpha);
    box-shadow: inset @horizontal @vertical @blur rgba(0, 0, 0, @alpha);
}

.box-shadow(@arguments) {
    -webkit-box-shadow: @arguments;
    -moz-box-shadow: @arguments;
    box-shadow: @arguments;
}

.columns(@colwidth: 250px, @colcount: 0, @colgap: 50px, @columnRuleColor:
#EEE, @columnRuleStyle: solid, @columnRuleWidth: 1px) {
    -moz-column-width: @colwidth;
    -moz-column-count: @colcount;
    -moz-column-gap: @colgap;
    -moz-column-rule-color: @columnRuleColor;
    -moz-column-rule-style: @columnRuleStyle;
    -moz-column-rule-width: @columnRuleWidth;
    -webkit-column-width: @colwidth;
    -webkit-column-count: @colcount;
    -webkit-column-gap: @colgap;
    -webkit-column-rule-color: @columnRuleColor;
    -webkit-column-rule-style: @columnRuleStyle;
    -webkit-column-rule-width: @columnRuleWidth;
    column-width: @colwidth;
    column-count: @colcount;
    column-gap: @colgap;
    column-rule-color: @columnRuleColor;
    column-rule-style: @columnRuleStyle;
    column-rule-width: @columnRuleWidth;
}

.translate(@x:0, @y:0) {
    -moz-transform: translate(@x, @y);
    -webkit-transform: translate(@x, @y);
    -o-transform: translate(@x, @y);
    -ms-transform: translate(@x, @y);
    transform: translate(@x, @y);
}

.unselectable() {
    -webkit-touch-callout: none;
    -webkit-user-select: none;
    -khtml-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none;
}

.no-focus-outline() {
    outline: none;
    &::-moz-focus-inner {
        outline: none;
        border: 0;
    }
}

.word-wrap() {
    // white-space: pre-wrap; /* css-3 */
    // white-space: -moz-pre-wrap; /* Mozilla, since 1999 */
    // white-space: -pre-wrap; /* Opera 4-6 */
    // white-space: -o-pre-wrap; /* Opera 7 */
    word-wrap: break-word; /* Internet Explorer 5.5+ */
}

media/icon.media.png000064400000064133151167475120010357 0ustar00�PNG


IHDR�`+a�<tEXtSoftwareAdobe
ImageReadyq�e<hiTXtXML:com.adobe.xmp<?xpacket
begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP
Core 5.3-c011 66.145661, 2012/02/06-14:56:27        "> <rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmpMM:OriginalDocumentID="xmp.did:CBAE10392E20681188C6DB71831FAD1E"
xmpMM:DocumentID="xmp.did:0BB70D2DFE2711E18408E89263B9800E"
xmpMM:InstanceID="xmp.iid:0BB70D2CFE2711E18408E89263B9800E"
xmp:CreatorTool="Adobe Photoshop CS6 (Macintosh)">
<xmpMM:DerivedFrom
stRef:instanceID="xmp.iid:01801174072068118A6DAE9BC8780012"
stRef:documentID="xmp.did:CBAE10392E20681188C6DB71831FAD1E"/>
</rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket
end="r"?>Z��d�IDATx��XW��It5���M�d�I�)��Xb���
VĆ(����]�F�NL�b{���bC�!F;�(�b4*ҿ��
3d��)�½���<�3�̙;3瞹��;ell��?o�[⍷�o��}��w�\y��2����~V��>Ic��q"�\�V
���̃f#��$..�L���ʕ���u����"��~��[�~x�}B�X�>��������.�d���m�c�̟,]	ͳ�c_ˎ�'Cv젝��ԫW/�dyxz������Ppp0m߾�8�5�������1�|S��cM`�
��o��^1��Ms'F�����'�U�O+TW$�M�II+�ȱ�A`�dD���-�wzs�.�j����o�����ׯ��;wi��Ŕ��D)))�h�"z��ݺ}��9B�W�^�o���,�GV,���R�ڵMn�1�wY��M!�~�É�)K�����e'I#i�9�X�Q�J��,b�gU+�<���!�3��:
���k�O���}n���K��d�
�K�O��K/)FP�?zL�?��Ǐ����'OҼy�^)�Ym3�_א�v+7%Y5Y�X�XY���/�����<���@gΜ����4��ފ�+Dx��|E��#'����?�	�c�X�#=�'O�,���W����
�UP�Or=r]()ևD�o�I��P;WO�%K�d'���<y��3fΠ�[��l��4{�l�?>͟7��-[J۹��t��a�z�*M�0�$0�����;U��v+�����=둁�=̪T�r���>��Ç����
�FEE=�v��o�����]>4�'����GNb�n�|�,Bp?��X�>�W��ԤE{�Y��_L_�:��>I���g��g�RSS��?^3��x�i��O��\�\J�u"��+�n�-
��O?QRRR��}ƺ��s'�N�E�I/m۶�""��իW�ƍt��m�p�<�as8x���j�f���߫�֬f�!������ܹsJ���{��q$�`M�'(!1�"##��	���%GG�L�/��,H4X��>���H>}䯉]{r��A;�g2��.�d��@}$P��j���g��ѣ5x��e
��Q�Gr~��?�d�gE��ƅ�����U��w�
�F��֯ib�����M�39
8f�4�� ���
��=iذ���w���)S�w�o�5��&`�p�J!��X�Xi�$V�z�X���7�g���Liii�%!V���;v�����l�o�5�EGG����3�?��c�r�����|�#Ҍ���U�Z+��i&Po�d)i��(�Q�J��KHHXڴiS�֪U+�
2Z�#���a����������$�mK�˩�W��5#(�̙3���;�<
��D׭_G�w�����ᣇ��@|kF7߲������=Q���PM��5,�NåE���)Y3��g%�'�}��:~��U�{�����>���B�KL�.◛��$���XF����>���W������e����>:��c#F➫V��͌q?�1�r�&M�(�S=?�3��:�ߞd�p��l�{5I�=���o�1�eڴi�i�&Z�`�2�cO	#_��U�|���0��7��dʍ�0����Ě�J�<���J���Z�J���F"�a%
�����ϋ�����@@�#��x�u�0�����M
��C���Ӛ�峌e�Xsń5j�H��-��i��p��r^u���@�er�)bNk�����^נ��.u�z�zn�K����e��Y9��<yB?��Q���6m�D�xB1��j���P������&�B1�|;�x��%��9럺4bg�Dina:x�/0%5݃r��tQj��ž9h2�wY������W��rU��[�f����5�e�^��N�U�~}�D��oN���={��=9�j��*Y'?�}�§ۑ,�N��D���ܦ!�wi��{4f�=�~���#e�����O��X�g�k�}N%�@�	5�3���	x�&3_Y��sW������}�HS�ެ����ǚ�ES�5�)g��
!������ʜ�9I�cA��F!ᔻt��P���Mc�`��m{Gg�N��(���(`����W�"5+3g��ϰO`Vǔ��E�#��<�u���OQ��P����V���u`@�ŧ�;�{R��D�$�7��-Z}�m<��\���+Oh�/�3�~��>b3���n��o��������N(����j5��
<ت
�Ӭ��6R
�h^�s+��s�:�]V�����ML�Ξβ	��;�O�S�KQ�F0
l.��ѓ�jC�)ی`��`���v5��_5����B��T�7�Y�竌T�Y��&`C�';�}
M�|�c#�
�W��>�P'���ׁy��QMߤ��H�2�["{o��I���N���B����۠H�I1"c��PPPPzP1��JߧU}R�~��l�WE����S�MF/�&��gU�f��Mf�g��
Q���AL�~>@s2�b���6#E3	��m��������/L�W`�ac�#��@l���K�?�>����eH��-#�Kbx��Ж1�H����]v�4b�T�6���w���駅�f�
e�3����gD=yj|k�a�t&P�8�f��~����7���-Z�.;����40E�
�b��Is�aZ��ڂ
�fcu�.t�W`���ݥ|���������/>4X�Q%����k�1��GXC�F�k�,'
�D�Q�:77ُS��=�;��ΝK˖.�={�p7�huy��]��L;���}�5����2��_'�>�W&�0�deM6
�_�nc�f߬�A���+}_5��@��[�M��6�}��+�d�a�o��q�Y%��KbP��f�Sh�)���k׎ݺv;ܵk�h����ŕ\\\�]\]����t�7f�
�G�ğ���@�ah�2�0"��N�@�:HT�i��7r�|�2�|xꭇb.H��f���m�?�
��J��A�Y��t�T�a��2���N�f$�����4�e��ds'S�3�ڠ�@��c�lѪU�V;W�'i$-3K���X��I0��3���f�m箞��;�T/�T��WT���d]��>I�i��k���:�E�9Ә���aK��Y�XWXI����d_	|=��@`
�0����W�E�5f@NX�ứS+��:r�z
�:����?o�[⍷�o��}��w�\y��2����~V��>Icm�moo_�U�5�5�Ց�VA�����겆���:��*�<��eMa�e%�:�n+[���z�~�#�/�1�x����2r���߷�o�ֻ^|�����>�@e>�Ī���6�'i8m+2���Xd�[�A��Ml�>g��_���2��K�f�R){d�\�߭�9�=�F��nF*�u�2����k�A�1�x�bݛ
�N��Ge?���W�O>�F�V��H�e��4�V��c-�UV��f�Y�Lh�*�FO#�����2���R��%�X��ŌKMj̼9�JM>�J�.��+��Y	*��(r��.�4r��N|�LY��l�L�/;II+�ȱl�J��U��ʚΪ�zOm����D�+\a�Ϊ�zOm����y���GO�,k|*N<ݤҤ3���&�����?�!�>��d������ӓ��j������[3|�%Y5Y�X�XY���/��{xx<��p��ݻo�?�ـ�d�&��G�ډ���^^̟��1r�|���:�(��,�K��u�	�W�����~i~��7�˱R��r����۷3.J�e���!ǔ������M>s4��D2����!�%�Ǧk�u�e�}��Z
`V�}
>"���j�~�T�������fU*�kqww�]{���)S�[�n
��}��(f܏���������T�6m�F�����Pe���G�3��,�U�]�l6i�4gY%�l����*!�A�=PM#3�}��zW'F�J�*Ժuk��d]��>�Zӳ�y�
�����_����o�40�{
�pmpﯲZ����s��F��k���ѣ��E�q��Qw��5�b@��
#777�@@`*������G���lK�d2��.�1��H��'��
�D��I����I�PM#�/ـMT͔�{;�4�4�l���;:�ᓥ~]���>o��z�s��'��]~"��;�&�B�X�Xi�$V�z�$�E�0��N�Bv��-t"�
�%f��L���u�,�?
H�@@`
>-_�4��|��e=���_rr��F���DX�tR�]�!��/�N�i=���I5Si,�,���:��	7�h`u�	egs0�`k}.��fq���?Y{�0�/�/0������=Q���PM�~��I[[$(p݆M�q3���H�
�J��xT����>E={��	�45�Y��T��c٫7s���3r��3���̟�4�c�GW~l��-�]��]�>�}/�f��3��e�?�]�P]�>�}/�f��)Ο��Z����_����䉯%M�uT�D��%�$V���IЗU��o�V�n�M�794�ܮ�
����g+���1�Z@@+Û�"Ub��k��/-���&0'�5�gYb���Fg�d��:�V�n��v3�9k�љ*𱎵�m0��	Ν�&�S�\��_�Ԫ�Vj%�E���	�p�݁���d�v��.���Y&Q��[��J�.6�A��#��6�ް�w�w�/�����&�p4���R�-��"g?.W%�Q�}�
RL�����mzb��k��L9(^��M`�&��9/M�F>w~�L������v��9��s����F��zA_CQ����\i
��՛��X�Xӳh
eJ�Dק���-<(c�U��f`�����`�JOq�]L�]&���9������(_�Ԭ̜�ϟ,5#h80D�r��H��`sט��u�uE����ꡎ��&P5c�Y�Y�eF�ϟ��:JXxbLȟU^?
��˗�f�������u޿���'Oґ#�i��ݴ}�6ڼy3k+���V��zA���5X�(`��V�N���y�UE�;��
&{���j�
�	����Ш�#����@�`0�b����7�d�S���9���&��sy0�ۭ�ˮV���M���O�}E9�@����֐'l��z�`['��T�W��^6���v4�e"h?kz6l�/))����֭_�_�ҥK�X�Y�(2�,�?�$�5@4J����������Q�/����04�
G���(�@�9�v�(��p�l{�(`aQ*Zth����
��M�3�?��	�L�AҰq�kΫ,L�mA�?hk��-򯂫Q��
�tnܸ�ƏO�G��aÆҷߊF��w�Çϒ�E5�he
�#k�:�w�_}���ߢ�겳���I`!O,���suu��i�mYC3F�S�A
�.�.ڤΚ��w��]��/>4�j�Z%����k�S���֞_l�:�L�>?��:8ˆ�+&p�:�$;d�\�PZ�W*��zٲe�ss��t�={��?�f��s'�p��,<������W\��r�z,VG�Dл3&�vs��W�
����$+���7
��[�M��6�}��+�d�a�o��q�Y%�B�٧#���0���^��_&�ly5�4�9V�:�4k���UV��_~�ë��:>/��r�z,VGa�
����Vd�l��5j�T�֛?9V>9	��x���.��6�m(}Ni�J�5���HХ��:
�=�	��u4#99VCi�DÀ@������>@�#x�X3[��@�����II��̒c���u��h=F�m箞��;R�:�T��WT���d]��>I�i�!��4��Nyr�zL`	�3k�
+I�u��+����@`
�f`g���(�1�r�z
�M�X!�ב3�k����X5�~U�`���@Θ�!C��eMa�e%�:�n+k���eMa�e%�:�n3��k׮�����l�u^�z$묙�^%��r���'�Y�@aLY	9�\]]�;:����J�:�^��ѱ4��s�h)6�?�d�5I]�����t8�w���6�WƯk+�E�H��e���`	�,V*�����2���ܽ�Z�Fﱿ�������)�u���i�򲤵�hD��{�E�޷b�'
 
������[Y��~���9�?�}����$��?�Dz���
�y�"V���w����OO�Ul�J��ۛ��fc�\Y�d�W��{��q�3�8�3ݻ�@���6�'iLl�Bs0~��%����`��K�1�?��l�"�AI�C������6��i�p�#�a�Da�{���&7���LJ��H֭��c��������$ǰ�Y�0(��p�l�|f�O���x�����>���?�,�K���w"����-���c�(:�U��[���S�>?/Y����߾{��\����x�}��T�@6s~Oa�4�2��{
��h�gC�X�_DDeWk��.(���J"[���Lf�|����S$��Z
�|���a�

�$_��(0C>~����[��(l��	�,LL���j�^fc�[3}��۶r�o<�?k4���}�'�Y���
�E$P�^L�/E�:*�u+6�|�����pܹ���^������ߕ�&0�X)���4i]�|�Ə�a�d]��>��c����c�h�n�Νt��]Қ�f�&�tP���9�W��\��#>>�rB����r=r[��ʉf�|�}�'ڛ\쩶O9o���ٗb�)6�_���M�/Z���T�
H���P���oZB=��+���5C���q3o�����X�f��zY��9:6�G���o��`��Հ/��	ѱ>�#�Hֽ��&[������;�3%q/�Ĕ����t��u�4��p�>�'FO1�w�(�O$��3�N5������>|H۷oW$��3����������b񲕘C~X(66�$-����)D�G弍?o���K�do�H֭�)X��i,,:��b�$��������6��T�2�$i���8�vꀏb��m%yNwR
/�ﺼ�o틎���"b<��^��g����2��Ɲ�����Tz`
�v��
�4������
�,�����F0�g��N�k�ᓥ~]T��󳉋�JX1vZ+~(..N��*�i}cy)��׌���6t
���3)&1>�:�J�/���r@^�m�O�X��U
�pt���M��~��~~3�4?_/\�@�Νc��s�yy�t���s�㥤�c�Xc]DTT��'Nбc�(22R���6��a�W�m�J����<�`�klr�ik�O5�k���/��m����M�;��۱~�N�(y���n�UZ����F7�1ܬ�F�i$�X��v�}<I�;�[�l���$����L`
���M`�O��
�M\�a�>�	�G�������1s�/]��#�O��b��^^�HtG���
�I���@>F�5�3�����a�b��͟k@���tX��{��_�-Q�d��O$��6�'i��r�:��L�&��tD��*{O�DK?�������JɣR�Y�
��ec]�ɓ')!1���󓓓���M�����olvP�Y������?i�'�|}��Q�l*Ӹ�*��q^+�e)��ve_�����)��F7�a���}*�1Vaݻ-�h��'D7��]{�JW�K�e��4���`��#���}s1��>��o��a����P~x|8��ǃD��*@>��̟-��X1x��k`��Ư����$1|���7���.�����+�D�jۺ*R"����IIkmЇ
XpDl���-�0��B�4�̲ٝ�4f��L�2�F����gΜ�,�zjj*%��JJ�F�O�HZ9F�5�H�/�
�c��D�.�`�Lgs�5@���
`7]�wZֳ�'&�G���^���O���3�/ݗ�d
��o��iڠG��-^jz��lW�|�0�/
�v�@6z"Y�*�5@�1�w�/�T(��҃tɺf�?�L4$?M���`�fg����0��>?G���������]��ϟ~{LGe8
�����;�$�����O�7l�RM�+�Hi���O7{ѵŇ�*�V�q�)��5@PA�ܯN3Y^"�,�l]�g�;�f�%�����b�O��p��=JKKK7�����4�V�1ŅH����H�a�Lw���0w(�N�ޅ�ry.۴8����U�Rz*}��҃>>��f�H�
v�ȟ�Jod�
`Vo�H�p��εɺl��A
<�K���-\��|�Q�n)�/��
$�AéI['�?�2�0�A
�l�9��9���}���

`v��|L
;���9���e�?�����@i�
�=6}1����[��+۴���Z��5�锦W/��<���;����w�le�&�̙S�_�U�^F3��ɾ3gLg�4�?N"�4P0�M��TF�0���#�b�d�GZ�	�T$�3�}uͽY�$0��``�}��uk�z���FO��K��'Wo�'��}GR��0������O-;��׭�5�ĕ�O#�.=�40�`��c�|���^��F�D��H_L��4�V�y�W�6
7���;�5�zG�����ܬ�`1y��ͤ�&`��V��c��z��Y�]�L}~1xK.O�Q�i�l��n�~��䫘�X1gLn����W�
7���S�~�70��V��7��ԧ����^/P�MO��U�zQy\�#���7���u�yV"�L��'��>�D�~�:�3Nm��[doo�D
i�ɮC��4�J8>f���O�"Ki��}�)�]z��>kū�f�5D5���˃-"��'0�b����s��i�e�P1���{W�����00�N�a�q��J��v1��]Z�$"(��;���l�pm	WU��[��
1}&��qM`QS�
�Q6v	�;(��I�O$o��Uik[�	�=�ǘ�Up<��Eu��d6&�2���3ʧ�5�_Y	l��Ą�L�~~��
���ϟ]���Y���(�ӽ�a�'�O�Z�?`��(M��|~�&`1p���4��>�הm�O5�i|���f���?ME�j&���W1���t4�	��J��ɾ�����T8�����}sY7A��`c�����T�0���\�y[��cI�Ѥe��{�
̟J�|�x���l��zL��_L_�����SG�xdD���T
�6�:-�u{~4���8��X&��s7��z���W�Mc�c%��h_u[ySߟ�j�i�s�$�#�n+_Y���ͺ�z�zĺƚ)�%6Z9`^���
��4	����@S�?�yS�T��!�:h�&`6v�M���+M����=����ʤѪ4�&`�"b����*(�3E]�
�e@O�5�y1��(<��SF��;}��?@GWe��	X5�h($��@�
�"���.J�N̠D�����#`	0^�;>�ݽ�t��vChPh0�ͽj��a�֬��ͺ�ɝU�������С	��`�#����>J�@�h�>ȯ1M�^�
�Z�1��)�
@�@%◾�ޤecՈ�g6���ʛ��3�qr����0��^ʵy�pd����uc9�����Mc���q���?W`\���ތ��>B�mPF���^oo�4n��6-�$1,�f��Ə��=�0��q�G^%:d`�D����3�d���ٓ9�J���tF�����`$請��4�q:���EGG+}U(oQ�{Z/,,,M���ȟ�KrL��k�@S@_�n���Ǘ��&�}�X�!�uOup���kk[������R��у(��M��
��_6}i��ө���+?$�F�$@��ܢ~y�f�`�&M�
����%C��a��}s��!��_����c�Kץ���lljM�����{Y�n]�ڵkXO���7Q��f�3F��)}eD�H��F5߸als��#j���q�h��F�g��s:�~;����	��I8��ƞ�_�x�^��A�Q��v�B��E��B�ێ��nk�(w�ѣ�y�
6�Y�zujJJ
�f͚�����2���9<1s5��<ԑ��d�`A�!pT��F#��VC�Q�OU�Հ�W��_�GS�_;���^Z5¶H�Y66ϱ����������gL����a�<�yN6ɏ?���Ї�El�Y����dӌ�0����+@`�lނ�6hL
5�F�M2����T���tn�E��DGfw�;��nL�"c��m����I�=w����66%�}�9[)9-��-$걒�eѠ
D>ۉ�Ɛ���נ��6�b���м5;i��P�[B�Vӌ�h���4u�V��x3M���7�w���ws�%��pO
��h��Q��|E�E�i6��bԴQj֤%5kjG͚��&MZP����bW:2�3�ՁnF*M��8o]����դ��_)6s����/V���*��?����u?��9Bn�f��M����I���/�=JJ�F}��3��ͦ����ȅۼ�S�ΥK�#d�9����W&���Կ��X�O�e��X@`�4�ц.�\J��6��Lv��e�vԲEkjagO�m�(ja:�׉¦u�+�+i�-�bk͋��5���\Ӥ�+P���?l�V�~�ݫS^z��(������-���}�_D�b��D�;⧃u�o-�*��f��N�o��=hŞ�2�-�s�V�=�Y�鮳�s4�`�0�f�ܫ)VS,������l����8̆�~oC�&�P�6�b��u�dߪ}ݼ
��La�;�����ٝ�<��Q`���5Y{����M�i���
��.M�D��>�b����66ef<���ʕ���Y6��>���J���y������}�,�I�ϦЭ��Ts���Z��kp7��E�Ғ�Ӵt�t���%;N�O�Ѵp{��m�"��'hV�I��=+O��(������ݝz���N=z����s/%�#��"�Y�5t�ޝ���ɺl�}�����3E
y=�'Ə%KD���d�
��=-<`C�y��E\v��]�`߅ڶ�@��)b���LOB�G�[�h��vF1��&���wgо��ݼ����Z3/����1��i�
1��^q�)��@��U��_䡺u㗽��U6��8O�Q���=������GYA��6����(>9���A����$����XɃ/f\6������}����-�Es���:A~�~��?Sչ6TeN����_y�Z���x����N�����i[�N���I�Y�Bv��t�إ���c�Xc]Jڳ7��N���Qъd]��>|M�`6ͽ�6���KS͟jce�@`�pׅoh�1ZiC�Q6���
���B��m�C[7j�ؙ��:ӁY��sJZ�Mc:�#��h�
��cվ�z*����)��}LC��i��'4���@c�%и�h��x����\'�tld�'c���j��T��駷��3U���C�'$R����eh��O�ܑ��'Em����2�{��|�����3�N:�Bs�VV���|�fXH�G���uGi����0����,?@c��+��8E�>r�~���x�H���S�ҁ�Gh}�Z�aS���2(�o�'i$�#��B$�?<���lS�?��	�WLh��W���b3	X#Uq�=h��/M��l�v�
��6ur�NN�\�MW�7���u��c[�ᕣ(|���*��}�oX�I����t&��_5�{���_�vש��;��L�y%���O�<��3��֊��m6e�72�n��+}^���_���/Ӗ9���^��?�H��S��'���F�	
����d���O�D>�	��)�i��3�����C���M�����;�(Z��%�R�[�nƍG'�Nц��i]`��T��y)�$���cLq!��}J����̈��<�#Q�X-���ӯ�u�d�&�5`u&��	6��bj<ņ\��չ7�vq'W����ڍ;w�ݓ[��mh��iߢAtdNg�U���[�B�}0<,���sw��H���7�x��ݥ�!��=���G�$��|���F[�n�!�/�oX͚��R�?F��>��D�q�n��t��C������7�ʾ���Q�UFx���i#���#fӒ��f0��!
���B��;nK�������1�	ts�a�@/:�o.شy+m��A����1I�uw3����ٳ'��S���U'
 `kwN��k�/h�����4�1`�&�17���X�����
Ɠܺ�+��r��A��i��h�w���A���rx���j��NfmceEj*�+��D&��s:������c\U@�y��k"U��-Us�j��w�.C�K��j�^i�ƬL7›��Q3›T#�7FX3��Cg�����zM�B������t��4v��e7f��˒��)M�ۆ����_�����ް�t��U�m���������%�X��*c����8�1`�,�%���M��ɳW�y�����ZP����ǎ�|;�I��kz�ye��d��NF5��^������4�W�t��
��(�F�5�o�V��j��6D��rl�{M�׌`�5�i�T���(u�!��~����ۏ���{�_�H�6�@�@i�5r$ݽ�;ű$��(t�ԉ:9w&g�.��$�u'g��)CN�w���h��#-Ւ�҂֎kE���(0�B�E��u�}�����v�M�k>0���W	g#�)
��o���n��^�&����i�'��M��U��d��C�YM{�QL`�3-��u���u�%<A&�8O���{��X����`,�<��;W�Իi��F��y��,d��'��u�ϊ���XeG^MM+�b{.�'vq�u���ç��
[ƛ�`�n�>�ګ���{I|(��M���b�8��R�����n��>?b��N�H`���W��E�Wu&�<����뿬7U�X�V��Kj���0`.cnR�P���fK�{��*�����:�x��UJ5�S��1��7��C�a`%L_�7eip���!GS.\�p#7]�t���˗�8}��G�m���S�L)���?}��e�X�uw��)����ȵ����S�>��Ν;�g�[�w�t���m�.І�g((�,=z�(O��>ݸq�~��7:w�\BDDĦ������iӦU�_�x���+O�
�w�Ư��ʕ�-����n�]����	�CO\��ф���׬YC���4x��k��}.�~8%��߲�'(`_=x�
W���t��=�v����/G$��r�С/�V�ԩS?_�x��+V�e�w�d�iZ��'rsu!�.](�����3gV�
���i�ҥԩ�k����Qg׮�+W��M�6ѠA�nX�w�P&(��ܤ@����Г'O��ۚ	�w���fxj&��_Y�bE��U�V�bŮ^��>�L%>��ܮMKg�k�����ܗ2)eSʨ�U)���l�s髶h��E+V�<�w_���'�h���եu�О\ڷ���ȩ][:~"�8�BK���߿�����4r�H6�.Oo]\ǍGӧO'6���
*�T�J�ϙ&�ʕ+a�y�p��
�4x2�P�7oޤ���SZZ=|�P1�gΜx��N��F�+�F\���&��/~�ƍ��AAA�6o�l�g�y�ه)�C�YJ�h�d�����h�Q�#eTʪ�Y)�R����rѢ�˗/_������'�o�\rue��ʼn��8Qow7�psQ̟��#9ڷ�4s�x�K�
�۷�����Թ�S@g6���ܹ��L�V�\�M6y
�U�6�z��kj֬y�^�zlmmc[�ly�iӦ������$�?t:�������o_�R$fO�֖?��3q��x0�����Ge�D���S5
�p�Y�+�CR�J�*?�۷o'�!		�Ў;L"�l9׶m��`�ɡ"-#i��2��~�~�eR�%eUʬ�]��2]��Ԙ1c��H_�EK��b�wi_����?ӌ����>4p@2�?�1���
�������'��}i@�^ԯ�;��ٝ���M7=�����mx�Vӌ3ک*k.�%�z��u�ر�|K�;'.�3=��6o��掚4iB�Lf�w�m۶��֭������iӆ���}�嗿����M�p%@i�]�rE��ו~~���t��U�ߟH�e����)<<����K���W$�v6�7Ps��{�+�\i�JDE*o}����scJ�\9'S)�QI]ƾ܏��OV�gW��Pʰ�e)�R����35gΜ��d����]���C�4m�t��u��]hƌi$ѿ�����$Ϳ�Vt"�T��?�(���>}6-��SgΪ:'"���K���o���ǯ�٨�ڵ������j�ԅ���޽�b��pȎ;�������	ܗ��@4-�3���ʀO��HL�D�����b��jۤ�H�~Ϟ=���(�ŋ%B�;��y�b����%os%yB�&z�U������aaa�o�>E��nl�9�
>7��9�ׂ�1��ʡ�I9��Q)�z3�A5"(e��z�d@��i67ݺ89QO7W�ՇƍJ�G
�ٳgҁ�ԮUKruv"�N���J3p�.�չufu��H�Ύ��Ԟ�ȉ�:9������P˦M(,�
-Y�$�\~W���6l��Ӈ;:'��r��V�7!�h�,���K^Ƀ?�S��w��U$<�;m�ԩS�����֥9��_U��nݺ-��wP����)�4�I�f���
U*Xij8p�����9���2��S�R���`HZ9�ׂ�1��ʡV.��JY�2+eW3�R��lK��.e�
�-n���}�⺰�?z}�3�ƍJc��ї���S�ԗ�wǏEߍ��ñ��i����4lh�v�'}3ȃ��I}��^ݕ>��.��~�Z�Ѷ�fe9zw��S��'�S^e�؉���[�1�3��I���y�\Iw��Q$�NM'O��[L�H��'��'N(�d]�
J?B6��Q��
�/�GDnhQ?È�Tܚ����$?�cǎ�Lr.9�\GnC�HZ9Ɣׄ�1��ʥ�Q�J�5�Xꢁ7����<���,���տ�3L������A���)P̜�;z��ţf�ш}h�pO:�'�����ݸ�`W��˅<zv!�n��[��ԕG;�5��!b��5��n��9t�P%��αC�wk�(�j޾�2z���5oޜ7nL
4��S�ί<�*�8̓B~�h���i�w%K�o��#l#���EҬ+ͽZ�H�j������wP��fSx�
�pT�����N�Z�O��$z"��D5�gjS�?�5&�S���F�J��,��5
KYW���g���٢EKVD�|��u�L�G~C#��)�n�P7��7��Cw��GW6��(��}h�p�vh�m74ؕ�Bv�~���w'N��};PWWnvr
g�6ԦYc�.1���rS������#W����bU�Gl����c�(�U�Vm�S�|���PL���>�l
���di�����b5S's�������&-z(�(
��X�h�����ӛ?i2��3i�)(�g��i��»�J���-e\o�0�s�����߅��y@Ç������9k
m�J�]қz�y�i�����ԙ�t�>�;R�>���َz�l�#�r��6�ԡ5�oӒZ5�Z1�<d�����+�n�5J��AmڵOt��DyU��-(�O�]׮]��t.s7��V�$�>Jӂ��-��	��!1�\ί�F�5��7��������0�~
:hh�g�+S>k2̊�y���M�C��Ӡo����4�
`0��=��z���?���L�pį/�>�ӳ-u�ي��ٓ�KKrv�#G�ԺUs��mH������;���)y-��ڶK7w�U�[;(P����y�E���$��A�7�i���[�����O[��~�m�Զ�d�v�D�|�r�+��C�q�ϟ�D?ci^�a�䥏��	T�<.τ)�9��o}D�1n��ݸ9�G����1s2G�By��>ȍ���1��?n���:R���{oGrc��ͽ�voI]\��s�fԡCSjۦ1ٵ��f��+fҜ
O�r��$�оu�DϹ[(�jԺ�b5jD�&M���r5����fk�/ٞ<�#7�g��8���~�R�~{V�2o�/Q@~�`��_k�I�(���������Go�>���ڔ�77:t$��ʥW�4�N��n�uu��]�o~H�Jį'�wc�����p
���������_�����kj��k�oِ�6�O�
�(�	�,]��\~kڷocÆ
27�l�&���M�W5���	����,���oM�t�~XF��˘�E��Ӗ��۳Z�yӧ��%]`�F���H�4�����C��q�NHH��wR��g�1���f0�4{,D�Hʢ�I)�RFs+�Z�@m`�:q��j]�T�7Xu��	?��]��ّ�=�Ѵ�<uK(7綥޽�ɳW{���}�Xnm�Ճ���lK����N��ș�_�N�<�^Cjۮ>���G͛եF
kS�z_QH�.���䉜o�{|�L�B-�[%v����-�+�믿�Y�f����5K6�cڜ����|�f/}ϣ��}�"m
#��E[�r��Sn�O�[$�K��r�0��G�~~����>��4>%%�W����,?�t��7�z�15�T�����E)��RF���V�����3�gB�
S>{<)�CG�R�Nm�G�᷂�*Ͷ��[�{OGep�����aO�=����{;q�Ϲks�إ	9:s�ϱ>��K��u�}E��jQ�:5��W5���K��4�ߛV�Z�X�lLYL���&�����]��W��g�h_�6���%��n�
�M>��d@)��ﰼ�W�[붠�[�OSֵ�%
�-��7}yj�?i�˭�W���e	��g���Y�X��(��$�T�SJMS�B��1�*�e�^-����J�ͭ\K�ך�噐gC�S=�jq��Ϗ:vhG�.�xo+�:u�2r��cKnn�#]��_W;��ל�z���������ϡc�J��n[��Z֢f;$ۯkR�:���U�n�괃#��d[�lyc�…4�|jڢeb���W�n�a����pmG�L�n��b'�^�K��E$;�Ο?���C�2���+��ZjNj	䩎`9��q�5��Μ*I�o3-99Y��Ʊ�����LYY��jԲ�/�lJ'eV�nN&P�jB�ِ�2յr?���V]��`rhׂ:��29��m�B�vr�h�37�:5�N_+M��K7~u�e�ZI������f��l��R�/*S��+P��U�
���fc[�hqc���Jn��v���.���V�vp�ܹԺuk�6��g�O�ѿ��Bi��Pe�H3�b���kݔ����uåv��@�G�~
9U���hG�Tv�)��j���%V5uX��z�$�(�ϫeT��8)�ZsYNQ@y�7�D�3b�kds�#��aj��N����w��-+�С]SVc�шMa}jݦ.�j]G��5o�Ưi
�W�ԯJ�kU�/�W���?�*�>���V�НJ0�\���M���+V�m��
F.���˦m3&����hb&�S�\�<t;6~;D�&�_G�a�p�ߺd��}�$��-�A׮]3���a9V�orE����id��Q>>>~�Uy?`e�9��6����'yt#���1����;���mZ�}ӯi�ĉ��
�]ㆊ	lig��u��<�K]��_��_Rc�/��F�ƯN����[��U��*W(K�>��*}�!ժ�p��a.��)\D_7i�LP��
~\���\�r�5j\�`����LM�ߐMs[�5���\�<���,
�!le�H�I�?�u�R�_��/&����r�?�J�4y�뱲���T�����r"��ʹD?������]P�y�f�'r�)�����W�Y󋼳�I��4i��6oX���<~M��~}u��}E_7��֯A��7�~���5*���l��}�?M�8�s�nb&_�+<����@��`5n��p��V#Q�n�җ_��/5��u��ED�����ꫯ�}��p��#6�Ə��Q�b===����:y0����Ѡ��+&N$<��ߪ2�4���ZӰ�n�Ԏ�{�n@@����_����4&�%�ڹ�_�=`ae]��?MY�gC�S_������ԷOon�\E���_7��vͩu�f��ޮ�97{�x�NS�&ԲY�k�˦�3�i�$�M��|��ڕz��V�~�;5���T�Mϸ,e�v�z��)-����S���I�;pSx;�U�Vj�J��T�P�|&�
�_���iX�����ǓES͚5��c��79
��m�o��`+]�rE������(���EEE)�.���r�c���Tr�_$�JQ����R!~iʎ������/���gA�	�~f�k�3g��S	�ɩ��^��TJ�Ri����	�l���
�;���Rɒ%�T�V-z�i-���}�O��_1�lo�.]�#�,�
���C���3g*�o���J��o߾<�ƙ�tF�c���"����{�f�3oK����6(O��-��R���0����+���_�:���K+���rN�]���A�1��M�0��k�]C�m{p��_N�O/v�����_#~��C6ƴ|�reį4�4�'�v�&��2eʔ�������=Z������=z���B���}���<Y̟��M�9'�._��H3zb�$�uI�/�2*�?�8Mby
 �J�R^
`^^���������Hyg�v���'�q�3G��JV%p�ŸvZ�ĆmI�.]H�,��d���:�J�.G�.�?-���4�ʲ{�����x����3�t�qI�;���6RO֥K��"1�<��/x����*D@P��V��r3�3G�.͘1�Ɗ�+�r_�_E+V�Z��m�x��+x]�
E�W��u�r^*Z��e��@�)�iAp�����+�O����`%��#{Ӹ�_�>}�*U��/��41���`�"&���ceZs�O�񋒻����7P7�ŋ�&~�

�x"
@y7)2��=�GF�{�g[��ڠA�ݺuSF�d���I�����5�c���&p��c��e<H�us�Ϯ>�]��'������M۶m����nYH�G��׽�+�d�x�v��}�X�-w=7���隗�q��ߌ��k׮�M΁�@�P��P޵9/Q�i��h�j6~��9p���Vv�2������z@P�T���*DT���*DT���*DT��@��;�
K/��*8�w0�0����
�0�(�P!�B(�(�P!�B(�*DP�T����@yP!���B�`V�ZE�իW�ڵk���H�6|K(�*D��_���@ڴi��͛�Fr=r]r}r���P���
�5��'���
1S��ٶmSHH�ر�l$�#�%�'׉o��00��jE�����l(�l��TD12i�$����+�Rj�X)�*����P3~{��U�
�Er=��Dy��
����*}��Er=r]0�F6�yT𴊌��g`
�@c���&G�&�U"@�w�L��d��J����S!��Mx�
�;`E&/o��[%`Q�+���&�U���
1�7Y�0�(�@300Ϟ95��\��P�T��������@�����P�T���0���}I�>�w000�0����wP!�B�DyG�@��
�@�`Q�T��?@�w"��@����s�(�B��P!@�w�Z+DDaaT��aQ�k�%ڇ
y"*D@�w"�DyP!"�`Q�T��?@�w"
 �;�
�@����B��DyP!�����'�������BD�����a@��񝡼����w���K3��;00�aQޑwP!�B�DyP!@�w"����
144"
�/�T��aQޑwP!�B�DyP!"�`Q�T��?@�w��+D�T֞<j**ļ���4��f�X��[���"I[9�7�
�;`�b)�R��GI�R�9@�w����������+V�c�Y�jU��~��5[�lY��j�%@�N�^�ncܿ��'J`�p�N�իW�(-�%�#G�J=z����7�hӦMϬ͛7Spp0�ر�v��E���fi���:�z��s�Z�I>��ז|Ey,����\�܃�����d�����8-_�?X_\�zu����3�/��


��{�ҁ�
�Y@��.�>�N��޳��ߕ+Wp~֐|Ey,��ٶm[�!�����_�Z�ĸ|�/�d�8��E1D��4��ٳGif=t�Y@�.�>�N�^cܷ�䣚�/���g�*i�,��d%m����|�ϳ�`9�~:~��b�$:��ڷo���*&K�[�oYI�G�K�O�S�7?�+�%�&����%_Q�4�ZE(��D�����*FK�����>`����9r$Y�H<��S%��P"mb������:�k~���|���|��S�8�;`�P*<��%b��d�֗̒+D��X�Y����kM��YzV�����>���d�/�75�^@y,��ek�S���9�ˬz�	w�ܹl�ͷ�֌,�$�����s(������YmX�.^������l�$_$$��z�R�
P�+D�?�,����'N�H�	����A��?�Oj~Gy`-��K�*�'$$��{L{��1�l&զ�4��5�J��0��p��X�F����;�[��!��I~H���S
���������fٱ��
w�rS�f�$$?X-Y�-���;�
1�<(�z�咖���(�@�>�~r���j�Cy`+Ya>�`�e
HJJ��F(��EU�*�/���G	�w@0�V[!������SEi~@��W�[�_͇Q�a�Z���������_�~�VQh
֚~�~���Z�����s���6˙��-;}��cc�@s4���������V��;
�"S!��	�orrr����̛5D����}����7�w@0�E�BT�Vc�z���qs�h�k����}���"�;
��j�?�X��)7oތ��A!������S��_����@��4y�<�,G�����?��D�>�~�}����<�;
�"_!�g}��LII���?'�y���\�܇܏ܗz�Q�Q���B�3�^`}�Ē����_����^@yGy�
1sI���&޾}��%�@���}�����;�;�,�CQ�U�:�
k~LL�}K�$Z�'�-ׯ���E����%��?�X�SSS�?~<�R��u��u���Q��
*���$�kHBBB��#G��=
(�'�)�+׭^I�w�w0���g/�j������1�Z�\�\/��\?�;�;@T�O�g��4˞5����ws�XQ���'ש^o����@�h�|���ﲺ�dʫO�<�`N�B4�'�%�'ש^oq�w�w02��=�?`9�WRR�^Σ4s2�r=r]r}�u��w���B�����5�g̡?���O����G����m�������߬f�׮]�]�M�Zӯ\�\��z}���Byr��&b�yX��6���[q�ԩ��0������u���U�
�
���7�'�~���;،������:����w����EVu���{w�}�qKQ�E�!���6j�!�	�Cu)��]҇>�/�B(��&P�<�I�CH�]�C
�RZ�Hq�hqU��ey�Pld��K��6v�xkUI�fn�Ϝ�
�,�\if�Hs����������aݟW�o�NχW�|����Xj=�
�o[l�p���hC�����`��q~Ƴ��?�ux>y���\��q�xz\�^
�
��>$�+��������l�
��������ǫ@�@A��q}��i��LNNL�Rp������F�|���0���-�e�K�.���	͟�����,g��qa�V�����GGG��b=`X�722r]���?ƺ?�
by���~���L&u���j�����_���g����Ƹ�b��kSSS����w}P�����[�(��U-�X�.0�P�j��Z|��퉉��w�0������RF�|�؂�h��]!�m���Yo
y����Μ9�i1�ú?����⇾?��A�PtAl��T`h�F��Z�W[����m�)�	͟��t���wP
��>i񫙙�=vI7[H����g�@5�[<g�ֵk�N�Z�i;m�{�Q��P���������O�.��vm��?º?��lk-�h��l6���G��7���O�����v�}-�P�M�k,^�y�f�5|5~!�~o�����Ϩ��hnn�---9#lLj��	|�b���7n�8��~:���~�?�h����iH�RQ[[[���utt��M�h[>����+-�����s�.D�W?��W��|������3�����t���=g�6m�m�`ܒ�5�,~b�266vQ��g�}
�D�Pʂؤ����s;�ݧsE�]���X��u_�x����?�1:�;%/�����E���3t[(���^�-�n��}�Q!�H�
����~�\�۴
1��b�7�+�_���$Su�Cg=T���ud�M�h[
"�w(�� �� �;D�|����P�
"@�@A�w(���;�� RA���
�ǡC�(������P���/���KA
 D
"�w(��
�(ς���;SLA����ȡ)w�i57h���ݳgύb�S�Nm��-a�Pa��D�[L���9����(>5444�w��hpp���Ί��~u�*,�딻�4�����#��ڊ�ӧOXH���h׮]Qwww�
�7=T�rW9�\.����a���>q��տڥ�h``���|<x0:p��E===Q:��Ȋ��
*�rU9��U+���w��C��	�
�FPm
�L&�K;ۑ��������h�Ν�jmm}�QD9S�*W���]�p!��9���9�(��\a�����X��"��*�]]]Q{{{fǎ�777۶m�2�(�E�rS9�\���Q��o��ݚ��#�(���:�u���Ϸ.J�1\�BzT֎���βDVl��۷G---���ۑ��vI=�g�����Ҷ�E�r34�ٰ��N�щ�w՜���
O�jl�X|���'N\��\��TuvD��TP��`���N]�]tKv'jkk�R��>��!��4hm��$�\8���G
W9�rP����}���Y�n��������
>�P�M�r����̤�����Ύě@�M	��:˒TěLӘ�X��?����SN�W��O�K�r5_��rkh.hNhn�P�
`���,~}��ų��ƛ@]Jӥ2�Y�;+Uhu�%��7����A�ŋRχ�)��Q.*'���Q�j��/����\�9Q�_@57��,��xodd�΄�+��&4�:��B��M"◜�5�K~I=����G����_�����𹰌��jok,V[�h}�:r��t�K���o�
�,��G��`h[�'�����/W���W�k�\��/`14����S��fgg��;6UH񜏈]������x�=�Q�ǣ�P�+�>�XLM�R��o�ِ�%�ze15L�:4�<!����u��R�[���Yi���u��˗/l�Ȳ��0q<��r[9�s��},�&�ƿ!d�_�v�֭��g�^_�&����)�?�rZ��9��s�u�E&P���|Q�V�)��G:��'CCC����G9��U�Y����M�����zG�w,^���E*��MOO���87>>~������÷h��=�rySN��>�E�rS9�\U�*w=�_��^�9N���v�N�>w�Eֻ�����"m���k�;�ؒ���mvWHp<��^�Ŵ�����z�n�\^�%_�7��^4����Z��/��[޴x�b���bS���m�THp<��͞�ozn�����2����A]��E�,��Xc��ZS���!�sk�m�*$8���Z��5���<W������M�Hc(IEND�B`�media/index.html000064400000000037151167475120007631
0ustar00<!DOCTYPE html><title></title>
media/loader.bar.gif000064400000025103151167475120010335
0ustar00GIF89a����������������������������������������䰰��������������������������������������ª�����������!�NETSCAPE2.0!�Created
with ajaxload.info!�	
,�� 
�di�h��l�p,�tm�x��|��pH��r�l:�ШtJ�Z�جv:����(���z�ݸ���H���x�h��h|{~z��x�k�w��uys�����������t`f^+]d

�����dpn���	������p½���õ��Ǿź��ʱ���������Ӱ��,	

���������׏���	�;x/!A��{�ОÂN���F�}\��H��\����:��YE���r��0���V8w���С��<:��ϥG���*T�͠U�>źӪѨZ�r��jW�+XA�-ZpSY�K�‚vpgɭ;�n^���św/_�
�E\8�`�q&Y�]ʴӅ�Y�b̀-�E�B-�,�,Jk���;����u��]Ǿ���,ݻe��
|7��y��\��䰏Å���s_Wݛt
Ө-�m�����א`���͟��~~z��݋�/������v_]�x�xpƊ�f�1�v�oN�Z�bH��I�!��YX�����?�8���Yh�	�A�o�5U�St�a��)�cs;�h\�8�x�TB*Gc��i�ձƣ�L�ʋ&P���^�ԗa�W&~`JI��bnզXo^�Wh���
`4�
��F�}>�'��N�gj����g�
�h�+.�٠�H:أ�*�M�����*ꨤ�j*]�ꪬ��꫰�*무�j�'�!�	
,�� 
�di�h��l�p,�tm�x��|��pH��r�l:�ШtJ�Z�جv:����(6��ap�݃z��݆|<�O�kmyz|~���o���j�w{}s���}��o���}�x�{���ly���v�����k�pf^+]
�gh����h�~���	sg����t������s��������t~�������֨�i�p��q��,��0XVa�2.(p`���`�Hr��@�&9�$�<��
�eF�+=�i�ǔ
%�ti��ϝ-I���fR�'A��eL��ڴ*U�J�=�2{�6,
9�-�bŤa���]��镖��w��5&��߻F��0�y#0|�m��{��<a�`|7?N��s�͕g����j�(#�,Y�_gWp���h�
A�
�'ok��p�ȕ+_�@����+�`����
>J���y��㙗w=}����Ko�\���?g<,���!
�|���_v���0XV�
��X[d�]b^'ͅj�Z��ɵA!v !l�sb�+ZW�/���
��6Z��^7\�"rxv`X$��5�$�#ʸ#�*v�!{.*a(�8ar���GfdN�����a�}�%��B"�&���hܛ|b�]p�_�m-��t�ݢ2v����z���)�y�����(�)fr�G�+)�b�B�f�vvP*�����{�9��Zx�v�u,�Q�!�z�^�"+ki���k��9��g�J`k��.�����Da>�#��|H卦99�>2I���8�gH@��	`����.YLf4|��҈��Fs�,O��%�������l��'

map��2@�,�Y(f��Ii�+���*��{r�����c2ht����t�M?4Ԁn7��zE���F���1��I�،�4��g�����/���`,�Gp����jh�������-��{5T��bӭ�xy�Z�ۋ���Hl�砇.��S�E����ꬷ���.���~B!�	
,�� 
�di�h��l�p,�tm�x��|��pH��r�l:�ШtJ�Z�جv:��ix6h��p��A!M_�
x�<�@�lx�}i�po��}�����{�jon�|��������nw���l����i���{��k�m`^+]k
�
gt��
�А�����g����	h�he���t}����ڈ���i������V���4�
���7����P�8(``A
A.(p@�ɓ�|)�AI		`�T�$�P��@��M�2c�\��fN�<��\�d��1�քp�ΞE�=)է֠��d
ThX�!����A0+�䄻w�����x�f��z2Λ��C��7Fv����y%86�8rLǔV�3e�H�5m��軪'���o�Ԭ�Y�x��Ӯ!g�w<	0O��Ass,H�O�u�	�K�>aA��]k�0�|�Λξ�{��з�������Ww�}<�����]��u�wY��|����]2��ũp\P`l�]g���Ay�m�LxȄ�����5l�������2
N@c�'R�L�4�g�`����"�8��/ʸc�=V��,B�5NV������$�,f��N�7b�)��h8�&��X{��)�ht�e�zʼ���'�ȷ�f�Y�烲!z墆�i�e�IgR��-�_yv�����*hpy
��
$P�h�@���݂��݊;F��1Y�t��2�	�d�<��#Z�uׄvko�i�a&1��?b+���n&���B��Chkna�-[���E{E�r��	*+��Y�@�$n).2)&�ty$�x-yL2^Rd�	K�%�4�V�a�_3VI��8F�o�5n�L�(7{0mX������2l��05$h`�[y�-�>��sЧ}
X�KG9'���*�����y[3��P_ZX�Y�ʩ&-��L����Q�Kv���Gh��OX*�wɫn���f�x��2-E�7K�1���	<lxՏK9E�Ȁ>�y����xޥI�o7�ݎ��8��V�8��|���/���o<]����7���G/���Wo��'�!�	
,�� 
�di�h��l�p,�tm�x��|��pH��r�l:�ШtJ�Z�جv:��g0��t��qp����چ��1O��	y�y}u~m{�|~j�xqo�v��}�jwn���~po�����������xzz�����peg,]wo
�
h��
���i����h~�������ؒ���������	��j��u��u�N����Х�G�\A?�T@0��S�0����$�y�A����L
�e��'QBX�`�M�2g>�в��2i�\	%��\�,��З&s��s$Ԙ(��d�3�̣<�.���Aȕ�1h���EH�0�n�,���
`�]�x%�o�߿u�ƣ������Y3�8����V�,ٚ��*+�1g~C���fӊ�U���ho�!�]A
����!�ூ�$XFx�Ǒ�U�|
�	�'P'��jt���{~<�r��\Ϯ|xs
޳OO���v�7���|����y�M�u�B�o�D
�xɶL�v�����eA��u&@>����Sa���L2#^�r
V�W����T�̊^@>�cC�x׉��Hb�w��<"w��)�V��K!��wv��c�is)ʓfyщ�̜�l0�|���2	܉����������Y
�pb(g����z��'��ꢡ�%��t)]���4<u�j��-�q,�j᪥V��H�Z@+�"�ު2j窍դ�A��3د�^�k2��k���j������k5T����
��*٢��%
p�@��ָ!��	��5I�!��"���*�������@�%��d��dv�-�v�(ed?>i$����TO�,�hmg_��'0]��l��פ7�<Mc�Ews��Z�=�8��&m�L#��CZu�=��FM52�1
�C�L�ٕM�����o�gAE+�q��.�o�����
ۘU]b8�X8��!�l�!�*���8�7/^^��N9G~؁��5�#Zm�6*�����d�c�-/R�A�	�Gl!���o���W�E�7���G/���Wo���gB!�	
,�� 
�di�h��l�p,�tm�x��|��pH��r�l:�ШtJ�Z�جv:��g�){
��zC�8��z�&<~��$��vwwyrj	~	o����~�pz|te���k���r�����|����w�i�n�z��jdpe^+]v
��Ɛ	
���}�~���	Φ����ؐ����������k����ډ��ߗ�����ׇθt�!�S�Á,,"v!�2j\P��
%\Ը���'?�Zl@2#�!S�d��%J�'\�r����vb�i'�4I2�	�ʖ���3iɛ@y*5�T'R�K=��#��{U�
`���p'��7
C۸pQN�f�-^�	��śan5�
�kM�c�pv�`Yb��%t�sd�� ���X�^�
K@F-�忪��E�
�TV�k��	v�]�.�
,ĵ@�n�q�#��:�沅/�^O��	��2/^�����.!9^�t��u��<<�ڣ�f���*��]�e�e�%V`����ro��a�	P�)�
lV�l��r�I��2�H"t�g^��a�|�%"�5�w#a���uP���p[�]Q��w�79�HPexoE�LyT�H�G(��Neefz�kZ�L[�7������Y祜)�E�xd&c@Mr)���7MgNµf2l�	�)��G{Ov��M����y
�^���)���G)�ϭ�qY��IwأՁwg�:8���2�cîZ�f�Hp���Ͼg�����멻�J�(hZO�8݄*ڙ��i㈾Έ�
�X.J�N+�ɑ�׮?�E�����.\Gך�1�驉�I	$�����8��������{)H`�}�'�mY	ޟ�����p���Z�Ih�`R�6/�%�o��z8��orG爁�oB��<�h�-e���g����j5M���L@�����l��&0/��m-.RG��ā���W�gI���g8��V6ޠw��i��I@�ó�-嗚�M�3��y��}��q	��Hl!���n��S�E����/���o���'B!�	
,�� 
�di�h��l�p,�tm�x��|��pH��r�l:�ШtJ�Z�جv:��g�);ą�z�!;�p�
�N�9o�C��<�jd�{os	��	�|z����x���u���|����|�vj���g������v��{s�lGxe^+s��
��ɔ����С�	���٩���������ыj�
�лu���ܡ������!�'-�@sl�#NS�
�ڃ�0����$�)AcG�$�$
y��I�\9�A��0S���r�˘"�ly��G�$K=	T%K�Le�&ΣIEZ�)u�ЭQC&���D`1��`�۷���ە��յ7���p3ȵ��0`�r^��[�	�1�׸-ߕ��>��7ÜKX�YCe�q%(6m�����a�P��D"��ka��gw�]Y��
�}�ܮ�劽�v�-�k�%$������o{?/���q��[;?�o^ӻ-T�=�rt��B����
$Pi	�&�z�-&�_H�=l@]g��V��|e��b�f�e֘ovih�3D8�tp
�x኏�xMy#:g"v�m�A�b��nuP�f=f�
^0
~�Ȣ[x�XNhԉt#�Q�%�i22����֗�43&����@]�&��֠��e��Zt(�%ߊ��ȚQV7�h1
�&om���m��ۗ��Xג)(�ڱ�b��`v�}�A�!^sܧSZ�*��U��u~ͅ�����yy�I�z��'A���Y�ٙ�i�����o�6����'�����l^�N�)
�Տz��4�f��
���[��AuF6��Z�]8��ڋ�}�뛆�2��[z
�o���G����Ț�@�l�ІG0��5���&H��,
��ɯ�����&��g�1P�`p�Ō�L�|-KV؀�M�i�s��=h���9s�
�Y&\:ۇhrJ���-jW��]�sud3l�^H��A��ʉ�v���&p�h��-��/&�ܼ������8��K�8\��*,�y��x��-�<�CX��n�=*|�7�������6[����TtQ���o���'����7��П!�	
,�� 
�di�h��l�p,�tm�x��|��pH��r�l:�ШtJ�Z�جv:����);�Oa�no�#�~�x<�
7yye||g~vx�	o{����f����z�h�wy	q�rw��������p���������nGea^+���y��ɂ�	��	ѵ���ۀ�l���v����Ɋm���n����������A�$�߷p��s`��	X0e�B		0����$���Ǝ��$ir#J`\���˘����%�c:g���#M�-}�JR�P�/��	U�N<��dP
�ʧ7Й���,bX����ʝ���p�N�P��[�qu�����k
��Ob��7�2$3��8[��r�F�Yh��3GN|z����&s��B	fW�A�bt�Z�0܂�v�^����q�;�[�9�l
��.�t����v��<���7�V^�^�!���j
��n��Yuv��Y��d��@�	T�e��]�Afuq=�[f��&�Z�&��R&"{n���.���qu�A�b�̂
�HY��8�̊���!��8׆�!�1ɣ�`P`
^��0Ф\�ah�YRh؍�ȧ%`]F��@'\rk2�@���'3>&����z��9܌o��䵝����fxʼn�͡�E���e���'��L�Vݕ�����@sJ&����7�N0�~'�Z�N�\�ـ'c�^#l��ڪ��"�쉭�+��z���|ĩj�]Ǟg����'�	v��]��c/�ڐ^&f��E�!���H^��݆6������k��9�ʫ����0��J��p�
&���c*�k�p@x�[辙1]��E���ez�&Zs��v%~gR�ۀ��\'�8k�@|z+i[W�6�^0cv�cs��3���I������s}z�b3G�Up�/GW_����\�?Kp�����|�wu�����~W��v'p����*���tz�����r_=
1�c���bD�������.���n;]�����/���o��'�!�	
,�� 
�di�h��l�p,�tm�x��|��pH��r�l:�ШtJ�Z�جv:�����ph4��i�7f�9=x$��ِ6�=vx�|j�w�z�ciu	��p�~���xf�c~�y�����{�~�y����v��{��o	ea^+	`����Ô�	���ºy���”m���ٕm��“n���г�������������C�Lۛ�z
�0��a��@Qƒ2j\��@�/\Ը�AE	
%���H�'+�l�1%Ŕ3I�L	�gN�
|<�3�ˡ!�B�S�Ҡ�|Z�fŕ-�K@��1�E��چҪ�pǚ�j`Ѯ�����j�ε���sӂT@��Y�kk
\�
�u%�e���`	�W���Á�&P��0a�s뎶�a1굪1T�
��
vI~kmC���$(.�w�ʙWH+<x�d��>!za޲�oWλ�q��/���x`�엝��b
���'ͻ9rl�)��m*
�B�)ß��e�A�˜Fl������e�}r�
��e�!a�h�!g���tۃ�ɇ��H3*p�x8`��բ��XcjI`
S��%���kY@o
j �j]��[�e�d%����Y0f��l���)��bg
g'E��&�ϭY�f�q�fpxB��	G�������9�|���g�,�u\٘l-��y�U���]�
��Q�zn)�Z-�*���
��暤[�*쫦�'�†J��Z�����u���W�5͹(\��}W��'4)���!o�fnj#z�غ��Y�5��c���K����V�l�[,Y�Np���Y���e�k\�0]��K���"ž��	H
�,�UZ����W�i���a�:ہͥɌf��J�䍎���N�2�j�L��,'J�l�B]eZS�h�j^��Y�A�rcd��r�W�ffC+��RʲP��킧]دR
dP��̘Ʊ�s)'p���jplp���o�#�yˍH�����`;⒫ex�ٕ�f�=��7��ޞ��������;]!���o���'����7��'�!�	
,�� 
�di�h��l�p,�tm�x��|��pH��r�l:�ШtJ�Z�جv:����P�h���)l��#�1O;��~�����x{�}����~cvw�	��~���|z��x|�����	gk�k�|�k��y�����qzd^+	�o���������y����p����o	��������z�������������B����9���0�a
��G�E	�@��qA�\��@#Ǎ���rCɓ<�H3�K�2kb$i�dʐ,�	�#АCa�)�͓9iZL
u&Ɗ�r�*U+�Y	8�@���(`���p3L�����p㊼V��ۼo�Z[��o^�"�����"������
$[������:땠���p'E�����N`���*H����w��0�B�����F<�,O@�x��ӫ7��n����F/�����H�~]z�
4�w�}�򎣯�y�u�����97�x���h��܇A���k˰�Axz�_d(WD��5a����2'�x!��D"`#znjv@cb�5�a2�af�g\<¨V(�Ձ�Hb�c�Q~���)0������y`�ٸ�_`
fc��M��3d��qo�^g��f���i�sn�ggg�ـr"w�H06����-��2B����Yg=fz��`��X��d�U��o�����_w�w��1�����P����:�*\f̭��ʚ�E����b�U�d�t-C]q��+�ۭ�m_��@`��M��w�׃�	���G��,]E�e]����iX��IJ�A��Vy�������c��d����{&2���.��	�p@+�h��apy��ɡίr�3�:/�)���\��v�@�,��]Z�f�'�3�6����uztz�c)r��l�}7��`�5��<-�F�
]�,n�kbDA~߈m���(�wF��ލO���^O˸��ZpBȒS.8��79�kQ�\怢>��?-^��=���Hl��/���S�E�'����7���G/���WB!�	
,�� 
�di�h��l�p,�tm�x��|��pH��r�l:�ШtJ�Z�جv:�����(8��!��6��̮{��~�6��x	y�}~�����ul���	�l����c��p	t������ki�z����z���oye^+	�{�`���ф�����z���Ϳ�����������	���ь��������y���q[
=k$���0
(p@�ŋ4����\̶�#ǏD���xA�I�@b���%ʕ	f,i2�ȟ	[���s$͡'�Z��NJFw���3F�Scδ8hh��h(@��`@�@A��ʝ
R�5��Ν�A$�j����Z�l6�̭`�{뮭��p_	n�iHy�H
�+�,���ʋ1�E�z�e��Ew�{Y��,�0�ٻ
,�{�8�Z
��7��	�'>aA��l��k�t��q�ǵ޶q7���U�Y��������:�����k=6�����m*
@���c�%�s}eV����3�Gۂ����X�!3��!_b�kZf�f%B�`{�}�^���2&��[��bȕ�|�}HX�F`
"h��1�qS�֠Vf{��ӥ��iYMz�7AY���c�&�$��tԵ��pn��ة��xxꉀ2v�)�E�m��x.�e5��)W�<�����i	T@$|0�5"�H��ΑZjt~�ި���x��
k���E+t�}'����k[[������IJ�V��(�+���!+Ap�bی�'�&X�m�V��q�2��'��>�;m�"^8��k�ay����6���tI�b����2�&�|��-��0���r$'d�"�E]\_Λ�r��Xe�-�Y��
G]B��ޟHh.�����i�YI�G�F4�L\%�6��d��Ʌ�Vo��
`��c�
�+��m;\���H���j�����t#w���Y��H��~���0q��*��v��k��|�	.���AN���dBP�\+��!�/`#��ꬷ���NEE�n������/�	!;media/loader.gif000064400000001323151167475130007571
0ustar00GIF89a�lhh\YYXUUc__755(''OLL

:88*((PMM!a^^[XXgcc]ZZfccMJJDAAURReaa!�NETSCAPE2.0!�Created
with ajaxload.info!�	,-  �di���
���@�8�5p�{�۸�����@�.s��
E��B!�	,$`a`��i�����©�ҧ����X/(��;�!�	,6
 ��a,�$	"c�b�(�ϴ��2�����[��K���ӸN��U*�N�!�	,5
 ��ET��4b$I��<��uy�;�
�Ȅ>b�G��̑s9y�֋�*�R!!�	,2
 �di�ֲX�DQ��H�bRUEɴ]�:^��f�_Q�#����c�J��!�	,7
 �di�$q]���b�iمa�h㢶m�]
��a�.�M$��4_-66ˠ��R!�	,/ 
�di��DQ����r%R�
�5���p���Ěq��^-4CY��!�	,/
 �di��DQ����r%R�
�5���p���Ěq��^-4CY��;media/manager.less000064400000010115151167475130010135
0ustar00(~"@{MediaManager}") {

	font-size: 12px !important;
    line-height: 12px !important;
    font-family: "Lucida Grande", "Arial", sans-serif
!important;

    input, button, select, textarea {
        font-family: "Lucida Grande", "Arial",
sans-serif !important;
    }

    background: transparent !important;
    overflow-y: hidden;
    overflow-x: hidden;
    z-index: 9999999;
    width: 100%;
    height: 100%;
    color: #111;

    position: fixed;
    top: -99999px;
    left: 0;

    display: table;

    .media-overlay {
        width: 100%;
        height: 100%;
        position: absolute;
        top: 0;
        right: 0;
        z-index: 1;
        .transition();
        display: none; //prevent dashboard toolbar unclickable in FF3.6
    }

    &.active {
        top: 0;
        left: 0;

        .media-overlay {
            .transition();
        }
    }

    .loaderModal {

        .modalContent {
            width: 100%;
            height: 100%;
            text-align: center;
        }
    }

    .assetItemGroup {
        width: 130px;
        margin: 0 auto;
        height: 110px;
        top: 50%;
        margin-top: -190px;
        position: relative;
    }

    .assetItem {

        padding: 6px;
        padding-left: 28px;
        text-align: left;
        position: relative;

        i {
            width: 16px;
            height: 16px;
            top: 4px;
            left: 4px;
            display: none;
            position: absolute;
        }

        &.loading {
        }

        &.done {
            i {
                .icon-media(7, 3);
                display: block;
            }
        }

        &.failed {
            i {
                .icon-media(8, 3);
                display: block;
            }
        }
    }

    .recentActivities {

        .promptContent {
            padding: 5px 15px;
        }

        .recentItemGroup {
            background: #F5F5F5;
            border: 1px solid #CCCCCC;
            height: 145px;
            overflow: auto;
        }

        .recentItem {
            position: relative;
            height: 32px;
            border-bottom: 1px solid #ddd;

            .item-wrap {
                position: relative;
                overflow: hidden;
            }

            height: 32px;
            padding: 4px 8px;

            .item-image {
                display: table;
                width: 32px;
                height: 32px;
            }

            .item-image-wrap {
                display: table-cell;
                text-align: center;
                vertical-align: middle;
            }

            .itemIcon {
                max-width: 32px;
                max-height: 32px;
                display: inline;
                z-index: 1;
                vertical-align: middle;
            }

            .itemTitle {
                display: block;
                text-align: left;
                position: absolute;
                z-index: 2;
                font-size: 12px;
                .unselectable();
                top: 0px;
                left: 40px;
                width: 270px;
                overflow: hidden;
                white-space: nowrap;
                .text-overflow();
                padding-top: 4px;
            }

            .itemProgress {
                color: #888888;
                font-size: 10px;
                display: block;
                line-height: 16px;
            }

            i {
                width: 16px;
                height: 16px;
                position: absolute;
                top: 7px;
                right: 4px;
                display: none;
            }

            &.loading {
                i {
                    background: url(loader.gif) center center no-repeat;
                    display: block;
                }
            }

            &.done {
                i {
                    .icon-media(7, 3);
                    display: block;
                }
            }

            &.failed {
                i {
                    .icon-media(8, 3);
                    display: block;
                }
            }
        }
    }
}
media/modal.less000064400000025065151167475130007631
0ustar00(~"@{MediaManager}") {

    .mediaModalGroup {
        display: table-cell;
        vertical-align: middle;
        text-align: center;
        width: 100%;
        height: 100%;
        padding: 0 80px;
    }

    .mediaModal {
        position: absolute;
        top: 9999px;
        width: 100%;
        height: 85%;
        margin: 0 auto;

        overflow: hidden;
        .box-shadow(0px 0px 64px rgba(0,0,0,0.8));
        border: 1px solid #292F3A;
        z-index: 2;
        text-align: left;

        &.active {
            top: 0;
            position: relative;
        }

        &.loaderModal {
            background: url("loader.bar.gif") center center
no-repeat #f6f6f6;
        }

        .modalHeader {

            .normalHeaderColorScheme();
            // .vertical-gradient(darken(#f5f5f5, 15%), darken(#dfdfdf,
15%));

            .vertical-gradient(#444b55, #343a44);

            height: 48px;
            border-bottom: 1px solid #ccc;
            overflow: hidden;
            position: relative;
            z-index: 5;

            color: #fff;
            .text-shadow(1px 1px 0px #343a44);

            .modalTitle {
                text-align: left;
                font-size: 18px;
                line-height: 48px;
                position: absolute;
                padding-left: 10px;
                .text-shadow(1px 1px 0px #343a44);
                z-index: 1;
            }

            .modalButtons {
                border-left: 1px solid #343a44;
                float: right;
            }

            button.modalButton {

                display: inline-block;

                background: transparent;
                margin: 0;
                padding: 0 8px;

                font-weight: bold;
                font-family: 'Lucida Grande',Tahoma,sans-serif;
                font-size: 12px;
                line-height: 12px;
                color: #fff !important;
                text-decoration: none !important;
                vertical-align: top;

                width: auto;
                height: 48px;
                overflow: visible;

                position: relative;
                z-index: 2;
                float: right;
                cursor: pointer;

                border: none;
                border-right: 1px solid #343a44;
                border-left: 1px solid #575e6b;

                > i {
                    width: 16px;
                    height: 16px;
                    position: absolute;
                    top: 16px;
                    left: 8px;
                    display: inline-block;
                }

                &:hover {
                    .vertical-gradient(#575e6b, #343a44);
                }

                &.active {
                    background: #999;
                    .vertical-gradient(#444b55, #575e6b);
                }

                + button.modalButton {
                    // border-right: 1px solid #343a44;
                }

                &.dashboardButton {

                    i {
                        .icon-media(1, 1);
                        position: relative;
                        top: 0;
                        left: 0;
                        width: 20px;
                        height: 20px;
                    }

                    &:hover {
                        i {
                            .icon-media(1, 2);
                        }
                    }

                    // .box-shadow(1px 0px 0 #575e6b);
                }

                &.browserButton {

                    padding-left: 26px;

                    i {
                        .icon-media(7, 1);
                    }
                }

                &.uploaderButton {

                    padding-left: 26px;

                    i {
                        .icon-media(7, 2);
                    }
                }

            }
        }

        .modalToolbar {
            .normalHeaderColorScheme();
            border-bottom: 1px solid #ccc;
            height: 56px;
            width: 100%;
            position: relative;
            z-index: 4;

            .navigation {
                top: 10px;
                left: 10px;
                // See navigation.less for more
            }

            .topActions {
                position: absolute;
                top: 10px;
                right: 10px;
                margin: 0;

                button.button {
                    float: right;
                    height: 36px;

                    padding-left: 8px + 16px + 6px !important;

                    > i {
                        display: inline-block;
                        position: absolute;
                        top: 8px;
                        left: 8px;
                        width: 16px;
                        height: 16px;
                    }

                    + button.button {
                        margin-right: 6px;
                    }
                }
            }
        }

        .modalContent {
            position: relative;
            z-index: 3;
            display: block;
        }

        .modalFooter {
            .normalHeaderColorScheme();
            border-top: 1px solid #ccc;
            height: 36px;
            width: 100%;
            position: absolute;
            bottom: 0;
            z-index: 4;

            .footerActions {
                padding: 4px;
                position: absolute;
                top: 0;

                &.right-actions {
                    right: 0;
                }

                &.left-actions {
                    left: 0;
                }

                button.button {
                    height: 27px;
                }
            }
        }
    }

    .modalPrompt {
        width: 100%;
        height: 100%;
        position: absolute;
        z-index: 5;
        // margin-top: 48px;
        top: -99999px;
        left: -99999px;

        &.active {
            top: 0;
            left: 0;

            .overlay {
                .opacity(0.6);
                .transition-opacity(0.5);
                display: none;
            }
        }

        .overlay {
            width: 100%;
            height: 100%;
            background: #fff;
            .opacity(0);
            position: relative;
            z-index: 1;
            .transition-opacity(0.5);
            display: none;
        }

        .modalPromptDialogs {
            width: 100%;
            height: 100%;
        }

        .modalPromptDialog {
            display: block;
            position: absolute;
            z-index: 2;

            width: 400px;
            height: 250px;
            margin-left: -200px;
            margin-top: -125px - 24px;
            background: white;
            border: 1px solid #aaa;
            .rounded(12px);
            .box-shadow(0px 0px 32px 0px rgba(0,0,0,0.6));

            top: -9999px;
            left: -9999px;

            text-align: left;

            &.active {
                top: 50%;
                left: 50%;
                z-index: 3;
            }
        }

        .promptState {
            display: none;

            &.active {
                display: block;
            }
        }

        .promptTitle {
            padding: 15px 15px 10px;
            font-size: 18px;
            line-height: 18px;
            font-weight: bold;
            .text-overflow();
            white-space: nowrap;
            overflow: hidden;
        }

        .promptText {
            font-size: 12px;
            line-height: 16px;
            padding: 0 15px;
            color: #666;
            display: block;
        }

        .promptForm {

            padding: 30px;

            label {
                height: 24px;
                line-height: 24px;
            }

            input.text {
                border: 1px solid #ccc;
                padding: 0 3px;
                height: 24px;
                line-height: 24px;
                font-size: 13px;
                margin: 0 0 0 5px;
            }
        }

        .promptActions {
            position: absolute;
            bottom: 0;
            right: 0;
            padding: 0 15px 15px 0;
        }

        .promptLoader {
            position: absolute;
            left: 0;
            bottom: 0;
            width: 208px;
            height: 13px;
            margin: 0 0 22px 15px;
            background: url(loader.bar.gif) no-repeat -6px -3px;
        }
    }
}


//Firefox hack
/*Defined the icon position for All FF*/
@-moz-document url-prefix() {
  #EasyBlogMediaManager .mediaModal { top: -9999px; }
  #EasyBlogMediaManager .mediaModal .modalToolbar .topActions button.button
> i {top: 0;  left: -21px;}
  #EasyBlogMediaManager .mediaModal .modalHeader
button.modalButton.uploaderButton > i {top:0;left: -22px;}
  #EasyBlogMediaManager .browser .browserFooter .browserTreeItemFooter
.createFolderButton > i {top:0;left: -20px;}
  #EasyBlogMediaManager .browser .browserViewButtons button.button > i
{top:-8px; left: -6px;}
  #EasyBlogMediaManager .imageVariationActions button i {top:-4px; left:
-14px;}
  #EasyBlogMediaManager .mediaModal .modalHeader button.modalButton > i
{top:0; left: -21px;}
  #EasyBlogMediaManager .uploader .modalToolbar .changeUploadFolderButton
> i {top:0 !important;}
  #EasyBlogMediaManager .uploader .uploadItemGroup .uploadItem
.uploadActions .locateItemButton > i {top:0; left: -21px;}
  #EasyBlogMediaManager .uploader .uploadItemGroup .uploadItem
.uploadActions button > i {top:0; left: -21px;}
}

/*Redefined the correct position for FF 4 and above*/
:-moz-any(x), #EasyBlogMediaManager .mediaModal { top: 9999px; }
:-moz-any(x), #EasyBlogMediaManager .mediaModal .modalToolbar .topActions
button.button i {top: 8px !important;left: 8px !important;}
:-moz-any(x), #EasyBlogMediaManager .mediaModal .modalHeader
button.modalButton.uploaderButton > i {top:16px !important;left: 8px
!important;}
:-moz-any(x), #EasyBlogMediaManager .browser .browserFooter
.browserTreeItemFooter .createFolderButton > i {top:4px !important;left:
6px !important;}
:-moz-any(x), #EasyBlogMediaManager .browser .browserViewButtons
button.button > i {top:4px !important; left: 6px !important;}
:-moz-any(x), #EasyBlogMediaManager .imageVariationActions button i
{top:2px !important; left: 6px !important;}
:-moz-any(x), #EasyBlogMediaManager .mediaModal .modalHeader
button.modalButton.browserButton > i {top:16px !important; left: 8px
!important;}
:-moz-any(x), #EasyBlogMediaManager .uploader .uploadItemGroup .uploadItem
.uploadActions button > i {top:4px !important; left: 6px !important;}
:-moz-any(x), #EasyBlogMediaManager .uploader .uploadItemGroup .uploadItem
.uploadActions .locateItemButton > i {top:4px !important; left: 6px
!important;}


media/navigation.js000064400000005437151167475130010343 0ustar00// module:
start
EasyBlog.module("media/navigation", function($){

var module = this;

// require: start
EasyBlog.require()
// .view(
// 	"media/navigation.item",
// 	"media/navigation.itemgroup"
// )
.done(function(){


var $Media, $Library, DS;

// controller: start
EasyBlog.Controller(

	"Media.Navigation",

	{
		defaultOptions: {

			view: {
				item: "media/navigation.item",
				itemGroup: "media/navigation.itemgroup"
			},

			nestLevel: 8,
			groupCollapseDelay: 1000,
			canActivate: true,

			"{itemGroup}": ".navigationItemGroup",
			"{item}": ".navigationItem"
		}
	},

	function(self) { return {

		init: function() {

			// Globals
			$Media = self.media;
			$Library = $Media.library;
			DS = $Media.options.directorySeparator;

			self.element.toggleClass("canActivate",
self.options.canActivate);
		},

		setPathway: function(meta) {

			var meta = $Library.getMeta(meta);

			if (!meta) return;

			self.currentKey = meta.key;

			// Set path as current path
			var place      = $Library.getPlace(meta.place),
				path       = meta.path,
				isFolder   = (meta.type==="folder"),
				folders    = path.split(DS).splice(1),
				nestLevel  = self.options.nestLevel,
				groupUntil = folders.length - ((folders.length % nestLevel) ||
nestLevel),
				itemGroup;

			// Clear out existing breadcrumb and
			// toggle folder class if path lead to a folder.
			self.element
				.empty()
				.toggleClass("type-folder", isFolder);

			// Base folder
			self.view.item({title: place.title || DS})
				.addClass("base")
				.data("key", place.id + "|" + DS)
				.appendTo(self.element);

			var isJomSocial = place.id==="jomsocial";

			if (path!==DS) {

				$.each(folders, function(i, folder) {

					var isFile = (!isFolder && i==folders.length-1),

						path = DS + folders.slice(0, i + 1).join(DS),

						key = place.id + "|" + path,

						folder = (isJomSocial) ? $Library.getMeta(key).title : folder,

						item = self.view.item({title: (isFile) ? meta.title : folder})
								   .data("key", key)
								   .toggleClass("filename", isFile);

					if (i >= groupUntil) {
						item.appendTo(self.element);
					} else {
						if (i % nestLevel == 0) {
							itemGroup = self.view.itemGroup()
											.appendTo(self.element);
						}
						item.appendTo(itemGroup);
					}
				});
			}
		},

		"{itemGroup} mouseover": function(el) {

			clearTimeout(el.data("delayCollapse"));
			el.addClass("expand");
		},

		"{itemGroup} mouseout": function(el) {

			el.data("delayCollapse",
				setTimeout(function() {
					el.removeClass("expand");
				}, self.options.groupCollapseDelay)
			);
		},

		"{item} click": function(el) {

			if (self.options.canActivate) {
				var key = el.data("key");
				self.trigger("activate", key);
			}
		}

	}}

);
// controller: end

module.resolve();

})
// require: end

});
// module: end
media/navigation.less000064400000004757151167475130010701
0ustar00(~"@{MediaManager}") {

    .navigation {
        position: relative;
        text-align: left;
        padding: 0;
        margin: 0;
        border: none;

        .navigationInfo {
            height: 14px;
            line-height: 18px; /* From 14px to 18px for visual
compensation. */
            font-size: 10px;
            color: #888;
            text-shadow: 1px 1px 0px #FCFCFC;
        }

        .navigationPathway {

            height: 22px;
            width: 200%; // Ensure long filenames don't fall below
            overflow: hidden; // Ensure long filenames are hidden

            .showNavigationArrow() {
                margin: 0 0 0 4px;
                padding: 0 0 0 11px;
                position: relative;

                i {
                    .icon-media(11, 1);
                    width: 8px;
                    height: 22px;
                    position: absolute;
                    top: 0;
                    left: 0;
                }
            }

            .navigationItemGroup {

                height: 22px;
                line-height: 22px;
                float: left;

                .navigationItem {
                    display: none;
                }

                .navigationItemStub {
                    background: lighten(#A8BFEA, 10%);
                    border: 1px solid #91AAD6;
                    .rounded(3px);
                    padding: 0 3px;
                }

                &.expand {

                    .navigationItem {
                        display: inline;
                    }

                    .navigationItemStub {
                        display: none;
                    }
                }

                + .navigationItem {
                    .showNavigationArrow();
                }

                + .navigationItemGroup {
                    .showNavigationArrow();
                }
            }

            .navigationItem {

                height: 22px;
                line-height: 22px;
                font-size: 13px;
                float: left;

                + .navigationItem {
                    .showNavigationArrow();
                }

                + .navigationItemGroup {
                    .showNavigationArrow();
                }
            }

            &.canActivate {

                .navigationItem {

                    &:hover {
                        text-decoration: underline;
                    }

                    cursor: pointer;
                }
            }
        }
    }
}
media/progress.gif000064400000003704151167475130010174
0ustar00GIF89a��������!�NETSCAPE2.0!�,�P���ˍ���ڋ�޼g���扦�ȶ�
��H�^޾�
���QAL*aǦa	�r�M��:��\���
/�?�yH��׻!�,:+����#CTڋE���ߘ�"�Ff�����
,�t��8��_��!�,	9*�o���#CHڋ=���ߘ�"�Ff�:ko��4j�c�{|�)!�,:+����#CTڋE���ߘ�"�Ff�����
,�t��8��_��!�,:+����#CTڋE���ߘ�"�Ff�����
,�t��8��_��!�,#:+����#CTڋE���ߘ�"�Ff�����
,�t��8��_��!�,,9*�o���#CHڋ=���ߘ�"�Ff�:ko��4j�c�{|�)!�,4:+����#CTڋE���ߘ�"�Ff�����
,�t��8��_��!�,=:+����#CTڋE���ߘ�"�Ff�����
,�t��8��_��!�,F:+����#CTڋE���ߘ�"�Ff�����
,�t��8��_��!�,O9*�o���#CHڋ=���ߘ�"�Ff�:ko��4j�c�{|�)!�,W:+����#CTڋE���ߘ�"�Ff�����
,�t��8��_��!�,`:+����#CTڋE���ߘ�"�Ff�����
,�t��8��_��!�,i:+����#CTڋE���ߘ�"�Ff�����
,�t��8��_��!�,r9*�o���#CHڋ=���ߘ�"�Ff�:ko��4j�c�{|�)!�,z:+����#CTڋE���ߘ�"�Ff�����
,�t��8��_��!�,z:+���ˍct��#���م��&CB窤n��j�f��|�q!�,r9*���ˍ#t��#���م��&C窤�k�0+�gm�x��*!�,i:+���ˍct��#���م��&CB窤n��j�f��|�q!�,`:+���ˍct��#���م��&CB窤n��j�f��|�q!�,W:+���ˍct��#���م��&CB窤n��j�f��|�q!�,O9*���ˍ#t��#���م��&C窤�k�0+�gm�x��*!�,F:+���ˍct��#���م��&CB窤n��j�f��|�q!�,=:+���ˍct��#���م��&CB窤n��j�f��|�q!�,4:+���ˍct��#���م��&CB窤n��j�f��|�q!�,,9*���ˍ#t��#���م��&C窤�k�0+�gm�x��*!�,#:+���ˍct��#���م��&CB窤n��j�f��|�q!�,:+���ˍct��#���م��&CB窤n��j�f��|�q!�,:+���ˍct��#���م��&CB窤n��j�f��|�q!�,	9*���ˍ#t��#���م��&C窤�k�0+�gm�x��*;media/responsive.less000064400000001336151167475130010725
0ustar00(~"@{MediaManager}") {
	/*Palm only*/
	@media (max-width: 480px) {
		.mediaModalGroup {
			padding: 0 10px;
		}
		.browserTreeItemField {
			float: none;
			height: auto;
			width: 100%;
		}
		.browserItemField {
			margin-left: 0;
		}
		.mediaModal {
			.modalHeader {
				.modalTitle {
					position: relative;
					display: none;
				}
				.modalButtons {
					float: none;
				}
				button.modalButton {
					&.uploaderButton,
					&.browserButton {
						float: left;
					}

				}
			}//modalHeader
			.modalToolbar {
				height: 106px;
				.topActions {
					position: relative;
					right: auto;
				}
			}
		}

		.browser {
			.browserItemField {
				&.view-tile {
					.browserItem {
					}
				}
			}
		}
	}//mediaquery

}
media/style.css000064400000306021151167475130007511 0ustar00/*Defined the
icon position for All FF*/
/*---------------------------------------------------
    LESS Elements 0.6
  ---------------------------------------------------
    A set of useful LESS mixins by Dmitry Fadeyev
    Special thanks for mixin suggestions to:
      Kris Van Herzeele,
      Benoit Adam,
      Portenart Emile-Victor,
      Ryan Faerman

    More info at: http://lesselements.com
-----------------------------------------------------*/
#EasyBlogMediaManager {
  /* Determinate only overrides */

  /* Overlay */

}
#EasyBlogMediaManager .button-tooltip {
  background: none repeat scroll 0 0 #FFFFFF;
  border: 1px solid #BBBBBB;
  border-radius: 2px 2px 2px 2px;
  padding: 10px;
  text-shadow: 0 0 0 transparent;
  -moz-text-shadow: 0 0 0 transparent;
  -webkit-text-shadow: 0 0 0 transparent;
  /*
        filter:
progid:DXImageTransform.Microsoft.dropshadow(OffX=@horizontalOffset,
OffY=verticalOffset, Color='@color', Positive='true');
        -ms-filter:
"progid:DXImageTransform.Microsoft.dropshadow(OffX=@horizontalOffset,
OffY=verticalOffset, Color='@color',
Positive='true')";
        *zoom: 1;
    */

  color: #444 !important;
  position: absolute;
  text-align: left;
  width: 250px;
  z-index: 2;
}
#EasyBlogMediaManager .button-tooltip > i {
  background:
url("../../../../components/com_easyblog/themes/dashboard/system/images/a-point-top.png")
no-repeat top left transparent;
  display: block;
  width: 15px;
  height: 8px;
  position: absolute;
  top: -8px;
  right: 12px;
  z-index: 3;
}
#EasyBlogMediaManager .hints {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: #f6f6f6;
  text-align: center;
  z-index: 1;
}
#EasyBlogMediaManager .hints .hint {
  margin-top: -11px;
  position: absolute;
  top: 50%;
  width: 100%;
}
#EasyBlogMediaManager .hints .hint-label {
  font-size: 22px;
  line-height: 22px;
  padding: 12px;
  display: block;
  color: #bbb;
  text-shadow: 1px 1px 0px #ffffff;
  -moz-text-shadow: 1px 1px 0px #ffffff;
  -webkit-text-shadow: 1px 1px 0px #ffffff;
  /*
        filter:
progid:DXImageTransform.Microsoft.dropshadow(OffX=@horizontalOffset,
OffY=verticalOffset, Color='@color', Positive='true');
        -ms-filter:
"progid:DXImageTransform.Microsoft.dropshadow(OffX=@horizontalOffset,
OffY=verticalOffset, Color='@color',
Positive='true')";
        *zoom: 1;
    */

}
#EasyBlogMediaManager .hints .hint-content {
  display: block;
  font-size: 12px;
  height: 22px;
  line-height: 22px;
  color: #999;
  text-shadow: 1px 1px 0 #ffffff;
  -moz-text-shadow: 1px 1px 0 #ffffff;
  -webkit-text-shadow: 1px 1px 0 #ffffff;
  /*
        filter:
progid:DXImageTransform.Microsoft.dropshadow(OffX=@horizontalOffset,
OffY=verticalOffset, Color='@color', Positive='true');
        -ms-filter:
"progid:DXImageTransform.Microsoft.dropshadow(OffX=@horizontalOffset,
OffY=verticalOffset, Color='@color',
Positive='true')";
        *zoom: 1;
    */

}
#EasyBlogMediaManager button.button {
  display: inline-block;
  background: #fafafa;
  margin: 0;
  padding: 0 8px !important;
  height: 28px;
  font-weight: bold;
  font-family: 'Lucida Grande', Tahoma, sans-serif;
  font-size: 11px;
  line-height: 11px;
  color: #555 !important;
  text-decoration: none !important;
  width: auto;
  overflow: visible;
  vertical-align: top;
  cursor: pointer;
  position: relative;
  z-index: 1;
  text-transform: none !important;
  border: 1px solid #aaa;
  border-bottom-color: #999;
  -webkit-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.7);
  -moz-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.7);
  box-shadow: 0 1px 0 rgba(255, 255, 255, 0.7);
  -webkit-border-radius: 3px;
  -moz-border-radius: 3px;
  border-radius: 3px;
  -moz-background-clip: padding;
  -webkit-background-clip: padding-box;
  background-clip: padding-box;
  background-color: #eeeeee;
  background-repeat: repeat-x;
  background-image: -khtml-gradient(linear, left top, left bottom,
from(#ffffff), to(#eeeeee));
  /* Konqueror */

  background-image: -moz-linear-gradient(#ffffff, #eeeeee);
  /* FF 3.6+ */

  background-image: -ms-linear-gradient(#ffffff, #eeeeee);
  /* IE10 */

  background-image: -webkit-gradient(linear, left top, left bottom,
color-stop(0%, #ffffff), color-stop(100%, #eeeeee));
  /* Safari 4+, Chrome 2+ */

  background-image: -webkit-linear-gradient(#ffffff, #eeeeee);
  /* Safari 5.1+, Chrome 10+ */

  background-image: -o-linear-gradient(#ffffff, #eeeeee);
  /* Opera 11.10 */

  filter:
progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff',
endColorstr='#eeeeee', GradientType=0);
  /* IE6 & IE7 */

  -ms-filter:
"progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff',
endColorstr='#eeeeee', GradientType=0)";
  /* IE8+ */

  background-image: linear-gradient(#ffffff, #eeeeee);
  /* the standard */

  text-shadow: 1px 1px 0px #ffffff;
  -moz-text-shadow: 1px 1px 0px #ffffff;
  -webkit-text-shadow: 1px 1px 0px #ffffff;
  /*
        filter:
progid:DXImageTransform.Microsoft.dropshadow(OffX=@horizontalOffset,
OffY=verticalOffset, Color='@color', Positive='true');
        -ms-filter:
"progid:DXImageTransform.Microsoft.dropshadow(OffX=@horizontalOffset,
OffY=verticalOffset, Color='@color',
Positive='true')";
        *zoom: 1;
    */

}
#EasyBlogMediaManager button.button.active {
  border: 1px solid #5e5e5e;
  border-bottom-color: #808080;
}
#EasyBlogMediaManager button.button.green-button {
  border: 1px solid #87ab60;
  border-bottom-color: #74954f;
}
#EasyBlogMediaManager button.button.green-button.active {
  border: 1px solid #3a4b27;
  border-bottom-color: #5a743d;
}
#EasyBlogMediaManager button.button::-moz-focus-inner {
  border: 0;
  padding: 0;
  margin: 0;
}
#EasyBlogMediaManager button.button.hover,
#EasyBlogMediaManager button.button:hover {
  background-color: #fbfbfb;
  background-repeat: repeat-x;
  background-image: -khtml-gradient(linear, left top, left bottom,
from(#ffffff), to(#fbfbfb));
  /* Konqueror */

  background-image: -moz-linear-gradient(#ffffff, #fbfbfb);
  /* FF 3.6+ */

  background-image: -ms-linear-gradient(#ffffff, #fbfbfb);
  /* IE10 */

  background-image: -webkit-gradient(linear, left top, left bottom,
color-stop(0%, #ffffff), color-stop(100%, #fbfbfb));
  /* Safari 4+, Chrome 2+ */

  background-image: -webkit-linear-gradient(#ffffff, #fbfbfb);
  /* Safari 5.1+, Chrome 10+ */

  background-image: -o-linear-gradient(#ffffff, #fbfbfb);
  /* Opera 11.10 */

  filter:
progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff',
endColorstr='#fbfbfb', GradientType=0);
  /* IE6 & IE7 */

  -ms-filter:
"progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff',
endColorstr='#fbfbfb', GradientType=0)";
  /* IE8+ */

  background-image: linear-gradient(#ffffff, #fbfbfb);
  /* the standard */

}
#EasyBlogMediaManager button.button.active {
  background: #999;
  -webkit-box-shadow: 0 1px 0 rgba(255,255,255,0.7), 0 2px 5px rgba(0, 0,
0, 0.4) inset;
  -moz-box-shadow: 0 1px 0 rgba(255,255,255,0.7), 0 2px 5px rgba(0, 0, 0,
0.4) inset;
  box-shadow: 0 1px 0 rgba(255,255,255,0.7), 0 2px 5px rgba(0, 0, 0, 0.4)
inset;
  color: #fff !important;
}
#EasyBlogMediaManager button.button.green-button {
  color: #fff !important;
  text-shadow: 1px 1px 0px #74954f;
  -moz-text-shadow: 1px 1px 0px #74954f;
  -webkit-text-shadow: 1px 1px 0px #74954f;
  /*
        filter:
progid:DXImageTransform.Microsoft.dropshadow(OffX=@horizontalOffset,
OffY=verticalOffset, Color='@color', Positive='true');
        -ms-filter:
"progid:DXImageTransform.Microsoft.dropshadow(OffX=@horizontalOffset,
OffY=verticalOffset, Color='@color',
Positive='true')";
        *zoom: 1;
    */

  background-color: #85bf46;
  background-repeat: repeat-x;
  background-image: -khtml-gradient(linear, left top, left bottom,
from(#9fda5f), to(#85bf46));
  /* Konqueror */

  background-image: -moz-linear-gradient(#9fda5f, #85bf46);
  /* FF 3.6+ */

  background-image: -ms-linear-gradient(#9fda5f, #85bf46);
  /* IE10 */

  background-image: -webkit-gradient(linear, left top, left bottom,
color-stop(0%, #9fda5f), color-stop(100%, #85bf46));
  /* Safari 4+, Chrome 2+ */

  background-image: -webkit-linear-gradient(#9fda5f, #85bf46);
  /* Safari 5.1+, Chrome 10+ */

  background-image: -o-linear-gradient(#9fda5f, #85bf46);
  /* Opera 11.10 */

  filter:
progid:DXImageTransform.Microsoft.gradient(startColorstr='#9fda5f',
endColorstr='#85bf46', GradientType=0);
  /* IE6 & IE7 */

  -ms-filter:
"progid:DXImageTransform.Microsoft.gradient(startColorstr='#9fda5f',
endColorstr='#85bf46', GradientType=0)";
  /* IE8+ */

  background-image: linear-gradient(#9fda5f, #85bf46);
  /* the standard */

}
#EasyBlogMediaManager button.button.green-button:hover {
  background-color: #91c659;
  background-repeat: repeat-x;
  background-image: -khtml-gradient(linear, left top, left bottom,
from(#abdf74), to(#91c659));
  /* Konqueror */

  background-image: -moz-linear-gradient(#abdf74, #91c659);
  /* FF 3.6+ */

  background-image: -ms-linear-gradient(#abdf74, #91c659);
  /* IE10 */

  background-image: -webkit-gradient(linear, left top, left bottom,
color-stop(0%, #abdf74), color-stop(100%, #91c659));
  /* Safari 4+, Chrome 2+ */

  background-image: -webkit-linear-gradient(#abdf74, #91c659);
  /* Safari 5.1+, Chrome 10+ */

  background-image: -o-linear-gradient(#abdf74, #91c659);
  /* Opera 11.10 */

  filter:
progid:DXImageTransform.Microsoft.gradient(startColorstr='#abdf74',
endColorstr='#91c659', GradientType=0);
  /* IE6 & IE7 */

  -ms-filter:
"progid:DXImageTransform.Microsoft.gradient(startColorstr='#abdf74',
endColorstr='#91c659', GradientType=0)";
  /* IE8+ */

  background-image: linear-gradient(#abdf74, #91c659);
  /* the standard */

}
#EasyBlogMediaManager button.button .button-tooltip {
  display: none;
  top: 38px;
  right: -1px;
}
#EasyBlogMediaManager button.button.hover .button-tooltip,
#EasyBlogMediaManager button.button:hover .button-tooltip {
  display: block;
}
@-moz-document url-prefix() {
  
}
#EasyBlogMediaManager progress[role] {
  display: inline-block;
  position: relative;
  width: 90%;
  background: #fff;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}
#EasyBlogMediaManager progress[role],
#EasyBlogMediaManager progress[aria-valuenow]:before {
  background-color: #5af;
}
#EasyBlogMediaManager progress[role],
#EasyBlogMediaManager progress[role]:after {
  background-repeat: repeat-x;
  background-position: 0 0;
  -moz-background-size: auto 100%;
  -webkit-background-size: auto 100%;
  background-size: auto 100%;
}
#EasyBlogMediaManager progress[aria-valuenow] {
  background: #eee;
}
#EasyBlogMediaManager progress[aria-valuenow]:before {
  content: "";
  display: block;
  height: 100%;
}
#EasyBlogMediaManager progress[role]:after {
  content: "";
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
}
#EasyBlogMediaManager .mediaModalGroup {
  display: table-cell;
  vertical-align: middle;
  text-align: center;
  width: 100%;
  height: 100%;
  padding: 0 80px;
}
#EasyBlogMediaManager .mediaModal {
  position: absolute;
  top: 9999px;
  width: 100%;
  height: 85%;
  margin: 0 auto;
  overflow: hidden;
  -webkit-box-shadow: 0px 0px 64px rgba(0, 0, 0, 0.8);
  -moz-box-shadow: 0px 0px 64px rgba(0, 0, 0, 0.8);
  box-shadow: 0px 0px 64px rgba(0, 0, 0, 0.8);
  border: 1px solid #292F3A;
  z-index: 2;
  text-align: left;
}
#EasyBlogMediaManager .mediaModal.active {
  top: 0;
  position: relative;
}
#EasyBlogMediaManager .mediaModal.loaderModal {
  background: url("loader.bar.gif") center center no-repeat
#f6f6f6;
}
#EasyBlogMediaManager .mediaModal .modalHeader {
  background-color: #dfdfdf;
  background-repeat: repeat-x;
  background-image: -khtml-gradient(linear, left top, left bottom,
from(#f5f5f5), to(#dfdfdf));
  /* Konqueror */

  background-image: -moz-linear-gradient(#f5f5f5, #dfdfdf);
  /* FF 3.6+ */

  background-image: -ms-linear-gradient(#f5f5f5, #dfdfdf);
  /* IE10 */

  background-image: -webkit-gradient(linear, left top, left bottom,
color-stop(0%, #f5f5f5), color-stop(100%, #dfdfdf));
  /* Safari 4+, Chrome 2+ */

  background-image: -webkit-linear-gradient(#f5f5f5, #dfdfdf);
  /* Safari 5.1+, Chrome 10+ */

  background-image: -o-linear-gradient(#f5f5f5, #dfdfdf);
  /* Opera 11.10 */

  filter:
progid:DXImageTransform.Microsoft.gradient(startColorstr='#f5f5f5',
endColorstr='#dfdfdf', GradientType=0);
  /* IE6 & IE7 */

  -ms-filter:
"progid:DXImageTransform.Microsoft.gradient(startColorstr='#f5f5f5',
endColorstr='#dfdfdf', GradientType=0)";
  /* IE8+ */

  background-image: linear-gradient(#f5f5f5, #dfdfdf);
  /* the standard */

  background-color: #343a44;
  background-repeat: repeat-x;
  background-image: -khtml-gradient(linear, left top, left bottom,
from(#444b55), to(#343a44));
  /* Konqueror */

  background-image: -moz-linear-gradient(#444b55, #343a44);
  /* FF 3.6+ */

  background-image: -ms-linear-gradient(#444b55, #343a44);
  /* IE10 */

  background-image: -webkit-gradient(linear, left top, left bottom,
color-stop(0%, #444b55), color-stop(100%, #343a44));
  /* Safari 4+, Chrome 2+ */

  background-image: -webkit-linear-gradient(#444b55, #343a44);
  /* Safari 5.1+, Chrome 10+ */

  background-image: -o-linear-gradient(#444b55, #343a44);
  /* Opera 11.10 */

  filter:
progid:DXImageTransform.Microsoft.gradient(startColorstr='#444b55',
endColorstr='#343a44', GradientType=0);
  /* IE6 & IE7 */

  -ms-filter:
"progid:DXImageTransform.Microsoft.gradient(startColorstr='#444b55',
endColorstr='#343a44', GradientType=0)";
  /* IE8+ */

  background-image: linear-gradient(#444b55, #343a44);
  /* the standard */

  height: 48px;
  border-bottom: 1px solid #ccc;
  overflow: hidden;
  position: relative;
  z-index: 5;
  color: #fff;
  text-shadow: 1px 1px 0px #343a44 1px 2px #555555;
  -moz-text-shadow: 1px 1px 0px #343a44 1px 2px #555555;
  -webkit-text-shadow: 1px 1px 0px #343a44 1px 2px #555555;
  /*
        filter:
progid:DXImageTransform.Microsoft.dropshadow(OffX=@horizontalOffset,
OffY=verticalOffset, Color='@color', Positive='true');
        -ms-filter:
"progid:DXImageTransform.Microsoft.dropshadow(OffX=@horizontalOffset,
OffY=verticalOffset, Color='@color',
Positive='true')";
        *zoom: 1;
    */

}
#EasyBlogMediaManager .mediaModal .modalHeader .modalTitle {
  text-align: left;
  font-size: 18px;
  line-height: 48px;
  position: absolute;
  padding-left: 10px;
  text-shadow: 1px 1px 0px #343a44 1px 2px #555555;
  -moz-text-shadow: 1px 1px 0px #343a44 1px 2px #555555;
  -webkit-text-shadow: 1px 1px 0px #343a44 1px 2px #555555;
  /*
        filter:
progid:DXImageTransform.Microsoft.dropshadow(OffX=@horizontalOffset,
OffY=verticalOffset, Color='@color', Positive='true');
        -ms-filter:
"progid:DXImageTransform.Microsoft.dropshadow(OffX=@horizontalOffset,
OffY=verticalOffset, Color='@color',
Positive='true')";
        *zoom: 1;
    */

  z-index: 1;
}
#EasyBlogMediaManager .mediaModal .modalHeader .modalButtons {
  border-left: 1px solid #343a44;
  float: right;
}
#EasyBlogMediaManager .mediaModal .modalHeader button.modalButton {
  display: inline-block;
  background: transparent;
  margin: 0;
  padding: 0 8px;
  font-weight: bold;
  font-family: 'Lucida Grande', Tahoma, sans-serif;
  font-size: 12px;
  line-height: 12px;
  color: #fff !important;
  text-decoration: none !important;
  vertical-align: top;
  width: auto;
  height: 48px;
  overflow: visible;
  position: relative;
  z-index: 2;
  float: right;
  cursor: pointer;
  border: none;
  border-right: 1px solid #343a44;
  border-left: 1px solid #575e6b;
}
#EasyBlogMediaManager .mediaModal .modalHeader button.modalButton > i {
  width: 16px;
  height: 16px;
  position: absolute;
  top: 16px;
  left: 8px;
  display: inline-block;
}
#EasyBlogMediaManager .mediaModal .modalHeader button.modalButton:hover {
  background-color: #343a44;
  background-repeat: repeat-x;
  background-image: -khtml-gradient(linear, left top, left bottom,
from(#575e6b), to(#343a44));
  /* Konqueror */

  background-image: -moz-linear-gradient(#575e6b, #343a44);
  /* FF 3.6+ */

  background-image: -ms-linear-gradient(#575e6b, #343a44);
  /* IE10 */

  background-image: -webkit-gradient(linear, left top, left bottom,
color-stop(0%, #575e6b), color-stop(100%, #343a44));
  /* Safari 4+, Chrome 2+ */

  background-image: -webkit-linear-gradient(#575e6b, #343a44);
  /* Safari 5.1+, Chrome 10+ */

  background-image: -o-linear-gradient(#575e6b, #343a44);
  /* Opera 11.10 */

  filter:
progid:DXImageTransform.Microsoft.gradient(startColorstr='#575e6b',
endColorstr='#343a44', GradientType=0);
  /* IE6 & IE7 */

  -ms-filter:
"progid:DXImageTransform.Microsoft.gradient(startColorstr='#575e6b',
endColorstr='#343a44', GradientType=0)";
  /* IE8+ */

  background-image: linear-gradient(#575e6b, #343a44);
  /* the standard */

}
#EasyBlogMediaManager .mediaModal .modalHeader button.modalButton.active {
  background: #999;
  background-color: #575e6b;
  background-repeat: repeat-x;
  background-image: -khtml-gradient(linear, left top, left bottom,
from(#444b55), to(#575e6b));
  /* Konqueror */

  background-image: -moz-linear-gradient(#444b55, #575e6b);
  /* FF 3.6+ */

  background-image: -ms-linear-gradient(#444b55, #575e6b);
  /* IE10 */

  background-image: -webkit-gradient(linear, left top, left bottom,
color-stop(0%, #444b55), color-stop(100%, #575e6b));
  /* Safari 4+, Chrome 2+ */

  background-image: -webkit-linear-gradient(#444b55, #575e6b);
  /* Safari 5.1+, Chrome 10+ */

  background-image: -o-linear-gradient(#444b55, #575e6b);
  /* Opera 11.10 */

  filter:
progid:DXImageTransform.Microsoft.gradient(startColorstr='#444b55',
endColorstr='#575e6b', GradientType=0);
  /* IE6 & IE7 */

  -ms-filter:
"progid:DXImageTransform.Microsoft.gradient(startColorstr='#444b55',
endColorstr='#575e6b', GradientType=0)";
  /* IE8+ */

  background-image: linear-gradient(#444b55, #575e6b);
  /* the standard */

}
#EasyBlogMediaManager .mediaModal .modalHeader
button.modalButton.dashboardButton i {
  background: url(icon.media.png) no-repeat;
  background-position: 0px 0px;
  position: relative;
  top: 0;
  left: 0;
  width: 20px;
  height: 20px;
}
#EasyBlogMediaManager .mediaModal .modalHeader
button.modalButton.dashboardButton:hover i {
  background: url(icon.media.png) no-repeat;
  background-position: 0px -32px;
}
#EasyBlogMediaManager .mediaModal .modalHeader
button.modalButton.browserButton {
  padding-left: 26px;
}
#EasyBlogMediaManager .mediaModal .modalHeader
button.modalButton.browserButton i {
  background: url(icon.media.png) no-repeat;
  background-position: -192px 0px;
}
#EasyBlogMediaManager .mediaModal .modalHeader
button.modalButton.uploaderButton {
  padding-left: 26px;
}
#EasyBlogMediaManager .mediaModal .modalHeader
button.modalButton.uploaderButton i {
  background: url(icon.media.png) no-repeat;
  background-position: -192px -32px;
}
#EasyBlogMediaManager .mediaModal .modalToolbar {
  background-color: #dfdfdf;
  background-repeat: repeat-x;
  background-image: -khtml-gradient(linear, left top, left bottom,
from(#f5f5f5), to(#dfdfdf));
  /* Konqueror */

  background-image: -moz-linear-gradient(#f5f5f5, #dfdfdf);
  /* FF 3.6+ */

  background-image: -ms-linear-gradient(#f5f5f5, #dfdfdf);
  /* IE10 */

  background-image: -webkit-gradient(linear, left top, left bottom,
color-stop(0%, #f5f5f5), color-stop(100%, #dfdfdf));
  /* Safari 4+, Chrome 2+ */

  background-image: -webkit-linear-gradient(#f5f5f5, #dfdfdf);
  /* Safari 5.1+, Chrome 10+ */

  background-image: -o-linear-gradient(#f5f5f5, #dfdfdf);
  /* Opera 11.10 */

  filter:
progid:DXImageTransform.Microsoft.gradient(startColorstr='#f5f5f5',
endColorstr='#dfdfdf', GradientType=0);
  /* IE6 & IE7 */

  -ms-filter:
"progid:DXImageTransform.Microsoft.gradient(startColorstr='#f5f5f5',
endColorstr='#dfdfdf', GradientType=0)";
  /* IE8+ */

  background-image: linear-gradient(#f5f5f5, #dfdfdf);
  /* the standard */

  border-bottom: 1px solid #ccc;
  height: 56px;
  width: 100%;
  position: relative;
  z-index: 4;
}
#EasyBlogMediaManager .mediaModal .modalToolbar .navigation {
  top: 10px;
  left: 10px;
}
#EasyBlogMediaManager .mediaModal .modalToolbar .topActions {
  position: absolute;
  top: 10px;
  right: 10px;
  margin: 0;
}
#EasyBlogMediaManager .mediaModal .modalToolbar .topActions button.button {
  float: right;
  height: 36px;
  padding-left: 30px !important;
}
#EasyBlogMediaManager .mediaModal .modalToolbar .topActions button.button
> i {
  display: inline-block;
  position: absolute;
  top: 8px;
  left: 8px;
  width: 16px;
  height: 16px;
}
#EasyBlogMediaManager .mediaModal .modalToolbar .topActions button.button +
button.button {
  margin-right: 6px;
}
#EasyBlogMediaManager .mediaModal .modalContent {
  position: relative;
  z-index: 3;
  display: block;
}
#EasyBlogMediaManager .mediaModal .modalFooter {
  background-color: #dfdfdf;
  background-repeat: repeat-x;
  background-image: -khtml-gradient(linear, left top, left bottom,
from(#f5f5f5), to(#dfdfdf));
  /* Konqueror */

  background-image: -moz-linear-gradient(#f5f5f5, #dfdfdf);
  /* FF 3.6+ */

  background-image: -ms-linear-gradient(#f5f5f5, #dfdfdf);
  /* IE10 */

  background-image: -webkit-gradient(linear, left top, left bottom,
color-stop(0%, #f5f5f5), color-stop(100%, #dfdfdf));
  /* Safari 4+, Chrome 2+ */

  background-image: -webkit-linear-gradient(#f5f5f5, #dfdfdf);
  /* Safari 5.1+, Chrome 10+ */

  background-image: -o-linear-gradient(#f5f5f5, #dfdfdf);
  /* Opera 11.10 */

  filter:
progid:DXImageTransform.Microsoft.gradient(startColorstr='#f5f5f5',
endColorstr='#dfdfdf', GradientType=0);
  /* IE6 & IE7 */

  -ms-filter:
"progid:DXImageTransform.Microsoft.gradient(startColorstr='#f5f5f5',
endColorstr='#dfdfdf', GradientType=0)";
  /* IE8+ */

  background-image: linear-gradient(#f5f5f5, #dfdfdf);
  /* the standard */

  border-top: 1px solid #ccc;
  height: 36px;
  width: 100%;
  position: absolute;
  bottom: 0;
  z-index: 4;
}
#EasyBlogMediaManager .mediaModal .modalFooter .footerActions {
  padding: 4px;
  position: absolute;
  top: 0;
}
#EasyBlogMediaManager .mediaModal .modalFooter .footerActions.right-actions
{
  right: 0;
}
#EasyBlogMediaManager .mediaModal .modalFooter .footerActions.left-actions
{
  left: 0;
}
#EasyBlogMediaManager .mediaModal .modalFooter .footerActions button.button
{
  height: 27px;
}
#EasyBlogMediaManager .modalPrompt {
  width: 100%;
  height: 100%;
  position: absolute;
  z-index: 5;
  top: -99999px;
  left: -99999px;
}
#EasyBlogMediaManager .modalPrompt.active {
  top: 0;
  left: 0;
}
#EasyBlogMediaManager .modalPrompt.active .overlay {
  -moz-opacity: 0.6;
  -khtml-opacity: 0.6;
  -webkit-opacity: 0.6;
  opacity: 0.6;
  -ms-filter: progid:DXImageTransform.Microsoft.Alpha(opacity=60);
  filter: alpha(opacity=60);
  -webkit-transition: opacity 0.5 ease-out;
  -moz-transition: opacity 0.5 ease-out;
  transition: opacity 0.5 ease-out;
  display: none;
}
#EasyBlogMediaManager .modalPrompt .overlay {
  width: 100%;
  height: 100%;
  background: #fff;
  -moz-opacity: 0;
  -khtml-opacity: 0;
  -webkit-opacity: 0;
  opacity: 0;
  -ms-filter: progid:DXImageTransform.Microsoft.Alpha(opacity=0);
  filter: alpha(opacity=0);
  position: relative;
  z-index: 1;
  -webkit-transition: opacity 0.5 ease-out;
  -moz-transition: opacity 0.5 ease-out;
  transition: opacity 0.5 ease-out;
  display: none;
}
#EasyBlogMediaManager .modalPrompt .modalPromptDialogs {
  width: 100%;
  height: 100%;
}
#EasyBlogMediaManager .modalPrompt .modalPromptDialog {
  display: block;
  position: absolute;
  z-index: 2;
  width: 400px;
  height: 250px;
  margin-left: -200px;
  margin-top: -149px;
  background: white;
  border: 1px solid #aaa;
  -webkit-border-radius: 12px;
  -moz-border-radius: 12px;
  border-radius: 12px;
  -moz-background-clip: padding;
  -webkit-background-clip: padding-box;
  background-clip: padding-box;
  -webkit-box-shadow: 0px 0px 32px 0px rgba(0, 0, 0, 0.6);
  -moz-box-shadow: 0px 0px 32px 0px rgba(0, 0, 0, 0.6);
  box-shadow: 0px 0px 32px 0px rgba(0, 0, 0, 0.6);
  top: -9999px;
  left: -9999px;
  text-align: left;
}
#EasyBlogMediaManager .modalPrompt .modalPromptDialog.active {
  top: 50%;
  left: 50%;
  z-index: 3;
}
#EasyBlogMediaManager .modalPrompt .promptState {
  display: none;
}
#EasyBlogMediaManager .modalPrompt .promptState.active {
  display: block;
}
#EasyBlogMediaManager .modalPrompt .promptTitle {
  padding: 15px 15px 10px;
  font-size: 18px;
  line-height: 18px;
  font-weight: bold;
  -o-text-overflow: ellipsis;
  -ms-text-overflow: ellipsis;
  text-overflow: ellipsis;
  white-space: nowrap;
  overflow: hidden;
}
#EasyBlogMediaManager .modalPrompt .promptText {
  font-size: 12px;
  line-height: 16px;
  padding: 0 15px;
  color: #666;
  display: block;
}
#EasyBlogMediaManager .modalPrompt .promptForm {
  padding: 30px;
}
#EasyBlogMediaManager .modalPrompt .promptForm label {
  height: 24px;
  line-height: 24px;
}
#EasyBlogMediaManager .modalPrompt .promptForm input.text {
  border: 1px solid #ccc;
  padding: 0 3px;
  height: 24px;
  line-height: 24px;
  font-size: 13px;
  margin: 0 0 0 5px;
}
#EasyBlogMediaManager .modalPrompt .promptActions {
  position: absolute;
  bottom: 0;
  right: 0;
  padding: 0 15px 15px 0;
}
#EasyBlogMediaManager .modalPrompt .promptLoader {
  position: absolute;
  left: 0;
  bottom: 0;
  width: 208px;
  height: 13px;
  margin: 0 0 22px 15px;
  background: url(loader.bar.gif) no-repeat -6px -3px;
}
/*Defined the icon position for All FF*/
@-moz-document url-prefix() {
  #EasyBlogMediaManager .mediaModal {
    top: -9999px;
  }
  #EasyBlogMediaManager .mediaModal .modalToolbar .topActions button.button
> i {
    top: 0;
    left: -21px;
  }
  #EasyBlogMediaManager .mediaModal .modalHeader
button.modalButton.uploaderButton > i {
    top: 0;
    left: -22px;
  }
  #EasyBlogMediaManager .browser .browserFooter .browserTreeItemFooter
.createFolderButton > i {
    top: 0;
    left: -20px;
  }
  #EasyBlogMediaManager .browser .browserViewButtons button.button > i {
    top: -8px;
    left: -6px;
  }
  #EasyBlogMediaManager .imageVariationActions button i {
    top: -4px;
    left: -14px;
  }
  #EasyBlogMediaManager .mediaModal .modalHeader button.modalButton > i
{
    top: 0;
    left: -21px;
  }
  #EasyBlogMediaManager .uploader .modalToolbar .changeUploadFolderButton
> i {
    top: 0 !important;
  }
  #EasyBlogMediaManager .uploader .uploadItemGroup .uploadItem
.uploadActions .locateItemButton > i {
    top: 0;
    left: -21px;
  }
  #EasyBlogMediaManager .uploader .uploadItemGroup .uploadItem
.uploadActions button > i {
    top: 0;
    left: -21px;
  }
}
/*Redefined the correct position for FF 4 and above*/
:-moz-any(x),
#EasyBlogMediaManager .mediaModal {
  top: 9999px;
}
:-moz-any(x),
#EasyBlogMediaManager .mediaModal .modalToolbar .topActions button.button i
{
  top: 8px !important;
  left: 8px !important;
}
:-moz-any(x),
#EasyBlogMediaManager .mediaModal .modalHeader
button.modalButton.uploaderButton > i {
  top: 16px !important;
  left: 8px !important;
}
:-moz-any(x),
#EasyBlogMediaManager .browser .browserFooter .browserTreeItemFooter
.createFolderButton > i {
  top: 4px !important;
  left: 6px !important;
}
:-moz-any(x),
#EasyBlogMediaManager .browser .browserViewButtons button.button > i {
  top: 4px !important;
  left: 6px !important;
}
:-moz-any(x),
#EasyBlogMediaManager .imageVariationActions button i {
  top: 2px !important;
  left: 6px !important;
}
:-moz-any(x),
#EasyBlogMediaManager .mediaModal .modalHeader
button.modalButton.browserButton > i {
  top: 16px !important;
  left: 8px !important;
}
:-moz-any(x),
#EasyBlogMediaManager .uploader .uploadItemGroup .uploadItem .uploadActions
button > i {
  top: 4px !important;
  left: 6px !important;
}
:-moz-any(x),
#EasyBlogMediaManager .uploader .uploadItemGroup .uploadItem .uploadActions
.locateItemButton > i {
  top: 4px !important;
  left: 6px !important;
}
#EasyBlogMediaManager {
  font-size: 12px !important;
  line-height: 12px !important;
  font-family: "Lucida Grande", "Arial", sans-serif
!important;
  background: transparent !important;
  overflow-y: hidden;
  overflow-x: hidden;
  z-index: 9999999;
  width: 100%;
  height: 100%;
  color: #111;
  position: fixed;
  top: -99999px;
  left: 0;
  display: table;
}
#EasyBlogMediaManager input,
#EasyBlogMediaManager button,
#EasyBlogMediaManager select,
#EasyBlogMediaManager textarea {
  font-family: "Lucida Grande", "Arial", sans-serif
!important;
}
#EasyBlogMediaManager .media-overlay {
  width: 100%;
  height: 100%;
  position: absolute;
  top: 0;
  right: 0;
  z-index: 1;
  -webkit-transition: all 0.2s ease-out;
  -moz-transition: all 0.2s ease-out;
  transition: all 0.2s ease-out;
  display: none;
}
#EasyBlogMediaManager.active {
  top: 0;
  left: 0;
}
#EasyBlogMediaManager.active .media-overlay {
  -webkit-transition: all 0.2s ease-out;
  -moz-transition: all 0.2s ease-out;
  transition: all 0.2s ease-out;
}
#EasyBlogMediaManager .loaderModal .modalContent {
  width: 100%;
  height: 100%;
  text-align: center;
}
#EasyBlogMediaManager .assetItemGroup {
  width: 130px;
  margin: 0 auto;
  height: 110px;
  top: 50%;
  margin-top: -190px;
  position: relative;
}
#EasyBlogMediaManager .assetItem {
  padding: 6px;
  padding-left: 28px;
  text-align: left;
  position: relative;
}
#EasyBlogMediaManager .assetItem i {
  width: 16px;
  height: 16px;
  top: 4px;
  left: 4px;
  display: none;
  position: absolute;
}
#EasyBlogMediaManager .assetItem.done i {
  background: url(icon.media.png) no-repeat;
  background-position: -192px -64px;
  display: block;
}
#EasyBlogMediaManager .assetItem.failed i {
  background: url(icon.media.png) no-repeat;
  background-position: -224px -64px;
  display: block;
}
#EasyBlogMediaManager .recentActivities .promptContent {
  padding: 5px 15px;
}
#EasyBlogMediaManager .recentActivities .recentItemGroup {
  background: #F5F5F5;
  border: 1px solid #CCCCCC;
  height: 145px;
  overflow: auto;
}
#EasyBlogMediaManager .recentActivities .recentItem {
  position: relative;
  height: 32px;
  border-bottom: 1px solid #ddd;
  height: 32px;
  padding: 4px 8px;
}
#EasyBlogMediaManager .recentActivities .recentItem .item-wrap {
  position: relative;
  overflow: hidden;
}
#EasyBlogMediaManager .recentActivities .recentItem .item-image {
  display: table;
  width: 32px;
  height: 32px;
}
#EasyBlogMediaManager .recentActivities .recentItem .item-image-wrap {
  display: table-cell;
  text-align: center;
  vertical-align: middle;
}
#EasyBlogMediaManager .recentActivities .recentItem .itemIcon {
  max-width: 32px;
  max-height: 32px;
  display: inline;
  z-index: 1;
  vertical-align: middle;
}
#EasyBlogMediaManager .recentActivities .recentItem .itemTitle {
  display: block;
  text-align: left;
  position: absolute;
  z-index: 2;
  font-size: 12px;
  -webkit-touch-callout: none;
  -webkit-user-select: none;
  -khtml-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
  top: 0px;
  left: 40px;
  width: 270px;
  overflow: hidden;
  white-space: nowrap;
  -o-text-overflow: ellipsis;
  -ms-text-overflow: ellipsis;
  text-overflow: ellipsis;
  padding-top: 4px;
}
#EasyBlogMediaManager .recentActivities .recentItem .itemProgress {
  color: #888888;
  font-size: 10px;
  display: block;
  line-height: 16px;
}
#EasyBlogMediaManager .recentActivities .recentItem i {
  width: 16px;
  height: 16px;
  position: absolute;
  top: 7px;
  right: 4px;
  display: none;
}
#EasyBlogMediaManager .recentActivities .recentItem.loading i {
  background: url(loader.gif) center center no-repeat;
  display: block;
}
#EasyBlogMediaManager .recentActivities .recentItem.done i {
  background: url(icon.media.png) no-repeat;
  background-position: -192px -64px;
  display: block;
}
#EasyBlogMediaManager .recentActivities .recentItem.failed i {
  background: url(icon.media.png) no-repeat;
  background-position: -224px -64px;
  display: block;
}
#EasyBlogMediaManager .navigation {
  position: relative;
  text-align: left;
  padding: 0;
  margin: 0;
  border: none;
}
#EasyBlogMediaManager .navigation .navigationInfo {
  height: 14px;
  line-height: 18px;
  /* From 14px to 18px for visual compensation. */

  font-size: 10px;
  color: #888;
  text-shadow: 1px 1px 0px #FCFCFC;
}
#EasyBlogMediaManager .navigation .navigationPathway {
  height: 22px;
  width: 200%;
  overflow: hidden;
}
#EasyBlogMediaManager .navigation .navigationPathway .navigationItemGroup {
  height: 22px;
  line-height: 22px;
  float: left;
}
#EasyBlogMediaManager .navigation .navigationPathway .navigationItemGroup
.navigationItem {
  display: none;
}
#EasyBlogMediaManager .navigation .navigationPathway .navigationItemGroup
.navigationItemStub {
  background: #d1ddf4;
  border: 1px solid #91AAD6;
  -webkit-border-radius: 3px;
  -moz-border-radius: 3px;
  border-radius: 3px;
  -moz-background-clip: padding;
  -webkit-background-clip: padding-box;
  background-clip: padding-box;
  padding: 0 3px;
}
#EasyBlogMediaManager .navigation .navigationPathway
.navigationItemGroup.expand .navigationItem {
  display: inline;
}
#EasyBlogMediaManager .navigation .navigationPathway
.navigationItemGroup.expand .navigationItemStub {
  display: none;
}
#EasyBlogMediaManager .navigation .navigationPathway .navigationItemGroup +
.navigationItem {
  margin: 0 0 0 4px;
  padding: 0 0 0 11px;
  position: relative;
}
#EasyBlogMediaManager .navigation .navigationPathway .navigationItemGroup +
.navigationItem i {
  background: url(icon.media.png) no-repeat;
  background-position: -320px 0px;
  width: 8px;
  height: 22px;
  position: absolute;
  top: 0;
  left: 0;
}
#EasyBlogMediaManager .navigation .navigationPathway .navigationItemGroup +
.navigationItemGroup {
  margin: 0 0 0 4px;
  padding: 0 0 0 11px;
  position: relative;
}
#EasyBlogMediaManager .navigation .navigationPathway .navigationItemGroup +
.navigationItemGroup i {
  background: url(icon.media.png) no-repeat;
  background-position: -320px 0px;
  width: 8px;
  height: 22px;
  position: absolute;
  top: 0;
  left: 0;
}
#EasyBlogMediaManager .navigation .navigationPathway .navigationItem {
  height: 22px;
  line-height: 22px;
  font-size: 13px;
  float: left;
}
#EasyBlogMediaManager .navigation .navigationPathway .navigationItem +
.navigationItem {
  margin: 0 0 0 4px;
  padding: 0 0 0 11px;
  position: relative;
}
#EasyBlogMediaManager .navigation .navigationPathway .navigationItem +
.navigationItem i {
  background: url(icon.media.png) no-repeat;
  background-position: -320px 0px;
  width: 8px;
  height: 22px;
  position: absolute;
  top: 0;
  left: 0;
}
#EasyBlogMediaManager .navigation .navigationPathway .navigationItem +
.navigationItemGroup {
  margin: 0 0 0 4px;
  padding: 0 0 0 11px;
  position: relative;
}
#EasyBlogMediaManager .navigation .navigationPathway .navigationItem +
.navigationItemGroup i {
  background: url(icon.media.png) no-repeat;
  background-position: -320px 0px;
  width: 8px;
  height: 22px;
  position: absolute;
  top: 0;
  left: 0;
}
#EasyBlogMediaManager .navigation .navigationPathway.canActivate
.navigationItem {
  cursor: pointer;
}
#EasyBlogMediaManager .navigation .navigationPathway.canActivate
.navigationItem:hover {
  text-decoration: underline;
}
#EasyBlogMediaManager .browser {
  background: #fff;
}
#EasyBlogMediaManager .browser .modalTitle .modalTitleSnippet {
  display: none;
}
#EasyBlogMediaManager .browser.mode-browse .title-browse {
  display: inline;
}
#EasyBlogMediaManager .browser.mode-browse .title-blogimage {
  display: none;
}
#EasyBlogMediaManager .browser.mode-blogimage .title-browse {
  display: none;
}
#EasyBlogMediaManager .browser.mode-blogimage .title-blogimage {
  display: inline;
}
#EasyBlogMediaManager .browser.mode-blogimage .insertItemButton,
#EasyBlogMediaManager .browser.mode-blogimage .customizeItemButton,
#EasyBlogMediaManager .browser.mode-blogimage .insertAsGalleryButton {
  display: none !important;
}
#EasyBlogMediaManager .browser.searching .browserPagination {
  display: none !important;
}
#EasyBlogMediaManager .browser .browserHeader .browserItemActionSet {
  display: none;
}
#EasyBlogMediaManager .browser .browserHeader .browserItemActionSet.active
{
  display: block;
}
#EasyBlogMediaManager .browser .browserHeader .browserItemActionSet
.green-button {
  margin-right: 0 !important;
}
#EasyBlogMediaManager .browser .browserHeader .insertItemButton > i {
  background: url(icon.media.png) no-repeat;
  background-position: -192px -96px;
}
#EasyBlogMediaManager .browser .browserHeader .insertBlogImageButton {
  display: none;
}
#EasyBlogMediaManager .browser .browserHeader .insertBlogImageButton > i
{
  background: url(icon.media.png) no-repeat;
  background-position: -192px -96px;
}
#EasyBlogMediaManager .browser .browserHeader .customizeItemButton > i {
  background: url(icon.media.png) no-repeat;
  background-position: -224px -96px;
}
#EasyBlogMediaManager .browser .browserHeader .insertAsGalleryButton > i
{
  background: url(icon.media.png) no-repeat;
  background-position: -256px -96px;
  width: 20px !important;
}
#EasyBlogMediaManager .browser .browserHeader .removeItemButton {
  padding-left: 27px !important;
}
#EasyBlogMediaManager .browser .browserHeader .removeItemButton > i {
  background: url(icon.media.png) no-repeat;
  background-position: -224px 0px;
}
#EasyBlogMediaManager .browser .browserContent {
  position: relative;
  z-index: 2;
}
#EasyBlogMediaManager .browser .browserFooter {
  position: relative;
  zoom: 1;
}
#EasyBlogMediaManager .browser .browserFooter:before,
#EasyBlogMediaManager .browser .browserFooter:after {
  content: "";
  display: table;
}
#EasyBlogMediaManager .browser .browserFooter:after {
  clear: both;
}
#EasyBlogMediaManager .browser .browserFooter .browserTreeItemFooter {
  width: 180px;
  height: 36px;
  border-right: 1px solid #CCCCCC;
  float: left;
  position: relative;
}
#EasyBlogMediaManager .browser .browserFooter .browserTreeItemFooter
.createFolderButton {
  padding-left: 26px !important;
}
#EasyBlogMediaManager .browser .browserFooter .browserTreeItemFooter
.createFolderButton > i {
  display: inline-block;
  position: absolute;
  top: 4px;
  left: 6px;
  width: 16px;
  height: 16px;
}
#EasyBlogMediaManager .browser .browserFooter .browserTreeItemFooter
.createFolderButton > i {
  background: url(icon.media.png) no-repeat;
  background-position: -288px -96px;
}
#EasyBlogMediaManager .browser .browserFooter .browserItemFooter {
  height: 36px;
  margin-left: 181px;
  border-left: 1px solid #FFFFFF;
  position: relative;
}
#EasyBlogMediaManager .browser .browserFooter .browserPagination i {
  display: block;
  width: 16px;
  height: 16px;
  position: absolute;
  top: 5px;
  left: 6px;
}
#EasyBlogMediaManager .browser .browserFooter .browserPagination
.prevPageButton {
  -webkit-border-top-right-radius: 0px;
  -webkit-border-bottom-right-radius: 0px;
  -webkit-border-bottom-left-radius: 3px;
  -webkit-border-top-left-radius: 3px;
  -moz-border-radius-topright: 0px;
  -moz-border-radius-bottomright: 0px;
  -moz-border-radius-bottomleft: 3px;
  -moz-border-radius-topleft: 3px;
  border-top-right-radius: 0px;
  border-bottom-right-radius: 0px;
  border-bottom-left-radius: 3px;
  border-top-left-radius: 3px;
  -moz-background-clip: padding;
  -webkit-background-clip: padding-box;
  background-clip: padding-box;
  float: right;
  padding-left: 20px;
}
#EasyBlogMediaManager .browser .browserFooter .browserPagination
.prevPageButton > i {
  background: url(icon.media.png) no-repeat;
  background-position: -64px 0px;
}
#EasyBlogMediaManager .browser .browserFooter .browserPagination
.nextPageButton {
  -webkit-border-top-right-radius: 3px;
  -webkit-border-bottom-right-radius: 3px;
  -webkit-border-bottom-left-radius: 0px;
  -webkit-border-top-left-radius: 0px;
  -moz-border-radius-topright: 3px;
  -moz-border-radius-bottomright: 3px;
  -moz-border-radius-bottomleft: 0px;
  -moz-border-radius-topleft: 0px;
  border-top-right-radius: 3px;
  border-bottom-right-radius: 3px;
  border-bottom-left-radius: 0px;
  border-top-left-radius: 0px;
  -moz-background-clip: padding;
  -webkit-background-clip: padding-box;
  background-clip: padding-box;
  float: right;
  padding-left: 20px;
}
#EasyBlogMediaManager .browser .browserFooter .browserPagination
.nextPageButton > i {
  background: url(icon.media.png) no-repeat;
  background-position: -32px 0px;
}
#EasyBlogMediaManager .browser .browserFooter .browserPagination
.pageNumber {
  float: right;
  height: 27px;
  width: 73px;
  margin-left: -1px;
  position: relative;
  -webkit-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.7);
  -moz-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.7);
  box-shadow: 0 1px 0 rgba(255, 255, 255, 0.7);
}
#EasyBlogMediaManager .browser .browserFooter .browserPagination
.pageSelection {
  margin: 0;
  padding: 0;
  border-bottom-color: #999999;
  border-left: none;
  border-right: none;
  position: absolute;
  bottom: 0;
  width: 72px;
  height: 25px;
  list-style: none;
  background: white;
  border: 1px solid #aaa;
  cursor: pointer;
  overflow: none;
}
#EasyBlogMediaManager .browser .browserFooter .browserPagination
.pageSelection .paginationPage {
  display: none;
}
#EasyBlogMediaManager .browser .browserFooter .browserPagination
.pageSelection .paginationPage.selected {
  display: block;
}
#EasyBlogMediaManager .browser .browserFooter .browserPagination
.pageSelection.expanded {
  max-height: 200px;
  min-height: 75px;
  height: auto;
  overflow-y: scroll;
}
#EasyBlogMediaManager .browser .browserFooter .browserPagination
.pageSelection.expanded .paginationPage {
  display: block;
}
#EasyBlogMediaManager .browser .browserFooter .browserPagination
.pageSelection.expanded .paginationPage.selected {
  background-color: #2f59a8;
  background-repeat: repeat-x;
  background-image: -khtml-gradient(linear, left top, left bottom,
from(#4d71b5), to(#2f59a8));
  /* Konqueror */

  background-image: -moz-linear-gradient(#4d71b5, #2f59a8);
  /* FF 3.6+ */

  background-image: -ms-linear-gradient(#4d71b5, #2f59a8);
  /* IE10 */

  background-image: -webkit-gradient(linear, left top, left bottom,
color-stop(0%, #4d71b5), color-stop(100%, #2f59a8));
  /* Safari 4+, Chrome 2+ */

  background-image: -webkit-linear-gradient(#4d71b5, #2f59a8);
  /* Safari 5.1+, Chrome 10+ */

  background-image: -o-linear-gradient(#4d71b5, #2f59a8);
  /* Opera 11.10 */

  filter:
progid:DXImageTransform.Microsoft.gradient(startColorstr='#4d71b5',
endColorstr='#2f59a8', GradientType=0);
  /* IE6 & IE7 */

  -ms-filter:
"progid:DXImageTransform.Microsoft.gradient(startColorstr='#4d71b5',
endColorstr='#2f59a8', GradientType=0)";
  /* IE8+ */

  background-image: linear-gradient(#4d71b5, #2f59a8);
  /* the standard */

  color: white;
}
#EasyBlogMediaManager .browser .browserFooter .browserPagination
.paginationPage {
  height: 25px;
  line-height: 25px;
  text-align: center;
  cursor: pointer;
}
#EasyBlogMediaManager .browser .browserFooter .browserPagination
.paginationPage:hover {
  background: #ccd9f1;
}
#EasyBlogMediaManager .browser .browserFooter .browserPagination
.pageBreakdown {
  display: none;
}
#EasyBlogMediaManager .browser .browserViewButtons {
  position: absolute;
  top: 4px;
  right: 4px;
}
#EasyBlogMediaManager .browser .browserViewButtons button.button {
  float: left;
  padding: 0 14px !important;
  position: relative;
}
#EasyBlogMediaManager .browser .browserViewButtons button.button > i {
  display: block;
  width: 16px;
  height: 16px;
  position: absolute;
  top: 4px;
  left: 6px;
}
#EasyBlogMediaManager .browser .browserViewButtons button.button.active {
  background: #777 !important;
  filter: none !important;
}
#EasyBlogMediaManager .browser .browserViewButtons
button.button.browserListViewButton {
  -webkit-border-top-right-radius: 0px;
  -webkit-border-bottom-right-radius: 0px;
  -webkit-border-bottom-left-radius: 3px;
  -webkit-border-top-left-radius: 3px;
  -moz-border-radius-topright: 0px;
  -moz-border-radius-bottomright: 0px;
  -moz-border-radius-bottomleft: 3px;
  -moz-border-radius-topleft: 3px;
  border-top-right-radius: 0px;
  border-bottom-right-radius: 0px;
  border-bottom-left-radius: 3px;
  border-top-left-radius: 3px;
  -moz-background-clip: padding;
  -webkit-background-clip: padding-box;
  background-clip: padding-box;
  border-right: none;
}
#EasyBlogMediaManager .browser .browserViewButtons
button.button.browserListViewButton > i {
  background: url(icon.media.png) no-repeat;
  background-position: -256px -32px;
}
#EasyBlogMediaManager .browser .browserViewButtons
button.button.browserListViewButton.active > i {
  background: url(icon.media.png) no-repeat;
  background-position: -256px 0px;
}
#EasyBlogMediaManager .browser .browserViewButtons
button.button.browserListViewButton.active + .browserTileViewButton {
  border-left: none;
}
#EasyBlogMediaManager .browser .browserViewButtons
button.button.browserTileViewButton {
  -webkit-border-top-right-radius: 3px;
  -webkit-border-bottom-right-radius: 3px;
  -webkit-border-bottom-left-radius: 0px;
  -webkit-border-top-left-radius: 0px;
  -moz-border-radius-topright: 3px;
  -moz-border-radius-bottomright: 3px;
  -moz-border-radius-bottomleft: 0px;
  -moz-border-radius-topleft: 0px;
  border-top-right-radius: 3px;
  border-bottom-right-radius: 3px;
  border-bottom-left-radius: 0px;
  border-top-left-radius: 0px;
  -moz-background-clip: padding;
  -webkit-background-clip: padding-box;
  background-clip: padding-box;
}
#EasyBlogMediaManager .browser .browserViewButtons
button.button.browserTileViewButton > i {
  background: url(icon.media.png) no-repeat;
  background-position: -288px -32px;
}
#EasyBlogMediaManager .browser .browserViewButtons
button.button.browserTileViewButton.active > i {
  background: url(icon.media.png) no-repeat;
  background-position: -288px 0px;
}
#EasyBlogMediaManager .browser .modalPrompt
.modalPromptDialog.createFolderPrompt {
  height: 200px;
  margin-top: -148px;
}
#EasyBlogMediaManager .browser .modalPrompt
.modalPromptDialog.createFolderPrompt .folderPath {
  font-weight: bold;
  color: black;
  word-wrap: break-word;
}
#EasyBlogMediaManager .browser .modalPrompt
.modalPromptDialog.createFolderPrompt .folderInput {
  width: 220px;
}
#EasyBlogMediaManager .browser .modalPrompt
.modalPromptDialog.createFolderPrompt .folderCreationPath {
  font-weight: bold;
  color: black;
  word-wrap: break-word;
}
#EasyBlogMediaManager .browser .modalPrompt
.modalPromptDialog.removeItemPrompt {
  height: 220px;
  margin-top: -158px;
}
#EasyBlogMediaManager .browser .modalPrompt
.modalPromptDialog.removeItemPrompt .removeItemFilename {
  font-weight: bold;
  color: black;
  word-wrap: break-word;
}
#EasyBlogMediaManager .browser .modalPrompt
.modalPromptDialog.flickrLoginPrompt .flickrLogin {
  margin: 15px;
  border: none;
  overflow: hidden;
  width: 400px;
}
#EasyBlogMediaManager .browserSearch {
  float: right;
  position: relative;
  margin: 8px;
  background: #292e36;
  height: 28px;
  width: 150px;
  -webkit-border-radius: 3px;
  -moz-border-radius: 3px;
  border-radius: 3px;
  -moz-background-clip: padding;
  -webkit-background-clip: padding-box;
  background-clip: padding-box;
  border: 1px solid #1e2127;
  -webkit-box-shadow: inset 0px 2px 2px 0px rgba(0, 0, 0, 0.2), 0 1px 0
rgba(255, 255, 255, 0.2);
  -moz-box-shadow: inset 0px 2px 2px 0px rgba(0, 0, 0, 0.2), 0 1px 0
rgba(255, 255, 255, 0.2);
  box-shadow: inset 0px 2px 2px 0px rgba(0, 0, 0, 0.2), 0 1px 0 rgba(255,
255, 255, 0.2);
  padding-left: 22px;
}
#EasyBlogMediaManager .browserSearch i {
  display: inline-block;
  width: 16px;
  height: 16px;
  position: absolute;
  top: 6px;
  left: 4px;
  background: url(icon.media.png) no-repeat;
  background-position: -64px -32px;
  cursor: pointer;
}
#EasyBlogMediaManager .browserSearch.active i {
  background: url(icon.media.png) no-repeat;
  background-position: -96px -32px;
}
#EasyBlogMediaManager .browserSearch.showCancelButton:hover i {
  background: url(icon.media.png) no-repeat;
  background-position: -128px -32px;
}
#EasyBlogMediaManager .browserSearch .searchInput {
  background: transparent;
  border: none !important;
  width: 95%;
  line-height: 30px;
  height: 30px;
  font-size: 12px;
  color: #fff;
  box-shadow: none !important;
  padding: 0;
  margin: 0;
}
#EasyBlogMediaManager .browserSearch .searchInput:focus {
  box-shadow: none !important;
}
#EasyBlogMediaManager .browserItemField {
  position: relative;
  text-align: left;
  overflow: hidden;
  height: 100%;
  margin-left: 181px;
}
#EasyBlogMediaManager .browserItemField.searching .browserItemGroup {
  display: none !important;
}
#EasyBlogMediaManager .browserItemField.searching
.browserItemGroup.search-mode {
  display: block !important;
}
#EasyBlogMediaManager .browserItemField .hints {
  background: #fff;
}
#EasyBlogMediaManager .browserItemField .hints .hint {
  display: none;
}
#EasyBlogMediaManager .browserItemField.ready {
  overflow-y: scroll;
}
#EasyBlogMediaManager .browserItemField.ready .hints {
  display: none;
}
#EasyBlogMediaManager .browserItemField.loading .hint.hint-loading {
  margin-top: -21px;
  display: block;
}
#EasyBlogMediaManager .browserItemField.loading .hint.hint-loading i {
  width: 220px;
  height: 19px;
  background: url(loader.bar.gif) no-repeat;
  display: inline-block;
}
#EasyBlogMediaManager .browserItemField.empty .hint.hint-empty {
  display: block;
}
#EasyBlogMediaManager .browserItemField.empty .hint.hint-empty
.uploaderButton {
  display: none;
}
#EasyBlogMediaManager .browserItemField.empty.canUpload .hint.hint-empty {
  margin-top: -29px;
}
#EasyBlogMediaManager .browserItemField.empty.canUpload .hint.hint-empty
.uploaderButton {
  display: inline-block;
  height: 32px;
  padding-left: 28px;
  margin-top: 4px;
}
#EasyBlogMediaManager .browserItemField.empty.canUpload .hint.hint-empty
.uploaderButton i {
  background: url(icon.media.png) no-repeat;
  background-position: -192px -32px;
  display: block;
  height: 16px;
  left: 7px;
  position: absolute;
  top: 6px;
  width: 16px;
}
#EasyBlogMediaManager .browserItemField.emptySearch .hint.hint-emptySearch
{
  display: block;
}
#EasyBlogMediaManager .browserItemField.error .hint.hint-error {
  display: block;
}
#EasyBlogMediaManager .browserItemField.selectAlbum .hint.hint-selectAlbum
{
  display: block;
}
#EasyBlogMediaManager .browserItemField.flickr .hint.hint-flickr {
  margin-top: -41px;
  display: block;
}
#EasyBlogMediaManager .browserItemField.flickr .hint.hint-flickr
.hint-content {
  height: auto;
  padding: 0 100px 10px;
}
#EasyBlogMediaManager .browserItemField .browserItemGroup {
  position: relative;
  width: 100%;
  display: none;
  border-bottom: 1px solid #fff;
  /* Fixes flickering */

  zoom: 1;
  -webkit-touch-callout: none;
  -webkit-user-select: none;
  -khtml-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}
#EasyBlogMediaManager .browserItemField .browserItemGroup:before,
#EasyBlogMediaManager .browserItemField .browserItemGroup:after {
  content: "";
  display: table;
}
#EasyBlogMediaManager .browserItemField .browserItemGroup:after {
  clear: both;
}
#EasyBlogMediaManager .browserItemField .browserItemGroup.active {
  display: block;
}
#EasyBlogMediaManager .browserItemField .browserItem {
  position: relative;
  cursor: pointer;
  overflow: hidden;
}
#EasyBlogMediaManager .browserItemField .browserItem i.loading {
  background: url(loader.gif) center center no-repeat;
  width: 16px;
  height: 16px;
  display: none;
}
#EasyBlogMediaManager .browserItemField .browserItem.loading-icon i.loading
{
  display: block;
}
#EasyBlogMediaManager .browserItemField .browserItem .itemTitle {
  font-size: 12px;
  -webkit-touch-callout: none;
  -webkit-user-select: none;
  -khtml-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}
#EasyBlogMediaManager .browserItemField .browserItem.loading-icon .itemIcon
{
  -moz-opacity: 0;
  -khtml-opacity: 0;
  -webkit-opacity: 0;
  opacity: 0;
  -ms-filter: progid:DXImageTransform.Microsoft.Alpha(opacity=0);
  filter: alpha(opacity=0);
}
#EasyBlogMediaManager .browserItemField .browserItem.item-type-folder {
  padding: 0;
  display: none;
  width: auto !important;
  height: auto !important;
}
#EasyBlogMediaManager .browserItemField
.browserItem.item-type-folder.active,
#EasyBlogMediaManager .browserItemField .browserItem.item-type-folder.focus
{
  display: block;
}
#EasyBlogMediaManager .browserItemField.view-tile
.browserItem.item-type-file,
#EasyBlogMediaManager .browserItemField.view-tile
.browserItem.item-type-image,
#EasyBlogMediaManager .browserItemField.view-tile
.browserItem.item-type-audio,
#EasyBlogMediaManager .browserItemField.view-tile
.browserItem.item-type-video {
  float: left;
  -webkit-border-radius: 5px;
  -moz-border-radius: 5px;
  border-radius: 5px;
  -moz-background-clip: padding;
  -webkit-background-clip: padding-box;
  background-clip: padding-box;
  padding-top: 10px;
  padding-bottom: 28px;
}
#EasyBlogMediaManager .browserItemField.view-tile
.browserItem.item-type-file i.loading,
#EasyBlogMediaManager .browserItemField.view-tile
.browserItem.item-type-image i.loading,
#EasyBlogMediaManager .browserItemField.view-tile
.browserItem.item-type-audio i.loading,
#EasyBlogMediaManager .browserItemField.view-tile
.browserItem.item-type-video i.loading {
  position: absolute;
  top: 50%;
  width: 100%;
  margin-top: -16px;
  margin-left: 0;
  margin-left: -10px;
}
#EasyBlogMediaManager .browserItemField.view-tile
.browserItem.item-type-file .item-wrap,
#EasyBlogMediaManager .browserItemField.view-tile
.browserItem.item-type-image .item-wrap,
#EasyBlogMediaManager .browserItemField.view-tile
.browserItem.item-type-audio .item-wrap,
#EasyBlogMediaManager .browserItemField.view-tile
.browserItem.item-type-video .item-wrap {
  display: block;
  width: 100%;
  height: 100%;
  overflow: hidden;
}
#EasyBlogMediaManager .browserItemField.view-tile
.browserItem.item-type-file .item-wrap .item-wrap-outer,
#EasyBlogMediaManager .browserItemField.view-tile
.browserItem.item-type-image .item-wrap .item-wrap-outer,
#EasyBlogMediaManager .browserItemField.view-tile
.browserItem.item-type-audio .item-wrap .item-wrap-outer,
#EasyBlogMediaManager .browserItemField.view-tile
.browserItem.item-type-video .item-wrap .item-wrap-outer {
  display: table;
  width: 100%;
  height: 100%;
}
#EasyBlogMediaManager .browserItemField.view-tile
.browserItem.item-type-file .item-wrap .item-wrap-inner,
#EasyBlogMediaManager .browserItemField.view-tile
.browserItem.item-type-image .item-wrap .item-wrap-inner,
#EasyBlogMediaManager .browserItemField.view-tile
.browserItem.item-type-audio .item-wrap .item-wrap-inner,
#EasyBlogMediaManager .browserItemField.view-tile
.browserItem.item-type-video .item-wrap .item-wrap-inner {
  display: table-cell;
  padding: 0 10px;
  text-align: center;
  vertical-align: middle;
}
#EasyBlogMediaManager .browserItemField.view-tile
.browserItem.item-type-file .itemIcon,
#EasyBlogMediaManager .browserItemField.view-tile
.browserItem.item-type-image .itemIcon,
#EasyBlogMediaManager .browserItemField.view-tile
.browserItem.item-type-audio .itemIcon,
#EasyBlogMediaManager .browserItemField.view-tile
.browserItem.item-type-video .itemIcon {
  display: inline;
  z-index: 1;
  max-width: 100%;
}
#EasyBlogMediaManager .browserItemField.view-tile
.browserItem.item-type-file .itemIcon.orientation-tall,
#EasyBlogMediaManager .browserItemField.view-tile
.browserItem.item-type-image .itemIcon.orientation-tall,
#EasyBlogMediaManager .browserItemField.view-tile
.browserItem.item-type-audio .itemIcon.orientation-tall,
#EasyBlogMediaManager .browserItemField.view-tile
.browserItem.item-type-video .itemIcon.orientation-tall {
  width: 100%;
}
#EasyBlogMediaManager .browserItemField.view-tile
.browserItem.item-type-file .itemIcon.orientation-wide,
#EasyBlogMediaManager .browserItemField.view-tile
.browserItem.item-type-image .itemIcon.orientation-wide,
#EasyBlogMediaManager .browserItemField.view-tile
.browserItem.item-type-audio .itemIcon.orientation-wide,
#EasyBlogMediaManager .browserItemField.view-tile
.browserItem.item-type-video .itemIcon.orientation-wide {
  width: 100%;
}
#EasyBlogMediaManager .browserItemField.view-tile
.browserItem.item-type-file .itemIcon.orientation-square,
#EasyBlogMediaManager .browserItemField.view-tile
.browserItem.item-type-image .itemIcon.orientation-square,
#EasyBlogMediaManager .browserItemField.view-tile
.browserItem.item-type-audio .itemIcon.orientation-square,
#EasyBlogMediaManager .browserItemField.view-tile
.browserItem.item-type-video .itemIcon.orientation-square {
  width: 100%;
}
#EasyBlogMediaManager .browserItemField.view-tile
.browserItem.item-type-file .itemTitle,
#EasyBlogMediaManager .browserItemField.view-tile
.browserItem.item-type-image .itemTitle,
#EasyBlogMediaManager .browserItemField.view-tile
.browserItem.item-type-audio .itemTitle,
#EasyBlogMediaManager .browserItemField.view-tile
.browserItem.item-type-video .itemTitle {
  display: inline;
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  height: 18px;
  margin-bottom: 10px;
}
#EasyBlogMediaManager .browserItemField.view-tile
.browserItem.item-type-file .itemTitle span,
#EasyBlogMediaManager .browserItemField.view-tile
.browserItem.item-type-image .itemTitle span,
#EasyBlogMediaManager .browserItemField.view-tile
.browserItem.item-type-audio .itemTitle span,
#EasyBlogMediaManager .browserItemField.view-tile
.browserItem.item-type-video .itemTitle span {
  display: block;
  margin: 0 10px;
  line-height: 24px;
  -o-text-overflow: ellipsis;
  -ms-text-overflow: ellipsis;
  text-overflow: ellipsis;
  white-space: nowrap;
  overflow: hidden;
}
#EasyBlogMediaManager .browserItemField.view-tile
.browserItem.item-type-file.active,
#EasyBlogMediaManager .browserItemField.view-tile
.browserItem.item-type-image.active,
#EasyBlogMediaManager .browserItemField.view-tile
.browserItem.item-type-audio.active,
#EasyBlogMediaManager .browserItemField.view-tile
.browserItem.item-type-video.active {
  background-color: #2f59a8;
  background-repeat: repeat-x;
  background-image: -khtml-gradient(linear, left top, left bottom,
from(#4d71b5), to(#2f59a8));
  /* Konqueror */

  background-image: -moz-linear-gradient(#4d71b5, #2f59a8);
  /* FF 3.6+ */

  background-image: -ms-linear-gradient(#4d71b5, #2f59a8);
  /* IE10 */

  background-image: -webkit-gradient(linear, left top, left bottom,
color-stop(0%, #4d71b5), color-stop(100%, #2f59a8));
  /* Safari 4+, Chrome 2+ */

  background-image: -webkit-linear-gradient(#4d71b5, #2f59a8);
  /* Safari 5.1+, Chrome 10+ */

  background-image: -o-linear-gradient(#4d71b5, #2f59a8);
  /* Opera 11.10 */

  filter:
progid:DXImageTransform.Microsoft.gradient(startColorstr='#4d71b5',
endColorstr='#2f59a8', GradientType=0);
  /* IE6 & IE7 */

  -ms-filter:
"progid:DXImageTransform.Microsoft.gradient(startColorstr='#4d71b5',
endColorstr='#2f59a8', GradientType=0)";
  /* IE8+ */

  background-image: linear-gradient(#4d71b5, #2f59a8);
  /* the standard */

  color: white;
}
#EasyBlogMediaManager .browserItemField.view-tile
.browserItem.item-type-folder {
  zoom: 1;
}
#EasyBlogMediaManager .browserItemField.view-tile
.browserItem.item-type-folder:before,
#EasyBlogMediaManager .browserItemField.view-tile
.browserItem.item-type-folder:after {
  content: "";
  display: table;
}
#EasyBlogMediaManager .browserItemField.view-tile
.browserItem.item-type-folder:after {
  clear: both;
}
#EasyBlogMediaManager .browserItemField.view-list .browserItem {
  line-height: 32px;
  border-top: 1px solid #ddd;
}
#EasyBlogMediaManager .browserItemField.view-list .browserItem .item-wrap {
  position: relative;
}
#EasyBlogMediaManager .browserItemField.view-list .browserItem i.loading {
  position: absolute;
  top: 8px;
  left: 6px;
}
#EasyBlogMediaManager .browserItemField.view-list .browserItem
.folderItemGroup {
  width: auto;
}
#EasyBlogMediaManager .browserItemField.view-list
.browserItem.item-type-file,
#EasyBlogMediaManager .browserItemField.view-list
.browserItem.item-type-image,
#EasyBlogMediaManager .browserItemField.view-list
.browserItem.item-type-audio,
#EasyBlogMediaManager .browserItemField.view-list
.browserItem.item-type-video,
#EasyBlogMediaManager .browserItemField.view-list
.browserItem.item-type-upload {
  height: 32px;
  padding: 4px 8px;
}
#EasyBlogMediaManager .browserItemField.view-list
.browserItem.item-type-file.active,
#EasyBlogMediaManager .browserItemField.view-list
.browserItem.item-type-image.active,
#EasyBlogMediaManager .browserItemField.view-list
.browserItem.item-type-audio.active,
#EasyBlogMediaManager .browserItemField.view-list
.browserItem.item-type-video.active,
#EasyBlogMediaManager .browserItemField.view-list
.browserItem.item-type-upload.active {
  background-color: #2f59a8;
  background-repeat: repeat-x;
  background-image: -khtml-gradient(linear, left top, left bottom,
from(#4d71b5), to(#2f59a8));
  /* Konqueror */

  background-image: -moz-linear-gradient(#4d71b5, #2f59a8);
  /* FF 3.6+ */

  background-image: -ms-linear-gradient(#4d71b5, #2f59a8);
  /* IE10 */

  background-image: -webkit-gradient(linear, left top, left bottom,
color-stop(0%, #4d71b5), color-stop(100%, #2f59a8));
  /* Safari 4+, Chrome 2+ */

  background-image: -webkit-linear-gradient(#4d71b5, #2f59a8);
  /* Safari 5.1+, Chrome 10+ */

  background-image: -o-linear-gradient(#4d71b5, #2f59a8);
  /* Opera 11.10 */

  filter:
progid:DXImageTransform.Microsoft.gradient(startColorstr='#4d71b5',
endColorstr='#2f59a8', GradientType=0);
  /* IE6 & IE7 */

  -ms-filter:
"progid:DXImageTransform.Microsoft.gradient(startColorstr='#4d71b5',
endColorstr='#2f59a8', GradientType=0)";
  /* IE8+ */

  background-image: linear-gradient(#4d71b5, #2f59a8);
  /* the standard */

  color: white;
}
#EasyBlogMediaManager .browserItemField.view-list
.browserItem.item-type-file .itemIcon,
#EasyBlogMediaManager .browserItemField.view-list
.browserItem.item-type-image .itemIcon,
#EasyBlogMediaManager .browserItemField.view-list
.browserItem.item-type-audio .itemIcon,
#EasyBlogMediaManager .browserItemField.view-list
.browserItem.item-type-video .itemIcon,
#EasyBlogMediaManager .browserItemField.view-list
.browserItem.item-type-upload .itemIcon {
  max-width: 32px;
  max-height: 32px;
  display: inline-block;
  position: absolute;
  z-index: 1;
}
#EasyBlogMediaManager .browserItemField.view-list
.browserItem.item-type-file .itemTitle,
#EasyBlogMediaManager .browserItemField.view-list
.browserItem.item-type-image .itemTitle,
#EasyBlogMediaManager .browserItemField.view-list
.browserItem.item-type-audio .itemTitle,
#EasyBlogMediaManager .browserItemField.view-list
.browserItem.item-type-video .itemTitle,
#EasyBlogMediaManager .browserItemField.view-list
.browserItem.item-type-upload .itemTitle {
  display: block;
  text-align: left;
  position: relative;
  z-index: 2;
  padding: 0 0 0 37px;
}
#EasyBlogMediaManager .browserTreeItemField {
  position: relative;
  overflow: auto;
  float: left;
  background: #f5f5f5;
  width: 180px;
  height: 100%;
  border-right: 1px solid #ccc;
}
#EasyBlogMediaManager .browserTreeItemGroup {
  zoom: 1;
  border-bottom: 1px solid #F5F5F5;
}
#EasyBlogMediaManager .browserTreeItemGroup:before,
#EasyBlogMediaManager .browserTreeItemGroup:after {
  content: "";
  display: table;
}
#EasyBlogMediaManager .browserTreeItemGroup:after {
  clear: both;
}
#EasyBlogMediaManager .browserTreeItemGroup.expanded
.browserTreeItem.type-folder {
  display: block;
}
#EasyBlogMediaManager .browserTreeItemGroup.expanded
.browserTreeItem.type-place i {
  background: url(icon.media.png) no-repeat;
  background-position: -416px -96px;
}
#EasyBlogMediaManager .browserTreeItemGroup.expanded
.browserTreeItem.type-place.active i {
  background: url(icon.media.png) no-repeat;
  background-position: -416px -64px;
}
#EasyBlogMediaManager .browserTreeItem {
  position: relative;
  cursor: pointer;
  padding: 3px 3px 3px 22px;
  text-align: left;
  height: 16px;
  line-height: 16px;
  white-space: nowrap;
}
#EasyBlogMediaManager .browserTreeItem i {
  width: 16px;
  height: 16px;
  position: absolute;
  top: 3px;
  left: 3px;
}
#EasyBlogMediaManager .browserTreeItem .treeItemTitle {
  -webkit-touch-callout: none;
  -webkit-user-select: none;
  -khtml-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}
#EasyBlogMediaManager .browserTreeItem.active {
  background-color: #2f59a8;
  background-repeat: repeat-x;
  background-image: -khtml-gradient(linear, left top, left bottom,
from(#4d71b5), to(#2f59a8));
  /* Konqueror */

  background-image: -moz-linear-gradient(#4d71b5, #2f59a8);
  /* FF 3.6+ */

  background-image: -ms-linear-gradient(#4d71b5, #2f59a8);
  /* IE10 */

  background-image: -webkit-gradient(linear, left top, left bottom,
color-stop(0%, #4d71b5), color-stop(100%, #2f59a8));
  /* Safari 4+, Chrome 2+ */

  background-image: -webkit-linear-gradient(#4d71b5, #2f59a8);
  /* Safari 5.1+, Chrome 10+ */

  background-image: -o-linear-gradient(#4d71b5, #2f59a8);
  /* Opera 11.10 */

  filter:
progid:DXImageTransform.Microsoft.gradient(startColorstr='#4d71b5',
endColorstr='#2f59a8', GradientType=0);
  /* IE6 & IE7 */

  -ms-filter:
"progid:DXImageTransform.Microsoft.gradient(startColorstr='#4d71b5',
endColorstr='#2f59a8', GradientType=0)";
  /* IE8+ */

  background-image: linear-gradient(#4d71b5, #2f59a8);
  /* the standard */

  color: white;
}
#EasyBlogMediaManager .browserTreeItem.loading i {
  background: url(loader.gif) no-repeat center center !important;
}
#EasyBlogMediaManager .browserTreeItem.type-folder {
  display: none;
  padding-left: 24px;
  margin-left: 18px;
  margin-right: 4px;
  overflow: hidden;
  padding-right: 4px;
  -o-text-overflow: ellipsis;
  -ms-text-overflow: ellipsis;
  text-overflow: ellipsis;
  -webkit-border-radius: 3px;
  -moz-border-radius: 3px;
  border-radius: 3px;
  -moz-background-clip: padding;
  -webkit-background-clip: padding-box;
  background-clip: padding-box;
  min-width: 32px;
}
#EasyBlogMediaManager .browserTreeItem.type-folder i {
  background: url(icon.media.png) no-repeat;
  background-position: -288px -64px;
  left: 4px;
}
#EasyBlogMediaManager .browserTreeItem.type-place i {
  background: url(icon.media.png) no-repeat;
  background-position: -416px -32px;
}
#EasyBlogMediaManager .browserTreeItem.type-place.active i {
  background: url(icon.media.png) no-repeat;
  background-position: -416px 0px;
}
.uploadInstructions {
  font-weight: bold;
  top: 39px;
  right: 0px;
  font-size: 12px;
  line-height: 16px;
  display: none;
}
.uploadInstructions .uploadExtensions {
  font-size: 10px;
  font-weight: normal;
  line-height: 14px;
  margin-top: 4px;
  display: block;
  color: #888;
}
.uploadInstructions.show {
  display: block;
  z-index: 9999;
}
#EasyBlogMediaManager .uploader {
  background: #fff;
}
#EasyBlogMediaManager .uploader > form {
  z-index: 99999 !important;
  cursor: pointer;
}
#EasyBlogMediaManager .uploader .plupload {
  cursor: pointer;
}
#EasyBlogMediaManager .uploader .plupload input {
  cursor: pointer;
}
#EasyBlogMediaManager .uploader .uploadDropHint {
  z-index: 1;
}
#EasyBlogMediaManager .uploader .uploadDropHint .hint.hint-dropUpload {
  margin-top: -122px;
}
#EasyBlogMediaManager .uploader .uploadDropHint .hint.hint-dropUpload i {
  background: url(icon.media.png) no-repeat;
  background-position: 0px -128px;
  width: 210px;
  height: 210px;
  display: inline-block;
}
#EasyBlogMediaManager .uploader .uploadItemGroup {
  position: relative;
  z-index: 2;
  overflow-y: scroll;
  overflow-x: hidden;
  height: 100%;
  -moz-opacity: 1;
  -khtml-opacity: 1;
  -webkit-opacity: 1;
  opacity: 1;
  -ms-filter: progid:DXImageTransform.Microsoft.Alpha(opacity=100);
  filter: alpha(opacity=100);
  background: #fff;
  -webkit-transition: all 0.2s ease-out;
  -moz-transition: all 0.2s ease-out;
  transition: all 0.2s ease-out;
}
#EasyBlogMediaManager .uploader .uploadItemGroup.empty {
  -moz-opacity: 0;
  -khtml-opacity: 0;
  -webkit-opacity: 0;
  opacity: 0;
  -ms-filter: progid:DXImageTransform.Microsoft.Alpha(opacity=0);
  filter: alpha(opacity=0);
  -webkit-transition: all 0.2s ease-out;
  -moz-transition: all 0.2s ease-out;
  transition: all 0.2s ease-out;
}
#EasyBlogMediaManager .uploader .uploadItemGroup.indefinite-progress
.uploadItem .uploadProgressBar progress {
  display: none;
}
#EasyBlogMediaManager .uploader .uploadItemGroup.indefinite-progress
.uploadItem .uploadProgressBar .progress-alt {
  display: block;
}
#EasyBlogMediaManager .uploader .uploadItemGroup.blogimage .uploadItem
.uploadActions .insertItemButton {
  display: none !important;
}
#EasyBlogMediaManager .uploader .uploadItemGroup.blogimage .uploadItem
.uploadActions .insertBlogImageButton {
  display: block !important;
}
#EasyBlogMediaManager .uploader .uploadItemGroup .uploadItem {
  padding: 8px;
  padding-left: 32px !important;
  -webkit-touch-callout: none;
  -webkit-user-select: none;
  -khtml-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}
#EasyBlogMediaManager .uploader .uploadItemGroup .uploadItem + .uploadItem
{
  border-top: 1px solid #ccc;
}
#EasyBlogMediaManager .uploader .uploadItemGroup .uploadItem .item-wrap {
  position: relative;
}
#EasyBlogMediaManager .uploader .uploadItemGroup .uploadItem
.uploadFilename {
  display: block;
  height: 16px;
  line-height: 16px;
  padding: 0;
  white-space: nowrap;
  overflow: hidden;
  font-size: 12px;
}
#EasyBlogMediaManager .uploader .uploadItemGroup .uploadItem .uploadStatus
{
  display: block;
  color: #777;
  font-weight: normal;
  line-height: 14px;
  font-size: 10px;
}
#EasyBlogMediaManager .uploader .uploadItemGroup .uploadItem
.uploadProgressBar {
  display: none;
}
#EasyBlogMediaManager .uploader .uploadItemGroup .uploadItem
.uploadProgressBar progress {
  width: 99%;
  height: 8px;
  margin: 6px 0 2px;
  background: #fff;
  border: 1px solid #aaa;
  -webkit-border-radius: 3px;
  -moz-border-radius: 3px;
  border-radius: 3px;
  -moz-background-clip: padding;
  -webkit-background-clip: padding-box;
  background-clip: padding-box;
}
#EasyBlogMediaManager .uploader .uploadItemGroup .uploadItem
.uploadProgressBar progress::-moz-progress-bar {
  background: #E5EEFF !important;
  -webkit-border-radius: 3px;
  -moz-border-radius: 3px;
  border-radius: 3px;
  -moz-background-clip: padding;
  -webkit-background-clip: padding-box;
  background-clip: padding-box;
}
#EasyBlogMediaManager .uploader .uploadItemGroup .uploadItem
.uploadProgressBar progress::-webkit-progress-bar {
  background: #E5EEFF !important;
  -webkit-border-radius: 3px;
  -moz-border-radius: 3px;
  border-radius: 3px;
  -moz-background-clip: padding;
  -webkit-background-clip: padding-box;
  background-clip: padding-box;
}
#EasyBlogMediaManager .uploader .uploadItemGroup .uploadItem
.uploadProgressBar progress::-webkit-progress-value {
  background: #E5EEFF !important;
  -webkit-border-radius: 3px;
  -moz-border-radius: 3px;
  border-radius: 3px;
  -moz-background-clip: padding;
  -webkit-background-clip: padding-box;
  background-clip: padding-box;
}
#EasyBlogMediaManager .uploader .uploadItemGroup .uploadItem
.uploadProgressBar progress[role][aria-valuenow]:before {
  background: #E5EEFF !important;
  -webkit-border-radius: 3px;
  -moz-border-radius: 3px;
  border-radius: 3px;
  -moz-background-clip: padding;
  -webkit-background-clip: padding-box;
  background-clip: padding-box;
}
#EasyBlogMediaManager .uploader .uploadItemGroup .uploadItem
.uploadProgressBar .progress-alt {
  width: 99%;
  height: 8px;
  margin: 6px 0 2px;
  background: #fff;
  border: 1px solid #aaa;
  display: none;
}
#EasyBlogMediaManager .uploader .uploadItemGroup .uploadItem
.uploadProgressBar .progress-alt img {
  height: 8px;
  width: 100%;
}
#EasyBlogMediaManager .uploader .uploadItemGroup .uploadItem .uploadActions
{
  display: none;
  position: absolute;
  top: 0;
  right: 0;
}
#EasyBlogMediaManager .uploader .uploadItemGroup .uploadItem .uploadActions
button {
  float: right;
  margin-left: 5px;
  padding-left: 26px !important;
}
#EasyBlogMediaManager .uploader .uploadItemGroup .uploadItem .uploadActions
button > i {
  position: absolute;
  top: 4px;
  left: 6px;
  width: 16px;
  height: 16px;
}
#EasyBlogMediaManager .uploader .uploadItemGroup .uploadItem .uploadActions
.locateItemButton > i {
  background: url(icon.media.png) no-repeat;
  background-position: -64px -64px;
  height: 17px;
}
#EasyBlogMediaManager .uploader .uploadItemGroup .uploadItem .uploadActions
.insertItemButton > i {
  background: url(icon.media.png) no-repeat;
  background-position: -192px -96px;
}
#EasyBlogMediaManager .uploader .uploadItemGroup .uploadItem .uploadActions
.insertBlogImageButton {
  display: none;
}
#EasyBlogMediaManager .uploader .uploadItemGroup .uploadItem .uploadActions
.insertBlogImageButton > i {
  background: url(icon.media.png) no-repeat;
  background-position: -192px -96px;
}
#EasyBlogMediaManager .uploader .uploadItemGroup .uploadItem .uploadIcon {
  position: absolute;
  width: 16px;
  height: 16px;
  top: 0;
  left: -22px;
  display: block;
  cursor: pointer;
}
#EasyBlogMediaManager .uploader .uploadItemGroup
.uploadItem.upload-state-queued .uploadIcon {
  background: url(icon.media.png) no-repeat;
  background-position: -160px -64px;
}
#EasyBlogMediaManager .uploader .uploadItemGroup
.uploadItem.upload-state-uploading .uploadProgressBar {
  display: block;
}
#EasyBlogMediaManager .uploader .uploadItemGroup
.uploadItem.upload-state-uploading .uploadIcon {
  background-image: url("loader.gif");
  background-position: center center;
  background-repeat: no-repeat;
}
#EasyBlogMediaManager .uploader .uploadItemGroup
.uploadItem.upload-state-done .uploadIcon {
  background: url(icon.media.png) no-repeat;
  background-position: -192px -64px;
}
#EasyBlogMediaManager .uploader .uploadItemGroup
.uploadItem.upload-state-done .uploadActions {
  display: block;
  opacity: 0.3;
}
#EasyBlogMediaManager .uploader .uploadItemGroup
.uploadItem.upload-state-done:hover .uploadActions {
  opacity: 1;
}
#EasyBlogMediaManager .uploader .uploadItemGroup
.uploadItem.upload-state-failed .uploadIcon {
  background: url(icon.media.png) no-repeat;
  background-position: -224px -64px;
}
#EasyBlogMediaManager .uploader .uploadItemGroup .uploadItem:hover
.uploadIcon.uploadRemoveButton {
  background: url(icon.media.png) no-repeat;
  background-position: -128px -64px;
}
#EasyBlogMediaManager .uploader .uploadItemGroup .uploadItem:hover
.uploadIcon.uploadRemoveButton:hover {
  background: url(icon.media.png) no-repeat;
  background-position: -96px -64px;
}
#EasyBlogMediaManager .uploader .modalContent {
  -webkit-touch-callout: none;
  -webkit-user-select: none;
  -khtml-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}
#EasyBlogMediaManager .uploader .modalToolbar .uploadButton > i {
  background: url(icon.media.png) no-repeat;
  background-position: -192px -32px;
}
#EasyBlogMediaManager .uploader .modalToolbar .changeUploadFolderButton
> i {
  background: url(icon.media.png) no-repeat;
  background-position: -320px -64px;
  width: 18px !important;
  top: 9px !important;
}
#EasyBlogMediaManager .uploader .modalPrompt .changeUploadFolderPrompt
.promptContent {
  padding: 5px 15px;
}
#EasyBlogMediaManager .uploader .modalPrompt .changeUploadFolderPrompt
.browserTreeItemField {
  border: 1px solid #ccc;
  width: auto;
  float: none;
  height: 145px;
}
#EasyBlogMediaManager .uploader .modalPrompt .changeUploadFolderPrompt
.browserTreeItemField .browserTreeItemGroup .browserTreeItem.type-place i,
#EasyBlogMediaManager .uploader .modalPrompt .changeUploadFolderPrompt
.browserTreeItemField .browserTreeItemGroup
.browserTreeItem.type-place.active i {
  background: url(icon.media.png) no-repeat;
  background-position: -288px -64px;
}
#EasyBlogMediaManager .editor {
  background: #fff;
}
#EasyBlogMediaManager .editor .modalToolbar .insertItemButton > i {
  background: url(icon.media.png) no-repeat;
  background-position: -192px -96px;
}
#EasyBlogMediaManager .editor .modalToolbar .cancelEditingButton > i {
  background: url(icon.media.png) no-repeat;
  background-position: -160px -96px;
}
#EasyBlogMediaManager .editor .modalContent {
  zoom: 1;
}
#EasyBlogMediaManager .editor .modalContent:before,
#EasyBlogMediaManager .editor .modalContent:after {
  content: "";
  display: table;
}
#EasyBlogMediaManager .editor .modalContent:after {
  clear: both;
}
#EasyBlogMediaManager .editor .modalContent .editorViewport,
#EasyBlogMediaManager .editor .modalContent .editorLoading {
  width: 100%;
  height: 100%;
  overflow: hidden;
  position: absolute;
}
#EasyBlogMediaManager .editor .modalContent .editorViewport {
  top: 99999px;
  left: 99999px;
  z-index: 2;
}
#EasyBlogMediaManager .editor .modalContent .editorViewport.active {
  top: 0;
  left: 0;
  z-index: 3;
}
#EasyBlogMediaManager .editor .modalContent .editorViewport .editorPreview
{
  height: 100%;
  margin-right: 300px;
  background: url("editor.preview.png");
  overflow: hidden;
  position: relative;
}
#EasyBlogMediaManager .editor .modalContent .editorViewport .editorPreview
.previewContainer {
  position: absolute;
  z-index: 2;
}
#EasyBlogMediaManager .editor .modalContent .editorViewport .editorPreview
.previewContainer object {
  outline: none;
}
#EasyBlogMediaManager .editor .modalContent .editorViewport .editorPreview
.previewContainer object::-moz-focus-inner {
  outline: none;
  border: 0;
}
#EasyBlogMediaManager .editor .modalContent .editorViewport .editorPreview
.previewContainer.imageCaptionBorder {
  padding: 5px;
  border: 1px solid #ddd;
  background: #f5f5f5;
}
#EasyBlogMediaManager .editor .modalContent .editorViewport .editorPreview
.previewContainer .imageCaptionText {
  background: #f5f5f5;
  padding: 5px 0;
}
#EasyBlogMediaManager .editor .modalContent .editorViewport .editorPreview
.previewDialogGroup {
  width: 100%;
  height: 100%;
  position: absolute;
  z-index: 1;
}
#EasyBlogMediaManager .editor .modalContent .editorViewport .editorPreview
.previewDialogGroup.alwaysOnTop {
  z-index: 3;
}
#EasyBlogMediaManager .editor .modalContent .editorViewport .editorPreview
.previewDialogGroup.show-dialog-loading .previewDialog.dialog-loading {
  display: block;
}
#EasyBlogMediaManager .editor .modalContent .editorViewport .editorPreview
.previewDialogGroup .previewDialog {
  display: none;
}
#EasyBlogMediaManager .editor .modalContent .editorViewport .editorPreview
.previewDialogGroup .previewDialog.dialog-loading {
  position: absolute;
  top: 50%;
  width: 100%;
  margin-top: 0;
  margin-left: 0;
  background: url("loader.gif") no-repeat center center;
  width: 16px;
  height: 16px;
  margin: 0 auto;
  position: relative;
  z-index: 9999;
}
#EasyBlogMediaManager .editor .modalContent .editorViewport .editorPanel {
  width: 300px;
  height: 100%;
  float: right;
  background: #F5F5F5;
  border-left: 1px solid #CCCCCC;
  overflow-y: scroll;
  overflow-x: hidden;
}
#EasyBlogMediaManager .editor .modalContent .editorLoading {
  z-index: 1;
  top: 0;
  left: 0;
  text-align: center;
  width: 100%;
  height: 100%;
  background: #f6f6f6;
}
#EasyBlogMediaManager .editor .modalContent .editorLoading .loadingHint {
  position: absolute;
  top: 50%;
  width: 100%;
  margin-top: -9.5px;
}
#EasyBlogMediaManager .editor .modalContent .editorLoading .loadingHint i {
  background: url("loader.bar.gif");
  width: 220px;
  height: 19px;
  display: inline-block;
}
#EasyBlogMediaManager .editor .modalContent .editorLoading .loadingHint
.loadingText {
  font-size: 22px;
  line-height: 22px;
  padding: 12px;
  display: block;
  color: #bbb;
  text-shadow: 1px 1px 0px #ffffff;
  -moz-text-shadow: 1px 1px 0px #ffffff;
  -webkit-text-shadow: 1px 1px 0px #ffffff;
  /*
        filter:
progid:DXImageTransform.Microsoft.dropshadow(OffX=@horizontalOffset,
OffY=verticalOffset, Color='@color', Positive='true');
        -ms-filter:
"progid:DXImageTransform.Microsoft.dropshadow(OffX=@horizontalOffset,
OffY=verticalOffset, Color='@color',
Positive='true')";
        *zoom: 1;
    */

}
#EasyBlogMediaManager .panelSection {
  text-align: left;
}
#EasyBlogMediaManager .panelSection .panelSectionHeader {
  border-top: 1px solid #ccc;
  padding: 8px 16px;
  cursor: pointer;
}
#EasyBlogMediaManager .panelSection .panelSectionHeader .panelSectionTitle
{
  text-shadow: 1px 1px 0 #f2f2f2;
  -moz-text-shadow: 1px 1px 0 #f2f2f2;
  -webkit-text-shadow: 1px 1px 0 #f2f2f2;
  /*
        filter:
progid:DXImageTransform.Microsoft.dropshadow(OffX=@horizontalOffset,
OffY=verticalOffset, Color='@color', Positive='true');
        -ms-filter:
"progid:DXImageTransform.Microsoft.dropshadow(OffX=@horizontalOffset,
OffY=verticalOffset, Color='@color',
Positive='true')";
        *zoom: 1;
    */

  position: relative;
  height: 16px;
  line-height: 16px;
  padding-left: 8px;
  -webkit-touch-callout: none;
  -webkit-user-select: none;
  -khtml-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}
#EasyBlogMediaManager .panelSection .panelSectionHeader .panelSectionTitle
> i {
  background: url(icon.media.png) no-repeat;
  background-position: -416px -32px;
  display: block;
  position: absolute;
  width: 16px;
  height: 16px;
  top: 0px;
  left: -12px;
}
#EasyBlogMediaManager .panelSection .panelSectionContent {
  padding: 8px 24px 16px;
  display: none;
  position: relative;
}
#EasyBlogMediaManager .panelSection.active .panelSectionHeader {
  padding: 8px 16px 0px;
}
#EasyBlogMediaManager .panelSection.active .panelSectionHeader
.panelSectionTitle > i {
  background: url(icon.media.png) no-repeat;
  background-position: -416px -96px;
}
#EasyBlogMediaManager .panelSection.active .panelSectionContent {
  display: block;
}
#EasyBlogMediaManager .editorPanel .formGroup {
  display: block;
  clear: both;
  margin: 8px 0;
}
#EasyBlogMediaManager .editorPanel .formGroup .formLabel {
  display: block;
  float: left;
  width: 85px;
  text-align: right;
  font-size: 11px;
  padding-top: 4px;
}
#EasyBlogMediaManager .editorPanel .formGroup .formControl {
  margin-left: 95px;
}
#EasyBlogMediaManager .editorPanel .formGroup input[type=text] {
  background: transparent;
  border: none;
  line-height: 20px;
  width: 150px;
  height: 20px;
  font-size: 12px;
  border: 1px solid #999;
  padding: 0 0 0 4px;
  -webkit-border-radius: 4px;
  -moz-border-radius: 4px;
  border-radius: 4px;
  -moz-background-clip: padding;
  -webkit-background-clip: padding-box;
  background-clip: padding-box;
  -webkit-box-shadow: 0px 1px 3px 0px rgba(0, 0, 0, 0.2) inset;
  -moz-box-shadow: 0px 1px 3px 0px rgba(0, 0, 0, 0.2) inset;
  box-shadow: 0px 1px 3px 0px rgba(0, 0, 0, 0.2) inset;
}
#EasyBlogMediaManager .list-form,
#EasyBlogMediaManager .list-form li {
  font-size: 11px;
  margin: 0!important;
  padding: 0!important;
  list-style: none!important;
  border: 0!important;
  background: none!important;
}
#EasyBlogMediaManager .list-form + li,
#EasyBlogMediaManager .list-form li + li {
  margin: 5px 0 0!important;
}
#EasyBlogMediaManager .list-form > label,
#EasyBlogMediaManager .list-form li > label {
  display: block;
  min-height: 17px;
  line-height: 17px;
  margin: 0;
  text-align: left;
  width: auto;
  float: none;
}
#EasyBlogMediaManager .list-form > label + div,
#EasyBlogMediaManager .list-form li > label + div {
  margin: 0;
  line-height: 20px;
}
#EasyBlogMediaManager .list-form input[type="text"],
#EasyBlogMediaManager .list-form li input[type="text"],
#EasyBlogMediaManager .list-form input[type="password"],
#EasyBlogMediaManager .list-form li input[type="password"],
#EasyBlogMediaManager .list-form input[type="checkbox"],
#EasyBlogMediaManager .list-form li input[type="checkbox"],
#EasyBlogMediaManager .list-form input[type="radio"] textarea,
#EasyBlogMediaManager .list-form li input[type="radio"] textarea,
#EasyBlogMediaManager .list-form select,
#EasyBlogMediaManager .list-form li select {
  border: 1px solid #ccc;
  font-family: 'Lucida Grande', Tahoma, Arial, sans-serif
!important;
  font-size: 11px !important;
  background: #fff;
  color: #555;
  display: inline-block;
  position: relative;
  vertical-align: top;
}
#EasyBlogMediaManager .list-form input[type="text"],
#EasyBlogMediaManager .list-form li input[type="text"],
#EasyBlogMediaManager .list-form input[type="password"],
#EasyBlogMediaManager .list-form li input[type="password"],
#EasyBlogMediaManager .list-form textarea,
#EasyBlogMediaManager .list-form li textarea {
  padding: 4px;
}
#EasyBlogMediaManager .list-form input[type="text"],
#EasyBlogMediaManager .list-form li input[type="text"],
#EasyBlogMediaManager .list-form input[type="password"],
#EasyBlogMediaManager .list-form li input[type="password"] {
  width: 90%;
  height: 20px;
}
#EasyBlogMediaManager .list-form input[type="checkbox"],
#EasyBlogMediaManager .list-form li input[type="checkbox"],
#EasyBlogMediaManager .list-form input[type="radio"],
#EasyBlogMediaManager .list-form li input[type="radio"] {
  float: left;
  display: inline-block;
  vertical-align: text-bottom;
  bottom: -2px;
}
#EasyBlogMediaManager .list-form input[type="checkbox"] + label,
#EasyBlogMediaManager .list-form li input[type="checkbox"] +
label,
#EasyBlogMediaManager .list-form input[type="radio"] + label,
#EasyBlogMediaManager .list-form li input[type="radio"] + label {
  margin: 0 0 0 20px!important;
}
#EasyBlogMediaManager .list-form select,
#EasyBlogMediaManager .list-form li select {
  padding: 2px;
  top: -1px;
}
#EasyBlogMediaManager .list-form label,
#EasyBlogMediaManager .list-form li label {
  font-family: 'Lucida Grande', Tahoma, Arial, sans-serif
!important;
  font-size: 11px !important;
}
#EasyBlogMediaManager .list-form .field-content,
#EasyBlogMediaManager .list-form li .field-content {
  display: block;
  margin: 5px 0 0 20px;
}
#EasyBlogMediaManager .list-form.hide-field-content .field-content,
#EasyBlogMediaManager .list-form li.hide-field-content .field-content {
  display: none;
}
#EasyBlogMediaManager .editor-type-video .panelSection.infoPanel .itemInfo
> i,
#EasyBlogMediaManager .editor-type-audio .panelSection.infoPanel .itemInfo
> i {
  background: url(icon.media.png) no-repeat;
  background-position: -288px -128px;
}
#EasyBlogMediaManager .editor-type-image .panelSection.infoPanel .itemInfo
> i {
  background: url(icon.media.png) no-repeat;
  background-position: -224px -128px;
}
#EasyBlogMediaManager .editor-type-file .panelSection.infoPanel .itemInfo
> i {
  background: url(icon.media.png) no-repeat;
  background-position: -352px -128px;
}
#EasyBlogMediaManager .panelSection.infoPanel .panelSectionContent {
  padding: 8px;
}
#EasyBlogMediaManager .panelSection.infoPanel .panelSectionContent
.itemInfo {
  position: relative;
  padding-left: 40px;
  min-height: 32px;
}
#EasyBlogMediaManager .panelSection.infoPanel .panelSectionContent
.itemInfo > i {
  display: block;
  position: absolute;
  width: 32px;
  height: 32px;
  top: 0;
  left: 0;
}
#EasyBlogMediaManager .panelSection.infoPanel .panelSectionContent
.itemInfo .itemFilename {
  display: block;
  font-weight: bold;
  line-height: 16px;
  -o-text-overflow: ellipsis;
  -ms-text-overflow: ellipsis;
  text-overflow: ellipsis;
  overflow: hidden;
  white-space: nowrap;
  padding-right: 64px;
}
#EasyBlogMediaManager .panelSection.infoPanel .panelSectionContent
.itemInfo .itemFilesize {
  line-height: 16px;
  position: absolute;
  top: 0;
  right: 0;
}
#EasyBlogMediaManager .panelSection.infoPanel .panelSectionContent
.itemInfo .itemCreationDate {
  font-size: 11px;
  line-height: 16px;
}
#EasyBlogMediaManager .panelSection.infoPanel .panelSectionContent
.itemExtraInfo {
  background: none repeat scroll 0 0 #FFFFFF;
  border: 1px solid #DDD;
  margin-top: 6px;
  padding: 8px;
  word-wrap: break-word;
  /* Internet Explorer 5.5+ */

}
#EasyBlogMediaManager .panelSection.infoPanel .panelSectionContent
.itemExtraInfo .itemUrl {
  font-size: 10px;
}
#EasyBlogMediaManager .imageVariationMessage {
  position: relative;
  line-height: 16px;
  color: #900;
  display: block;
  text-align: center;
  font-size: 12px;
}
#EasyBlogMediaManager .imageVariationList .imageVariations {
  background: #fff;
  border: 1px solid #bbb;
  border-bottom: none;
  -webkit-border-top-right-radius: 3px;
  -webkit-border-bottom-right-radius: 0;
  -webkit-border-bottom-left-radius: 0;
  -webkit-border-top-left-radius: 3px;
  -moz-border-radius-topright: 3px;
  -moz-border-radius-bottomright: 0;
  -moz-border-radius-bottomleft: 0;
  -moz-border-radius-topleft: 3px;
  border-top-right-radius: 3px;
  border-bottom-right-radius: 0;
  border-bottom-left-radius: 0;
  border-top-left-radius: 3px;
  -moz-background-clip: padding;
  -webkit-background-clip: padding-box;
  background-clip: padding-box;
  overflow-y: auto;
  height: 88px;
}
#EasyBlogMediaManager .imageVariationList .imageVariations.busy {
  background: url(loader.gif) #ffffff no-repeat center center;
}
#EasyBlogMediaManager .imageVariationList .imageVariations .imageVariation
{
  padding: 4px;
  font-size: 11px;
  position: relative;
}
#EasyBlogMediaManager .imageVariationList .imageVariations .imageVariation
.variationName {
  background-repeat: no-repeat;
  background-position: left center;
  white-space: nowrap;
}
#EasyBlogMediaManager .imageVariationList .imageVariations
.imageVariation.locked i {
  display: inline-block;
  width: 10px;
  height: 10px;
  background: url(icon.media.png) no-repeat;
  background-position: -512px -64px;
}
#EasyBlogMediaManager .imageVariationList .imageVariations
.imageVariation.busy .variationName {
  background-image: url(variation.busy.gif);
}
#EasyBlogMediaManager .imageVariationList .imageVariations .imageVariation
.variationDimension {
  position: absolute;
  top: 4px;
  right: 4px;
}
#EasyBlogMediaManager .imageVariationList .imageVariations
.imageVariation.active {
  background-color: #2f59a8;
  background-repeat: repeat-x;
  background-image: -khtml-gradient(linear, left top, left bottom,
from(#4d71b5), to(#2f59a8));
  /* Konqueror */

  background-image: -moz-linear-gradient(#4d71b5, #2f59a8);
  /* FF 3.6+ */

  background-image: -ms-linear-gradient(#4d71b5, #2f59a8);
  /* IE10 */

  background-image: -webkit-gradient(linear, left top, left bottom,
color-stop(0%, #4d71b5), color-stop(100%, #2f59a8));
  /* Safari 4+, Chrome 2+ */

  background-image: -webkit-linear-gradient(#4d71b5, #2f59a8);
  /* Safari 5.1+, Chrome 10+ */

  background-image: -o-linear-gradient(#4d71b5, #2f59a8);
  /* Opera 11.10 */

  filter:
progid:DXImageTransform.Microsoft.gradient(startColorstr='#4d71b5',
endColorstr='#2f59a8', GradientType=0);
  /* IE6 & IE7 */

  -ms-filter:
"progid:DXImageTransform.Microsoft.gradient(startColorstr='#4d71b5',
endColorstr='#2f59a8', GradientType=0)";
  /* IE8+ */

  background-image: linear-gradient(#4d71b5, #2f59a8);
  /* the standard */

  color: white;
}
#EasyBlogMediaManager .imageVariationList .imageVariations
.imageVariation:hover {
  cursor: pointer;
}
#EasyBlogMediaManager .imageVariationList.readOnly .imageVariations {
  border: 1px solid #bbb;
  -webkit-border-top-right-radius: 3px;
  -webkit-border-bottom-right-radius: 3px;
  -webkit-border-bottom-left-radius: 3px;
  -webkit-border-top-left-radius: 3px;
  -moz-border-radius-topright: 3px;
  -moz-border-radius-bottomright: 3px;
  -moz-border-radius-bottomleft: 3px;
  -moz-border-radius-topleft: 3px;
  border-top-right-radius: 3px;
  border-bottom-right-radius: 3px;
  border-bottom-left-radius: 3px;
  border-top-left-radius: 3px;
  -moz-background-clip: padding;
  -webkit-background-clip: padding-box;
  background-clip: padding-box;
}
#EasyBlogMediaManager .imageVariationForm {
  position: relative;
}
#EasyBlogMediaManager .imageVariationForm form {
  background: #fff;
  border: 1px solid #bbb;
  border-bottom: none;
  -webkit-border-top-right-radius: 3px;
  -webkit-border-bottom-right-radius: 0;
  -webkit-border-bottom-left-radius: 0;
  -webkit-border-top-left-radius: 3px;
  -moz-border-radius-topright: 3px;
  -moz-border-radius-bottomright: 0;
  -moz-border-radius-bottomleft: 0;
  -moz-border-radius-topleft: 3px;
  border-top-right-radius: 3px;
  border-bottom-right-radius: 0;
  border-bottom-left-radius: 0;
  border-top-left-radius: 3px;
  -moz-background-clip: padding;
  -webkit-background-clip: padding-box;
  background-clip: padding-box;
  padding: 10px;
}
#EasyBlogMediaManager .imageVariationForm .newVariationRatio {
  display: block;
  width: 24px;
  height: 30px;
  position: absolute;
  top: 80px;
  right: 90px;
  background: url(icon.media.png) no-repeat;
  background-position: -512px -32px;
  cursor: pointer;
}
#EasyBlogMediaManager .imageVariationForm .newVariationRatio.locked {
  background: url(icon.media.png) no-repeat;
  background-position: -512px 0px;
}
#EasyBlogMediaManager .imageVariationForm .newVariationLockRatio {
  display: none;
}
#EasyBlogMediaManager .imageVariationActions {
  position: relative;
  background-color: #ffffff;
  background-repeat: no-repeat;
  background-image: -webkit-gradient(linear, left top, left bottom,
from(#ffffff), color-stop(50%, #f3f3f3), color-stop(51%, #ededed),
to(#ffffff));
  background-image: -webkit-linear-gradient(top, #ffffff 0%, #f3f3f3 50%,
#ededed 51%, #ffffff 100%);
  background-image: -moz-linear-gradient(top, #ffffff 0%, #f3f3f3 50%,
#ededed 51%, #ffffff 100%);
  background-image: -o-linear-gradient(top, #ffffff 0%, #f3f3f3 50%,
#ededed 51%, #ffffff 100%);
  background-image: -ms-linear-gradient(top, #ffffff 0%, #f3f3f3 50%,
#ededed 51%, #ffffff 100%);
  background-image: linear-gradient(top, #ffffff 0%, #f3f3f3 50%, #ededed
51%, #ffffff 100%);
  filter:
progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff',
endColorstr='#ffffff', GradientType=0);
  /* IE6 & IE7 */

  -ms-filter:
"progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff',
endColorstr='#ffffff', GradientType=0)";
  /* IE8+ */

  border: 1px solid #bbb;
  border-top: 1px solid #ccc;
  -webkit-border-top-right-radius: 0;
  -webkit-border-bottom-right-radius: 3px;
  -webkit-border-bottom-left-radius: 3px;
  -webkit-border-top-left-radius: 0;
  -moz-border-radius-topright: 0;
  -moz-border-radius-bottomright: 3px;
  -moz-border-radius-bottomleft: 3px;
  -moz-border-radius-topleft: 0;
  border-top-right-radius: 0;
  border-bottom-right-radius: 3px;
  border-bottom-left-radius: 3px;
  border-top-left-radius: 0;
  -moz-background-clip: padding;
  -webkit-background-clip: padding-box;
  background-clip: padding-box;
  height: 24px;
}
#EasyBlogMediaManager .imageVariationActions button {
  display: block;
  position: absolute;
  background: none;
  border: none;
  height: 24px;
  line-height: 24px;
  padding: 0 6px;
  padding-left: 18px;
  cursor: pointer;
  margin: 0 !important;
  text-transform: normal !important;
  font-size: 11px !important;
}
#EasyBlogMediaManager .imageVariationActions button i {
  width: 12px;
  height: 24px;
  background-repeat: no-repeat;
  background-position: center 8px;
  position: absolute;
  top: 2px;
  left: 6px;
  -moz-opacity: 0.75;
  -khtml-opacity: 0.75;
  -webkit-opacity: 0.75;
  opacity: 0.75;
  -ms-filter: progid:DXImageTransform.Microsoft.Alpha(opacity=75);
  filter: alpha(opacity=75);
}
#EasyBlogMediaManager .imageVariationActions button:hover {
  background-color: #ffffff;
  background-repeat: no-repeat;
  background-image: -webkit-gradient(linear, left top, left bottom,
from(#ffffff), color-stop(50%, #fbfbfb), color-stop(51%, #f5f5f5),
to(#ffffff));
  background-image: -webkit-linear-gradient(top, #ffffff 0%, #fbfbfb 50%,
#f5f5f5 51%, #ffffff 100%);
  background-image: -moz-linear-gradient(top, #ffffff 0%, #fbfbfb 50%,
#f5f5f5 51%, #ffffff 100%);
  background-image: -o-linear-gradient(top, #ffffff 0%, #fbfbfb 50%,
#f5f5f5 51%, #ffffff 100%);
  background-image: -ms-linear-gradient(top, #ffffff 0%, #fbfbfb 50%,
#f5f5f5 51%, #ffffff 100%);
  background-image: linear-gradient(top, #ffffff 0%, #fbfbfb 50%, #f5f5f5
51%, #ffffff 100%);
  filter:
progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff',
endColorstr='#ffffff', GradientType=0);
  /* IE6 & IE7 */

  -ms-filter:
"progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff',
endColorstr='#ffffff', GradientType=0)";
  /* IE8+ */

}
#EasyBlogMediaManager .imageVariationActions button.addVariationButton {
  -webkit-border-top-right-radius: 0;
  -webkit-border-bottom-right-radius: 3px;
  -webkit-border-bottom-left-radius: 0;
  -webkit-border-top-left-radius: 0;
  -moz-border-radius-topright: 0;
  -moz-border-radius-bottomright: 3px;
  -moz-border-radius-bottomleft: 0;
  -moz-border-radius-topleft: 0;
  border-top-right-radius: 0;
  border-bottom-right-radius: 3px;
  border-bottom-left-radius: 0;
  border-top-left-radius: 0;
  -moz-background-clip: padding;
  -webkit-background-clip: padding-box;
  background-clip: padding-box;
  top: 0;
  right: 0;
  border-left: 1px solid #ccc;
}
#EasyBlogMediaManager .imageVariationActions button.addVariationButton i {
  background: url(icon.media.png) no-repeat;
  background-position: -544px 0px;
}
#EasyBlogMediaManager .imageVariationActions button.removeVariationButton {
  -webkit-border-top-right-radius: 0;
  -webkit-border-bottom-right-radius: 0;
  -webkit-border-bottom-left-radius: 3px;
  -webkit-border-top-left-radius: 0;
  -moz-border-radius-topright: 0;
  -moz-border-radius-bottomright: 0;
  -moz-border-radius-bottomleft: 3px;
  -moz-border-radius-topleft: 0;
  border-top-right-radius: 0;
  border-bottom-right-radius: 0;
  border-bottom-left-radius: 3px;
  border-top-left-radius: 0;
  -moz-background-clip: padding;
  -webkit-background-clip: padding-box;
  background-clip: padding-box;
  top: 0;
  left: 0;
  border-right: 1px solid #ccc;
}
#EasyBlogMediaManager .imageVariationActions button.removeVariationButton i
{
  background: url(icon.media.png) no-repeat;
  background-position: -544px -32px;
}
#EasyBlogMediaManager .imageVariationActions button.createVariationButton {
  -webkit-border-top-right-radius: 0;
  -webkit-border-bottom-right-radius: 3px;
  -webkit-border-bottom-left-radius: 0;
  -webkit-border-top-left-radius: 0;
  -moz-border-radius-topright: 0;
  -moz-border-radius-bottomright: 3px;
  -moz-border-radius-bottomleft: 0;
  -moz-border-radius-topleft: 0;
  border-top-right-radius: 0;
  border-bottom-right-radius: 3px;
  border-bottom-left-radius: 0;
  border-top-left-radius: 0;
  -moz-background-clip: padding;
  -webkit-background-clip: padding-box;
  background-clip: padding-box;
  top: 0;
  right: 0;
  border-left: 1px solid #ccc;
}
#EasyBlogMediaManager .imageVariationActions button.createVariationButton i
{
  background: url(icon.media.png) no-repeat;
  background-position: -576px 0px;
}
#EasyBlogMediaManager .imageVariationActions button.backVariationButton {
  -webkit-border-top-right-radius: 0;
  -webkit-border-bottom-right-radius: 0;
  -webkit-border-bottom-left-radius: 3px;
  -webkit-border-top-left-radius: 0;
  -moz-border-radius-topright: 0;
  -moz-border-radius-bottomright: 0;
  -moz-border-radius-bottomleft: 3px;
  -moz-border-radius-topleft: 0;
  border-top-right-radius: 0;
  border-bottom-right-radius: 0;
  border-bottom-left-radius: 3px;
  border-top-left-radius: 0;
  -moz-background-clip: padding;
  -webkit-background-clip: padding-box;
  background-clip: padding-box;
  top: 0;
  left: 0;
  border-right: 1px solid #ccc;
}
#EasyBlogMediaManager .imageVariationActions button.backVariationButton i {
  background: url(icon.media.png) no-repeat;
  background-position: -576px -32px;
}
#EasyBlogMediaManager .imageEnforceDimension {
  position: relative;
}
#EasyBlogMediaManager .imageEnforceDimension .imageEnforceRatio {
  display: block;
  width: 24px;
  height: 30px;
  position: absolute;
  top: 85px;
  right: 58px;
  background: url(icon.media.png) no-repeat;
  background-position: -512px -32px;
  cursor: pointer;
}
#EasyBlogMediaManager .imageEnforceDimension .imageEnforceRatio.locked {
  background: url(icon.media.png) no-repeat;
  background-position: -512px 0px;
}
#EasyBlogMediaManager .imageEnforceDimension .imageEnforceLockRatio {
  display: none !important;
}
#EasyBlogMediaManager .imageEnforceDimension.field-content
.imageEnforceRatio {
  top: 10px;
  right: 20px;
}
#EasyBlogMediaManager {
  /*Palm only*/

}
@media (max-width: 480px) {
  #EasyBlogMediaManager .mediaModalGroup {
    padding: 0 10px;
  }
  #EasyBlogMediaManager .browserTreeItemField {
    float: none;
    height: auto;
    width: 100%;
  }
  #EasyBlogMediaManager .browserItemField {
    margin-left: 0;
  }
  #EasyBlogMediaManager .mediaModal .modalHeader .modalTitle {
    position: relative;
    display: none;
  }
  #EasyBlogMediaManager .mediaModal .modalHeader .modalButtons {
    float: none;
  }
  #EasyBlogMediaManager .mediaModal .modalHeader
button.modalButton.uploaderButton,
  #EasyBlogMediaManager .mediaModal .modalHeader
button.modalButton.browserButton {
    float: left;
  }
  #EasyBlogMediaManager .mediaModal .modalToolbar {
    height: 106px;
  }
  #EasyBlogMediaManager .mediaModal .modalToolbar .topActions {
    position: relative;
    right: auto;
  }
}
media/style.less000064400000000630151167475130007664 0ustar00@MediaManager:
"#EasyBlogMediaManager";

@import "elements";
@import "common";
@import "modal";
@import "manager";
@import "navigation";
@import "browser";
@import "browser.search";
@import "browser.item";
@import "browser.treeItem";
@import "uploader";
@import "editor";
@import "editor.panel.section";
@import "editor.panel.form";
@import "editor.panel.info";
@import "editor.image";
@import "responsive";
media/uploader.item.js000064400000002710151167475130010743 0ustar00//
module: start
EasyBlog.module("media/uploader.item", function($) {

var module = this;

// controller: start
EasyBlog.Controller("Media.Browser.Uploader.Item",

	{
		defaultOptions: {
			"{filename}": ".uploadFilename",
			"{progressBar}": ".uploadProgressBar progress",
			"{percentage}": ".uploadPercentage",
			"{status}": ".uploadStatus",
			"{removeButton}": ".uploadRemoveButton"
		}
	},

	// Instance properties
	function(self) { return {

		init: function() {

			self.element.data("item", self);

			self.filename()
				.html(self.file.name);

			self.setState("queued");
		},

		getFilesize: function(p, s) {

			return (
				(self.file.size===undefined || self.file.size=="N/A") ?
					"":
                    ((p) ? p : "") +
$.plupload.formatSize(self.file.size) +  ((s) ? s : "")
            );
		},

		setProgress: function(val) {

			self.progressBar()
				.attr("value", val);

			self.percentage()
				.html(val);
		},

		setState: function(state) {

			// queued, uploading, failed, done

			self.element
				.removeClass("upload-state-" + self.state)
				.addClass("upload-state-" + state);

			self.state = state;
		},

		setMessage: function(message) {

			self.status()
				.html(message);
		},

		"{removeButton} click": function(el, event) {

			event.stopPropagation();

			// TODO: Garbage collection
			self.element
				.slideUp(function(){

					self.element.remove();
				});
		}
	}}

);
// controller: end

module.resolve();


});
// module: end
media/uploader.js000064400000052552151167475140010020 0ustar00// module:
start
EasyBlog.module("media/uploader", function($) {

var module = this;

// require: start
EasyBlog.require()
.library(
    "plupload"
)
// .view(
//     "media/browser.uploader",
//     "media/browser.uploader.item",
//     "media/browser.treeItemGroup",
//     "media/browser.treeItem"
// )
// .language(
//     'COM_EASYBLOG_MM_UPLOADING',
//     'COM_EASYBLOG_MM_UPLOADING_STATE',
//     'COM_EASYBLOG_MM_UPLOADING_PENDING',
//     'COM_EASYBLOG_MM_UPLOAD_COMPLETE',
//     'COM_EASYBLOG_MM_UPLOAD_PREPARING',
//     'COM_EASYBLOG_MM_UPLOAD_UNABLE_PARSE_RESPONSE',
//     'COM_EASYBLOG_MM_UPLOADING_LEFT'
// )
.done(function(){

var $Media, $Library, $Uploader, DS;

// controller: start
EasyBlog.Controller("Media.Uploader",

	{
		defaultOptions: {

            view: {
                uploader: "media/browser.uploader",
                uploadItem: "media/browser.uploader.item"
            },

            "{modalHeader}": ".modalHeader",
            "{modalToolbar}": ".modalToolbar",
            "{modalContent}": ".modalContent",
            "{modalFooter}": ".modalFooter",
            "{modalPrompt}": ".modalPrompt",
            "{modalBrowserButton}":
".modalButton.browserButton",
            "{modalDashboardButton}":
".modalButton.dashboardButton",

            "{uploadButton}" : ".uploadButton",
            "{uploadNavigation}" : ".uploadNavigation",

            "{uploadForm}": ".uploadForm",
            "{uploadPath}": ".uploadPath",
            "{uploadSize}": ".uploadSize",
            "{uploadExtensionList}":
".uploadExtensionList",

            "{uploadItemGroup}": ".uploadItemGroup",
            "{uploadItem}": ".uploadItem",

            "{uploadDropHint}": ".uploadDropHint",
            "{uploadInstructions}":
".uploadInstructions",

            "{clearListButton}": ".clearListButton"
		}
	},

    function(self) { return {

        init: function() {

            $Media = self.media;
            $Library = $Media.library;
            $Uploader = $Media.uploader = self;
            DS = $Media.options.directorySeparator;

            // Uploader template
            self.element
                .addClass("uploader")
                .html(self.view.uploader({
                    uploadSize: self.options.settings.max_file_size,
                    uploadExtensionList:
self.options.settings.filters[0].extensions.split(",").join(",
")
                }));

            // Browser navigation
            self.uploadNavigation()
                .implement(
                    EasyBlog.Controller.Media.Navigation,
                    {
                        controller: self.controllerProps()
                    },
                    function() {
                        // Assign controller as a property of myself
                        self.navigation = this;
                    }
                );

            // Modal prompt
            self.modalPrompt()
                .implement(
                    EasyBlog.Controller.Media.Prompt,
                    {
                        controller: self.controllerProps()
                    },
                    function() {
                        self.promptDialog = this;
                    }
                );

            // Folder switcher
            self.element
                .implement(
                    EasyBlog.Controller.Media.Uploader.FolderSwitcher,
                    {
                        controller: self.controllerProps()
                    },
                    function() {
                        self.folderSwitcher = this;
                    }
                );

            // Plupload
            self.element
                .implement(
                    "plupload",
                    {
                        settings: self.options.settings,
                        "{uploadButton}" :
self.options["{uploadButton}"],
                        "{uploadDropsite}":
self.options["{uploadItemGroup}"]
                    },
                    function() {

                        self.plupload = this.plupload;

                        if (self.plupload.runtime=="html4" ||
$.browser.msie) {

                            // No drag & drop support
                            self.uploadDropHint().remove();

                           
self.uploadItemGroup().addClass("indefinite-progress");

                            // Really dirty fix to fix tooltip in IE
                            var uploadInstructions =
                                    self.uploadInstructions()
                                        .appendTo($Media.element);

                            self.element.find("> form")
                                .mouseover(function(){

                                    var uploadButton = self.uploadButton(),
                                        offset = uploadButton.offset();

                                    uploadInstructions
                                        .addClass("show")
                                        .css({
                                            top: offset.top +
uploadButton.outerHeight() - $Media.element.offset().top + 3,
                                            right: $(window).width() -
(offset.left + uploadButton.outerWidth()) - 1
                                        });


                                })
                                .mouseout(function(){
                                   
uploadInstructions.removeClass("show");
                                });

                        } else {

                            self.uploadButton()
                                .mouseover(function(){
                                   
self.uploadInstructions().addClass("show");
                                })
                                .mouseout(function(){
                                   
self.uploadInstructions().removeClass("show");
                                });
                        }
                    }
                );

            self.setLayout();
		},

        setLayout: function() {

            // Don't set layout if current modal is not us
            if ($Media.currentModal!=="uploader") return;

            var contentHeight;

            self.modalContent()
                .hide()
                .height(
                    contentHeight =
                        self.element.height() -
                        self.modalHeader().outerHeight() -
                        self.modalToolbar().outerHeight() -
                        self.modalFooter().outerHeight()
                )
                .show();

            if ($.browser.msie) {

                self.uploadDropHint()
                    .height(contentHeight);

                self.uploadItemGroup()
                    .height(contentHeight);
            }

            if (self.plupload) {
                self.plupload.refresh();
            }
        },

        controllerProps: function(prop) {

            return $.extend(
            {
                media: self.media,
                uploader: self
            }, prop || {});
        },

        setUploadFolder: function(key) {

            if (!key) return;

            self.navigation
                .setPathway(key);

            self.currentUploadFolder = key;
        },

        items: {},

        createItem: function(file) {

            // Create item controller
            var item = new EasyBlog.Controller.Media.Uploader.Item(
                self.view.uploadItem(),
                {
                    controller: self.controllerProps({
                        id: file.id,
                        originalFile: file,
                        uploadFolder: self.currentUploadFolder
                    })
                }
            );

            // Add to item group
            item.element
                .appendTo(self.uploadItemGroup());

            // Set initial status to pending
            var filesize = item.file().filesize,
                filesize = (filesize) ? "" : " (" +
filesize + ").";

            item.setMessage($.language(
"COM_EASYBLOG_MM_UPLOADING_PENDING" ) + filesize);

            // Keep a copy of the item in our registry
            self.items[file.id] = item;

            return item;
        },

        "{self} BeforeUpload": function(el, event, uploader,
file) {

            var item = self.items[file.id];

            if (item===undefined) return;

            item.setMessage( $.language(
'COM_EASYBLOG_MM_UPLOAD_PREPARING' ) );

            var uploadUrl = self.options.settings.url,
                meta  = $Library.getMeta(item.uploadFolder),
                place = (meta) ? meta.place :
item.uploadFolder.split("|")[0],
                path  = encodeURIComponent((meta) ? meta.path :
item.uploadFolder.split("|")[1]);

            uploader.settings.url = uploadUrl + "&place=" +
place + "&path=" + path;
        },

        "{self} FilesAdded": function(el, event, uploader, files)
{

            // Wrap the entire body in a try...catch scope to prevent
            // browser from trying to redirect and load the file if
anything goes wrong here.
            try {

                $.each(files, function(i, file) {

                    // The item may have been created before, e.g.
                    // when plupload error event gets triggered first.
                    if (self.items[file.id]!==undefined) return;

                    self.createItem(file);
                });

                if (self.uploadItem().length > 0) {

                    self.uploadItemGroup().removeClass("empty");
                }

                self.plupload.start();

            } catch (e) {

                console.error(e);
            };
        },

        "{self} UploadFile": function(el, event, uploader, file)
{

            var item = self.items[file.id];

            if (item===undefined) return;

            item.setState("uploading");

            item.setMessage( $.language(
'COM_EASYBLOG_MM_UPLOADING_STATE' ) );
        },

        "{self} UploadProgress": function(el, event, uploader,
file) {

            var item = self.items[file.id];

            if (item===undefined) return;

            item.setProgress(file.percent);

            item.setMessage(
                $.language( 'COM_EASYBLOG_MM_UPLOADING' )  +
                ((file.percent!==undefined) ? " " + file.percent
+ "%" : "") +
                ((file.loaded!==undefined &&
!file.size!==undefined) ?
                    ((file.size - file.loaded) ?
                        " (" + $.plupload.formatSize(file.size -
file.loaded) + " " + $.language(
'COM_EASYBLOG_MM_UPLOADING_LEFT' ) + ")" : ""
                    ) : ""
                )
            );
        },

        "{self} FileUploaded": function(el, event, uploader,
file, response) {

            // Get upload item
            var item = self.items[file.id];

            if (item===undefined) return;

            // Store the item response (For debugging purposes)
            item.response = response;

            // If the response is not a valid object
            if (!$.isPlainObject(response)) {

                // Set upload item state to failed.
                item.setState("failed");
               
item.setMessage($.language('COM_EASYBLOG_MM_SERVER_RETURNED_INVALID_RESPONSE'));
                return;
            }

            // If the response object did not include the meta
            if (!$.isPlainObject(response.item)) {

                // Set upload item state to failed.
                item.setState("failed");
                item.setMessage(response.message ||
$.language('COM_EASYBLOG_MM_UPLOAD_UNABLE_PARSE_RESPONSE'));
                return;
            }

            // If all goes well, set upload item state to done.
            item.setState("done");
            item.setMessage( $.language(
'COM_EASYBLOG_MM_UPLOAD_COMPLETE' ) );

            // Store the meta
            item.meta = response.item;

            // hack: Restore place
            item.meta.place = $Media.library.get(item.uploadFolder).place;

            // Remove insert blog image button for non-image files
            if (item.meta.type!=="image") {
                item.insertBlogImageButton().remove();
            }

            $Media.library.addMeta(item.meta);
        },

        "{self} FileError": function(el, event, uploader, file,
response) {

            var item = self.items[file.id];

            if (item===undefined) {

                // Create the item
                item = self.createItem(file);
            }

            item.response = response;

            item.setState("failed");

            item.setMessage(response.message);


            if (self.uploadItem().length > 0) {

                self.uploadItemGroup().removeClass("empty");
            }
        },

        "{self} Error": function(el, event, uploader, error) {

            // If the returned error object also returns a file object
            if (error.file) {

                // Check if the upload item has been created
                var file = error.file,
                    item = self.items[file.id];

                // If the upload item doesn't exist
                if (item===undefined) {

                    // Create the item
                    item = self.createItem(file);
                }

                // Set the item state as failed
                item.setState("failed");

                // And the message for the item.
                item.setMessage(error.message);
            }

            if (self.uploadItem().length > 0) {

                self.uploadItemGroup().removeClass("empty");
            }
        },

        "{modalBrowserButton} click": function() {

            $Media.browse();
        },

        "{modalDashboardButton} click": function() {

            $Media.hide();
        },

        "{uploadNavigation} activate": function(el, event, key) {

            self.setUploadFolder(key);
        },

        "{self} modalActivate": function(el, event, key) {

            self.setUploadFolder(key);

            if ($Media.browser) {
                self.uploadItemGroup()
                    .toggleClass("blogimage",
$Media.browser.mode()=="blogimage");
            }
        },

        removeItem: function(id) {

            var item = self.items[id];

            if (item!==undefined) {

                self.plupload.removeFile(item.file());

                item.element.remove();

                delete self.items[id];
            }

            if (self.uploadItem().length < 1) {

                self.uploadItemGroup().addClass("empty");
            }
        },

        "{clearListButton} click": function() {

            for (id in self.items) {

                self.removeItem(id);
            }
        }
	}}

);

EasyBlog.Controller("Media.Uploader.Item",

    {
        defaultOptions: {
            "{filename}": ".uploadFilename",
            "{progressBar}": ".uploadProgressBar
progress",
            "{percentage}": ".uploadPercentage",
            "{status}": ".uploadStatus",
            "{removeButton}": ".uploadRemoveButton",
            "{insertItemButton}": ".insertItemButton",
            "{locateItemButton}": ".locateItemButton",
            "{insertBlogImageButton}":
".insertBlogImageButton"
        }
    },

    // Instance properties
    function(self) { return {

        init: function() {

            var file = self.file();

            self.filename()
                .html(file.name);

            self.setState("queued");
        },

        file: function() {

            var file = $Uploader.plupload.getFile(self.id) ||
self.originalFile;

            if (file) {

                file.filesize = (file.size===undefined ||
file.size=="N/A") ? "" :
$.plupload.formatSize(self.file.size);
            }

            return file;
        },

        "dblclick": function(el, event) {

            if (event.shiftKey) {
                $Media.console("log", self);
            }
        },

        setProgress: function(val) {

            self.progressBar()
                .attr("value", val);

            self.percentage()
                .html(val);
        },

        setState: function(state) {

            // queued, uploading, failed, done
            self.element
                .removeClass("upload-state-" + self.state)
                .addClass("upload-state-" + state);

            self.state = state;
        },

        setMessage: function(message) {

            self.status()
                .html(message);
        },

        "{removeButton} click": function(el, event) {

            event.stopPropagation();

            $Uploader.removeItem(self.id);
        },

        "{insertItemButton} click": function() {

            $Media.insert(self.meta);
        },

        "{locateItemButton} click": function() {

            $Media.browse(self.meta);
        },

        "{insertBlogImageButton} click": function() {

            // We are getting the raw meta
            var meta = $Library.meta[$Library.getMeta(self.meta).key];

            EasyBlog.dashboard.blogImage.setImage(meta);

            $Media.hide();
        }
    }}

);

EasyBlog.Controller("Media.Uploader.FolderSwitcher",
    {
        defaultOptions: {

            view: {
                treeItemGroup: "media/browser.tree-item-group",
                treeItem     : "media/browser.tree-item"
            },

            "{changeUploadFolderButton}":
".changeUploadFolderButton",
            "{selectFolderButton}":
".selectFolderButton",
            "{treeItemField}"   :
".browserTreeItemField",
            "{treeItemGroup}"   :
".browserTreeItemGroup",
            "{treeItem}"        : ".browserTreeItem"
        }
    },

    function(self) { return {

        init: function() {

            var initialUploadFolder;

            self.promptDialog =
$Uploader.promptDialog.get("changeUploadFolderPrompt");

            // Create all places
            $.each($Media.library.places, function(id, place) {

                if (!place.acl.canUploadItem) return;

                place.uploaderTreeItemGroup =
                    self.view.treeItemGroup()
                        .addClass("expanded") // Always expanded
                        .appendTo(self.treeItemField());

                place.uploaderTreeItem =
                    self.view.treeItem({title: place.title})
                        .addClass("loading")
                        .addClass("type-place")
                        .data("place", place)
                        .appendTo(place.uploaderTreeItemGroup);

                if (!initialUploadFolder) {

                    initialUploadFolder = place.id + "|" + DS;

                    $Uploader.setUploadFolder(initialUploadFolder);
                }

                place
                    .done(function(){

                        self.createTreeItem(place.baseFolder());

                        place.uploaderTreeItem
                           .removeClass("loading");
                    });
            });
        },

        treeItems: {},

        createTreeItem: function(meta) {

            var meta = $Library.getMeta(meta),

                treeItem = self.treeItems[meta.key] || (function(){

                    var place = $Library.getPlace(meta.place),

                        parentMeta = $Library.getMeta(meta.parentKey),

                        // Create tree item
                        treeItem = self.treeItems[meta.key] =

                            ((parentMeta) ?
                                self.view.treeItem({title: meta.title})
                                    .addClass("type-folder")
                                   
.insertAfter(self.treeItems[parentMeta.key])
                                :
                                place.uploaderTreeItem

                            // Store a reference to the key
                            ).data("key", meta.key);

                        // Remove tree item when meta is removed
                        meta.data.on("removed", function(){
                            self.removeTreeItem(meta);
                        });

                        // Listen to the subfolder for changes
                        meta.data.views
                            .create({group: "folders"})
                            .updated(function(folders) {

                                $.each(folders, function(i, key) {
                                    self.createTreeItem(key);
                                });
                            });

                    return treeItem;
                })();

            return treeItem;
        },

        removeTreeItem: function(meta) {

            var meta = $Library.getMeta(meta),

                treeItem = self.treeItems[meta.key];

            if (treeItem) {

                treeItem.remove();

                var parentTreeItem = self.treeItems[meta.parentKey];

                $Uploader.setUploadFolder(meta.parentKey);
            }
        },

        "{treeItem} click": function(el) {

            self.treeItem().removeClass("active");

            el.addClass("active");
        },

        "{changeUploadFolderButton} click": function() {

            var key = self.currentUploadFolder,

                treeItem = self.treeItems[key] ||
self.treeItem(":first");

            // Highlght on that tree item
            treeItem.click()

            self.promptDialog.show();
        },

        "{selectFolderButton} click": function() {

            var key =
self.treeItem(".active").data("key");

            $Uploader.setUploadFolder(key);

            self.promptDialog.hide();
        }

    }}
);


// controller: end

module.resolve();

});
// require: end

});
// module: end
media/uploader.less000064400000020427151167475140010346
0ustar00.uploadInstructions {

    font-weight: bold;
    top: 39px;
    right: 0px;
    font-size: 12px;
    line-height: 16px;
    display: none;

    .uploadExtensions {
        font-size: 10px;
        font-weight: normal;
        line-height: 14px;
        margin-top: 4px;
        display: block;
        color: #888;
    }

    &.show {
        display: block;
        z-index: 9999;
    }
}

(~"@{MediaManager}") {

    .uploader {

        > form {
            // Fixes unable to click uploader button on IE.
            z-index: 99999 !important;
            cursor: pointer;
        }

        .plupload {
            cursor: pointer;

            input {
                cursor: pointer;
            }
        }

        background: #fff;

        .uploadDropHint {

            z-index: 1;

            .hint.hint-dropUpload {

                margin-top: -244px / 2;

                i {
                    .icon-media(1, 5);
                    width: 210px;
                    height: 210px;
                    display: inline-block;
                }
            }
        }

        .uploadItemGroup {
            position: relative;
            z-index: 2;
            overflow-y: scroll;
            overflow-x: hidden;
            height: 100%;
            .opacity(1);
            background: #fff;
            .transition();

            &.empty {
                .opacity(0);
                .transition();
            }

            &.indefinite-progress {

                .uploadItem {

                    .uploadProgressBar {
                        progress {
                            display: none;
                        }

                        .progress-alt {
                            display: block;
                        }
                    }
                }
            }

            &.blogimage {

                .uploadItem .uploadActions {

                    .insertItemButton {
                        display: none !important;
                    }

                    .insertBlogImageButton {
                        display: block !important;
                    }
                }
            }

            // start: .uploadItem
            .uploadItem {

                padding: 8px;
                padding-left: 32px !important; // 12px + 16px icon + 4px
gap
                .unselectable();

                + .uploadItem {
                    border-top: 1px solid #ccc;
                }

                .item-wrap {
                    position: relative;
                }

                .uploadFilename {
                    display: block;
                    height: 16px;
                    line-height: 16px;
                    padding: 0;
                    white-space: nowrap;
                    overflow: hidden;
                    font-size: 12px;
                }

                .uploadStatus {
                    display: block;
                    color: #777;
                    font-weight: normal;
                    line-height: 14px;
                    font-size: 10px;
                }

                .uploadProgressBar {

                    display: none;

                    .progress() {
                        width: 99%;
                        height: 8px;
                        margin: 6px 0 2px;
                        background: #fff;
                        border: 1px solid #aaa;
                    }

                    .progressBar() {
                        background: #E5EEFF !important;
                        .rounded(3px);
                    }

                    progress {

                        .progress();
                        .rounded(3px);

                        &::-moz-progress-bar          { .progressBar();
}
                        &::-webkit-progress-bar       { .progressBar();
}
                        &::-webkit-progress-value     { .progressBar();
}
                        &[role][aria-valuenow]:before { .progressBar();
}
                    }

                    .progress-alt {

                        .progress();
                        display: none;

                        img {
                            height: 8px;
                            width: 100%;
                        }
                    }
                }

                .uploadActions {

                    display: none;
                    position: absolute;
                    top: 0;
                    right: 0;

                    button {
                        float: right;
                        margin-left: 5px;
                        padding-left: 8px + 16px + 2px !important; // 1px
for cosmetic

                        > i {
                            position: absolute;
                            top: 4px;
                            left: 6px;
                            width: 16px;
                            height: 16px;
                        }
                    }

                    .locateItemButton {
                        > i {
                            .icon-media(3, 3);
                            height: 17px;
                        }
                    }

                    .insertItemButton {
                        > i {
                            .icon-media(7, 4);
                        }
                    }

                    .insertBlogImageButton {
                        display: none;
                        > i {
                            .icon-media(7, 4);
                        }
                    }
                }

                .uploadIcon {
                    position: absolute;
                    width: 16px;
                    height: 16px;
                    top: 0;
                    left: -22px;
                    display: block;
                    cursor: pointer;
                }

                &.upload-state-queued {

                    .uploadIcon {
                        .icon-media(6, 3);
                    }
                }

                &.upload-state-uploading {

                    .uploadProgressBar {
                        display: block;
                    }

                    .uploadIcon {
                        background-image: url("loader.gif");
                        background-position: center center;
                        background-repeat: no-repeat;
                    }
                }

                &.upload-state-done {

                    .uploadIcon {
                        .icon-media(7, 3);
                    }

                    .uploadActions {
                        display: block;
                        opacity: 0.3;
                    }

                    &:hover .uploadActions {
                        opacity: 1;
                    }
                }

                &.upload-state-failed {

                    .uploadIcon {
                        .icon-media(8, 3);
                    }
                }

                &:hover {

                    .uploadIcon.uploadRemoveButton {
                        .icon-media(5, 3);

                        &:hover {
                            .icon-media(4, 3);
                        }
                    }
                }
            }
            // end: .uploadItem
        }

        .modalContent {
            .unselectable();
        }

        .modalToolbar {

            .uploadButton {

                > i {
                   .icon-media(7, 2);
                }
            }

            .changeUploadFolderButton {

                > i {
                    .icon-media(11, 3);
                    width: 18px !important;
                    top: 9px !important;
                }
            }
        }

        .modalFooter {

            .clearListButton {

                > i {

                }
            }
        }

        .modalPrompt {

            .changeUploadFolderPrompt {

                .promptContent {
                    padding: 5px 15px;
                }

                .browserTreeItemField {
                    border: 1px solid #ccc;
                    width: auto;
                    float: none;
                    height: 145px;

                    .browserTreeItemGroup .browserTreeItem.type-place i,
                    .browserTreeItemGroup
.browserTreeItem.type-place.active i {
                        .icon-media(10, 3);
                    }
                }
            }

        }
    }

}
media.js000064400000126015151167475140006201
0ustar00EasyBlog.module("media", function($){

	var module = this;


	var htmlentity = function(str) {

		return $("<div>").text(str)
					.html()
					.replace(/&/g, '&amp;')
					.replace(/"/g, '&quot;')
					.replace(/'/g, '&apos;');
	}

	var $Media, $Library, $Browser, $Uploader, DS;

	//
	// 1. Create media manager controller.
	//
	EasyBlog.Controller("Media",

		{
			defaultOptions: {

				debug: {
					logging: EasyBlog.debug,

					itemVisibility: false,

					delayConfiguration: 0,
					delayCommon: 0,
					delayBrowser: 0,
					delayUploader: 0,
					delayEditor: 0
				},

				ui: "#EasyBlogMediaManagerUI",


				overlay: {
					background: "black",
					opacity: 0
				},

				modal: {
					size: 0.9
				},

				recentActivities: {
					hideAfter: 3000
				},

				"{modalGroup}"    : ".mediaModalGroup",
				"{modal}"         : ".mediaModal",

				"{loaderModal}"   : ".loaderModal",
				"{uploaderModal}" : ".uploaderModal",
				"{browserModal}"  : ".browserModal",
				"{editorModal}"   : ".editorModal",

				"{modalContent}"  : ".modalContent",

				"{overlay}": ".media-overlay",

				"{modalDashboardButton}": ".dashboardButton",

				"{assetItem}": ".assetItem"
			}
		},

		function(self) { return {

			console: function(method, args) {

				if (!self.options.debug.logging) return;

				var console = window.console;

				if (!console) return;

				var method = console[method];

				if (!method) return;

				// Normal browsers
				if (method.apply) {
					method.apply(console, args);
				// IE
				} else {
					method(args.join(" "));
				}
			},

			assets: {},

			getAsset: function(name) {

				if (self.assets[name]===undefined) {

					var asset = self.assets[name] = $.Deferred();

					asset
						.done(function(){

							self.assetItem(".asset-type-"+name)
								.removeClass("loading done failed")
								.addClass("done");
						})
						.fail(function(){
							self.assetItem(".asset-type-"+name)
								.removeClass("loading done failed")
								.addClass("fail");
						});
				}

				return self.assets[name];
			},

			createAsset: function(name, factory, delay) {

				var asset = self.getAsset(name);
					asset.factory = factory;

				setTimeout(function(){
					asset.factory && asset.factory(asset);
				}, delay);

				return asset;
			},

			init: function() {

				// Globals
				$Media = self;

				self.IE = (function(){

				    var undef,
				        v = 3,
				        div = document.createElement('div'),
				        all = div.getElementsByTagName('i');

				    while (
				        div.innerHTML = '<!--[if gt IE ' + (++v) +
']><i></i><![endif]-->',
				        all[0]
				    );

				    return v > 4 ? v : undef;

				}());


				if( typeof( tinyMCE ) != 'undefined' )
				{

					// Caret position fix
					if (tinyMCE && tinyMCE.isIE && self.IE==9) {

						// Wait for TinyMCE to be ready
						var waitForTinyMCE = setInterval(function(){

							var editor = tinyMCE.editors.write_content;

							if (!editor) return;

							var events = "keydown.mediaManager mousedown.mediaManager
focus.mediaManager";

							$(editor.contentWindow)
								// Just in case it was binded
								.off(events)
								.on(events, function(){
									self.bookmark = {
										element: editor.selection.getEnd(),
										range: editor.selection.getBookmark(1).rng
									}
								});

							clearInterval(waitForTinyMCE);

						}, 500);
					}
				}

				// Remember the document body's original overflow property
				// Used with .hide();
				self.originalBodyOverflow =
$("body").css("overflow");

				// When "module/configuration" gets resolved,
				// file & folder indexing kicks in immediately
				// without waiting for the other assets to resolve.
				self.createAsset(
					"configuration",
					function(asset) {
						EasyBlog.module("media/configuration")
							.done(function() {
								var options = this;
								self.initialize(this);
								asset.resolve();
							})
							.fail(function(){
								asset.reject();
							});
					},
					self.options.debug.delayConfiguration
				);

				// Stylesheet & navigation is given priority because it needs to be
				// ready before uploader can initialize. And we need
				// uploader to be up & ready as fast as possible.
				self.createAsset(
					"common",
					function(asset) {
						EasyBlog.require()
							.script(
								"media/navigation"
							)
							.view(
								"media/recent.item",

								// Browser
								"media/browser",
								"media/browser.item-group",
								"media/browser.item",
								"media/browser.tree-item-group",
								"media/browser.tree-item",
								"media/browser.pagination-page",

								// Uploader
							    "media/browser.uploader",
							    "media/browser.uploader.item",

							    // Editor
								"media/editor",
								"media/editor.viewport",

								// Navigation
								"media/navigation.item",
								"media/navigation.itemgroup"
							)
							.language(
								"COM_EASYBLOG_MM_UNABLE_TO_FIND_EXPORTER",
								"COM_EASYBLOG_MM_GETTING_IMAGE_SIZES",
								"COM_EASYBLOG_MM_UNABLE_TO_RETRIEVE_VARIATIONS",
								"COM_EASYBLOG_MM_ITEM_INSERTED",
								"COM_EASYBLOG_MM_UPLOADING",
								"COM_EASYBLOG_MM_UPLOADING_STATE",
								"COM_EASYBLOG_MM_UPLOADING_PENDING",
								"COM_EASYBLOG_MM_UPLOAD_COMPLETE",
								"COM_EASYBLOG_MM_UPLOAD_PREPARING",
								"COM_EASYBLOG_MM_UPLOAD_UNABLE_PARSE_RESPONSE",
								"COM_EASYBLOG_MM_UPLOADING_LEFT",
								"COM_EASYBLOG_MM_CONFIRM_DELETE_ITEM",
								"COM_EASYBLOG_MM_CANCEL_BUTTON",
								"COM_EASYBLOG_MM_YES_BUTTON",
								"COM_EASYBLOG_MM_ITEM_DELETE_CONFIRMATION"
							)
							.stylesheet("media/style")
							.done(function() {
								asset.resolve();
							})
							.fail(function(){
								asset.reject();
							});
					},
					self.options.debug.delayCommon
				);

				// Load all uploader dependencies NOW so we can shave off
				// that extra 1-2 seconds that was used to wait for
				// "media/uploader" module to resolve.
				self.createAsset(
					"uploader",
					function(asset) {
						$.when(
							self.getAsset("configuration"),
							self.getAsset("common"),
							EasyBlog.require().script("media/uploader").done()
						)
						.done(function() {
							var modal = self.createModal("uploader");
							$Uploader = modal.controller = new
EasyBlog.Controller.Media.Uploader(modal.element, self.options.uploader);
							asset.resolve();
						})
						.fail(function(){
							asset.reject();
						});
					},
					self.options.debug.delayUploader
				);

				// Browser
				self.createAsset(
					"browser",
					function(asset) {
						$.when(
							self.getAsset("configuration"),
							self.getAsset("common"),
							EasyBlog.require().script("media/browser").done()
						)
						.done(function(){
							var modal = self.createModal("browser");
							$Browser = modal.controller = new
EasyBlog.Controller.Media.Browser(modal.element, self.options.browser);
							asset.resolve();
						})
						.fail(function(){
							asset.reject();
						});
					},
					self.options.debug.delayBrowser
				);

				// Editor
				self.createAsset(
					"editor",
					function(asset) {
						$.when(
							self.getAsset("browser"),
							EasyBlog.require().script("media/editor").done()
						)
						.done(function(){
							var modal = self.createModal("editor");
							modal.controller = new
EasyBlog.Controller.Media.Editor(modal.element, self.options.editor);
							asset.resolve();
						})
						.fail(function(){
							asset.reject();
						});
					},
					self.options.debug.delayEditor
				);

				// Progressive enhancement
				EasyBlog.require()
					.library("throttle-debounce")
					.done(function(){
						// Debounce self.setLayout(). Debouncing setLayout() is only useful
when
						// media explorer is doing resource-intensive thumbnail resizing.
						self.setLayout = $.debounce(200, self._setLayout);
					});
			},

			initialize: function(options) {

				// Inject subcontroller options with back-reference to media
				var media = {controller: {media: self}},
					options = $.extend(true, options, {browser: media, uploader: media,
library: media, editor: media, exporter: media});

				// Reload configuration
				self.update(options);

				// Globals
				DS = options.directorySeparator;

				// Render media manager UI
				var UI = $(self.options.ui);
				self.element.append(UI.html());
				UI.remove();

				// Set up overlay
				self.overlay()
					.css(self.options.overlay);

				// Set up loader
				self.loader = new
EasyBlog.Controller.Media.Loader(self.createModal("loader"),
{controller: {media: self}});

				// Implement media library
				self.element
					.implement(
						EasyBlog.Controller.Media.Library,
						self.options.library,
						function(){

						}
					);

				// Implement media exporter
				self.element
					.implement(
						EasyBlog.Controller.Media.Exporter,
						self.options.exporter
					);

				module.resolve();
			},

			// This will be replaced with a debounced function later on.
			setLayout: function() {

				self._setLayout();
			},

			// We are retaining direct access to non-debounced setLayout()
			// because we might need it sometimes.
			_setLayout: function() {

				self.layout = (self.element.hasClass("active")) ? $.uid() :
null;

				if (self.layout) {
					self.setModalLayout();
				}

				return self.layout;
			},

			modals: {},

			createModal: function(name) {

				var element = self.modal("."+name+"Modal");

				if (element.length < 1) {
					element = $('<div
class="mediaModal"></div>').addClass(name+"Modal").appendTo(self.modalGroup());
				}

				return self.modals[name] = {
					name: name,
					element: element
				}
			},

			activateModal: function(name, args) {

				if (self.modals[name]===undefined) {

					self.loader
						.when(self.assets[name])
						.done(function(){
							setTimeout(function(){
								self.activateModal(name, args);
							}, 1000);
						});

					return;
				}

				// If modal to activate is current modal, skip.
				if (self.currentModal===name) return true;

				var modal = self.modals[name];

				if (!modal) return false;

				self.deactivateModal(self.currentModal);

				self.currentModal = name;

				// This will also set modal layout
				self.show();

				// Trigger "modalActivate event"
				var controller = modal.controller;

				if (controller) {
					controller.trigger("modalActivate", args);
				}

				return true;
			},

			deactivateModal: function(name, args) {

				var modal = self.modals[name];

				if (!modal) return false;

				// Trigger "modalActivate event"
				var controller = modal.controller;

				if (controller) {

					try {
						controller.trigger("modalDeactivate", args);
					} catch (e) {
						console.error(e);
					}
				}

				modal.element.removeClass("active");

				self.currentModal = undefined;

				return true;
			},

			setModalLayout: function() {

				clearTimeout(self.setModalLayout.task);

				var modal = self.modals[self.currentModal];

				// Skip if modal does not exist, or no visible modal.
				if (!modal) return;

				// If no layout has been set, set it first.
				// setModalLayout will eventually be called again.
				if (!self.layout) return self._setLayout();

				// Show the modal
				modal.element.addClass("active");

				// Set the layout modal
				var controller = modal.controller;

				if (controller && $.isFunction(controller.setLayout)) {

					// This fixes an issue where the modal requires
					// more time than expected to paint on the screen.
					// Whenever the modal is painted on the screen,
					// its top/left is never 0.

					var task = function() {

						var offset = controller.element.offset();

						if (offset.top===0 || offset.left===0) {
							self.setModalLayout.task = setTimeout(task, 50);
						} else {
							controller.setLayout();
						}
					};

					task();
				}
			},

			show: function() {

				// This prevents scrolling of page body
				// $("body").css("overflow", "hidden");

				self.element
					.addClass("active");

				self._setLayout();

				// Conflict with certain mootools version
				// self.trigger("show");

				self.trigger("showModal");
			},

			hide: function() {

				self.element
					.removeClass("active");

				self.deactivateModal(self.currentModal);

				// $("body").css("overflow",
self.originalBodyOverflow);

				// Conflict with certain mootools version
				// self.trigger("hide");

				self.trigger("hideModal");
			},

			"{overlay} click": function() {
				self.hide();
			},

			"{window} resize": function() {
				self.setLayout();
			},

			"{modalDashboardButton} click": function(el, event) {

				// #debug:start
				if (event.shiftKey) return self.console("dir", [self]);
				// #debug:end

				self.hide();
			},

			// Sugar methods
			upload: function() { self.activateModal("uploader",
arguments); },
			browse: function() { self.activateModal("browser", arguments);
},
			edit  : function() { self.activateModal("editor", arguments);
}
		}}
	);

	EasyBlog.Controller("Media.Loader",

		{
			defaultOptions: {

			}
		},

		function(self) { return {

			init: function() {

			},

			when: function() {

				self.media.activateModal("loader");

				var queue = $.when.apply(null, arguments),

					onQueueDone = queue.done; // Keep an original copy of done method

					queue.id = $.uid();

				queue.done = function(callback) {

					onQueueDone(function(){

						// If we are still waiting for it
						if (self.currentQueueId==queue.id) {

							// then execute the callback
							callback && callback();
						}
					});
				}

				self.currentQueueId = queue.id;

				return queue;
			},

			"{self} hide": function() {

				self.currentQueueId = null;
			}
		}}
	);

	EasyBlog.Controller("Media.Prompt",

		{
			defaultOptions: {

				"{dialog}": ".modalPromptDialog",
				"{cancelButton}": ".promptCancelButton"
			}
		},

		function(self){ return {

			init: function() {

			},

			get: function(name) {

				var dialog = self.dialog("." + name);

				return self.instantiate(dialog);
			},

			instantiate: function(dialog) {

				var methods = {

					element: dialog,

					show: function() {

						dialog.addClass("active");

						self.element.addClass("active");

						return methods;
					},

					hide: function() {

						dialog.removeClass("active");

						self.element.removeClass("active");

						return methods;
					},

					state: function(state) {

						var lastState = dialog.data("lastPromptState");

						if (state===undefined) {

							return lastState;
						}

						var getStateElement = function(state) {
								return dialog.find(".promptState" + ".state-" +
state);
							},
							currentState = getStateElement(state),
							lastState = getStateElement(lastState);

						if (currentState.length < 1) {
							return;
						}

						lastState.removeClass("active");

						currentState.addClass("active");

						dialog.data("lastPromptState", state);

						return methods;
					}
				}

				return methods;
			},

			hideAll: function() {

				self.dialog().removeClass("active");

				self.element.removeClass("active");
			},

			"{cancelButton} click": function() {

				self.hideAll();
			}

		}}
	);

	EasyBlog.Controller("Media.Library",

		{
			defaultOptions: {
				// options for managing indexing of metas here

				places: [],

				place: {
					files: {},
					acl: {
						canCreateFolder: false,
						canUploadItem: false,
						canRenameItem: false,
						canRemoveItem: false,
						canCreateVariation: false,
						canDeleteVariation: false
					},
					populateImmediately: false
				}
			}
		},

		function(self) { return {

			init: function() {

				// Register itself to media
				self.media.library = self;

				$.each(self.options.places, function(i, place) {
					self.addPlace(place);
				});
			},

			places: {},

			getPlace: function(place) {

				// Skip going through all the tests below.
				if (!place) return;

				// Place (test using acl property)
				if (place.acl) {
					return place;
				}

				// Place ID or Key
				if (typeof place==="string") {
					return self.places[place.split("|")[0]];
				}
			},

			addPlace: function(place) {

				var place = self.places[place.id] = $.extend(
						{
							tasks: $.Threads({threadLimit: 1}),

							ready: $.Deferred(),

							baseFolder: function() {
								return self.getMeta(place.id + "|" +
self.media.options.directorySeparator);
							}
						},
						self.options.place,
						place
					);

					place.done = place.ready.done;

					place.fail = place.ready.fail;

					place.always = place.ready.always;


				var importJSON = function(data) {

					// When tree is not populated, it is an empty object.
					if ($.isEmptyObject(data)) return;

					// When tree is a string, it might be json string.
					if (typeof data === "string") {

						// Try to eval it.
						try { data = $.evalJSON(data); } catch(e) {}
					}

					return (typeof data === "object") ? data : undefined;
				}

				// Import initial file tree
				place.files = importJSON(place.files);

				if (place.files) {

					place.tasks.add(function(){
						self.importMeta(place.files);
						place.ready.resolve(place);
					});
				};

				place.populate = function() {

					if (place.populate.task!==undefined) return place.populate.task;

					place.populate.task = $.Deferred();

					// JomSocial & Flickr goes directly to getFileTree,
					// User & Shared folder getFolderTree first.
					place.populate[
						(/jomsocial|flickr/.test(place.id) || place.files) ?
"getFileTree" : "getFolderTree"
					]();

					return place.populate.task;
				};

				place.populate.getFolderTree = function() {

					// Get final folder tree
					return self.getRemoteMeta({place: place.id, foldersOnly: 1})
								.done(function(meta){

									// Import the folder tree
									place.tasks.add(function(){

										// #debug:start
										// var profiler = "Importing final folder tree for " +
place.id;
										// self.media.console("time", [profiler]);
										// #debug:end

										self.importMeta(meta);
										place.ready.resolve(place);

										// #debug:start
										// self.media.console("timeEnd", [profiler]);
										// #debug:end
									});

									place.populate.getFileTree();
								})
								.fail(function(){

									place.populate.task.reject(place);
									delete place.populate.task;

									place.ready.reject(place);
								});
				};

				place.populate.getFileTree = function() {

					// Get final file tree
					return self.getRemoteMeta({place: place.id})
								.done(function(meta){

									// Import the folder tree
									place.tasks.add(function(){

										// #debug:start
										// var profiler = "Importing final file tree for " +
place.id;
										// self.media.console("time", [profiler]);
										// #debug:end

										self.importMeta(meta);
										place.ready.resolve(place);
										place.populate.task.resolve(place);

										// #debug:start
										// self.media.console("timeEnd", [profiler]);
										// #debug:end
									});
								})
								.fail(function(){

									place.populate.task.reject(place);
									delete place.populate.task;
								});
				};

				if (place.populateImmediately) {
					place.populate();
				}

				return place;
			},

			meta: {},

			metadata: {}, // Extended data attribute for meta

			isMeta: function(meta) {

				return !(meta===undefined || !$.isPlainObject(meta) ||
$.isEmptyObject(meta));
			},

			get: function(key) {

				if (!self.meta.hasOwnProperty(key)) return;

				// Create a clone of the meta, keeping the original intact
				var meta = $.extend({}, self.meta[key]);

					// Extend meta with additional data attributes
					meta.data = self.metadata[key];

				return meta;
			},

			getKey: function(meta) {
				return (meta) ? meta.place + "|" + meta.path : null;
			},

			getParentKey: function(meta) {

				if (!meta) return;

				var key   = (typeof meta==="string") ? meta : (meta.key ||
self.getKey(meta)),
					start = key.indexOf(DS),
					end   = key.lastIndexOf(DS);

				return (end===key.length-1) ? undefined : key.substring(0, end +
((start===end) ? 1 : 0));
			},

			getMeta: function(meta) {

				// Skip going through all the tests below.
				if (!meta) return;

				// Meta
				if (self.isMeta(meta)) {

					// Try to get the updated meta,
					// if it doesn't work, just return the existing meta.
					return self.get(self.getKey(meta)) || meta;
				}

				// Key
				if (typeof meta==="string") {
					return self.get(meta); // meta == key
				}
			},

			getRemoteMeta: function(options) {

				var task = $.Deferred();
					task.retry = 0;

				var defaultOptions = {
						path: self.media.options.directorySeparator,
						retry: 3,
						retryAfter: 1000,
						variation: 0,
						foldersOnly: 0
					},
					options = $.extend(defaultOptions, options);

				// Don't do anything if place is not given
				if (options.place===undefined) {
					return task.rejectWith(task, "Error: Place not given!");
				}

				var loadRemoteMeta = (function() {

					task.loader =
						EasyBlog.ajax(
							"site.views.media.getMeta",
							options,
							{
								success: function(data) {
									task.resolveWith(task, arguments);
								},

								// Server-side error
								fail: function() {
									task.rejectWith(task, arguments);
								},

								// Network error
								error: function() {
									task.retry++;
									if (task.retry < options.retry) {
										loadRemoteMeta();
									} else {
										task.rejectWith(task, arguments);
									}
								}
							}
						);

					return arguments.callee;
				})();

				return task;
			},

			getMetaVariations: function(meta) {

				var meta = self.getMeta(meta);

				if (meta===undefined) return;

				return self.getRemoteMeta({place: meta.place, path: meta.path,
variation: 1})
						   .done(function(meta){
						   		self.addMeta(meta);
						    });
			},

			removeMetaVariation: function(meta, variationName) {

				var meta = self.getMeta(meta);

				if (meta===undefined) return;

				if (meta.variations===undefined) return;

				var variation;

				for (var i=0; i<meta.variations.length; i++) {

					if (meta.variations[i].name===variationName) {

						variation = meta.variations[i];

						meta.variations.splice(i, 1);

						break;
					}
				};

				return variation;
			},

			addMeta: function(meta) {

				var key = self.getKey(meta),
					existingMeta = self.getMeta(key);

				// If the meta passed in is the meta that we already have,
				// just return the existing meta.
				if (existingMeta && meta.hash===existingMeta.hash) return
existingMeta;

				// Create meta
				meta.key   = key;
				meta.hash  = $.uid();
				meta.group = (meta.type=="folder") ? "folders" :
"files";

				// Store parent key if this is not the top level folder
				meta.parentKey = self.getParentKey(meta);

				// Add friendly path
				var place = self.getPlace(meta.place);

				meta.friendlyPath =
					(meta.path===DS) ?
						place.title :
						place.title + meta.path.substring(meta.path.indexOf(DS),
meta.path.length);

				// Store it to our meta library
				self.meta[key] = meta;

				// Create metadata
				var data = meta.data = (self.metadata[key] || (self.metadata[key] =
$.eventable({})));

				// Additional metadata for folder type
				if (meta.type=="folder") {

					data.files   = data.files   || {};
					data.folders = data.folders || {};
					data.views   = data.views   || self.createMetaView(meta);
				}

				// For new meta, add to parent meta's view.
				if (!existingMeta) {

					var parentMeta = self.getMeta(meta.parentKey);

					if (parentMeta) {
						parentMeta.data.views.addMeta(meta);
					}

				// For existing meta, fire update event.
				} else {

					// Ensure events don't slow down adding of large list of metas
					setTimeout(function(){ meta.data.fire("updated", meta); },
0);
				}

				return meta;
			},

			removeMeta: function(meta) {

				var meta = self.getMeta(meta);

				if (meta===undefined) return;

				if (meta.type==="folder") {

					var folders = meta.data.folders,
						files = meta.data.files;

					for (key in folders) {
						self.removeMeta(key);
					}

					for (key in files) {
						self.removeMeta(key);
					}
				}

				// If this is not base folder
				if (meta.parentKey) {

					// Remove meta from parent
					var parentMeta = self.getMeta(meta.parentKey);

					if (parentMeta) {
						parentMeta.data.views.removeMeta(meta);
					}

					delete self.meta[meta.key];

					setTimeout(function(){ meta.data.fire("removed", meta); },
0);
				}

				return meta;
			},

			removeRemoteMeta: function(meta) {

				var task = $.Deferred();

				var meta = self.getMeta(meta);

				if (meta===undefined) {
					return task.rejectWith(task, "The file does not exist in the
media library.");
				}

				task.loader =
					EasyBlog.ajax(
						"site.views.media.delete",
						{
							place: meta.place,
							path: meta.path
						},
						{
							success: function() {

								self.removeMeta(meta);

								// Return the meta which is no longer in the library
								task.resolveWith(task, [meta]);
							},

							// Server-side error
							fail: function() {

								task.rejectWith(task, arguments);
							},

							// Network error
							error: function(xhr, errorStatus) {

								task.rejectWith(task, [errorStatus])
							}
						});

				return task;
			},

			createFolder: function(meta, name) {

				var task = $.Deferred();

				// Don't do anything if parent meta not found.
				var meta = self.getMeta(meta),
					place = meta.place;

				if (meta===undefined || meta.type!=="folder") {
					return task.rejectWith(task, "Parent folder was not
found.");
				}

				task.loader =
					EasyBlog.ajax(
						"site.views.media.createFolder",
						{
							place: place,
							path : meta.path + DS + name
						},
						{
							success: function(meta) {

								// #hack: Restore place property
								meta.place = place;
								var meta = self.addMeta(meta);

								task.resolveWith(task, [meta]);
							},

							// Server-side error
							fail: function() {

								task.rejectWith(task, arguments);
							},

							// Network error
							error: function(xhr, errorStatus) {

								task.rejectWith(task, [errorStatus])
							}
						}
					);

				return task;
			},

			importMeta: function(meta, recursive) {

				if (meta===undefined) return;

				if (meta.type!=="folder") return;

				if (recursive===undefined) recursive = true;

				// Remove the contents property
				// before adding into our meta library.
				var contents = meta.contents,
					length = contents.length;
					delete meta.contents;

					// Temporary hack
					contents.reverse();

				// If the folder meta was created before,
				// the update event is triggered by the parent.
				var folder = self.addMeta(meta),
					 data  = folder.data,
					_data  = {files: {}, folders: {}};

				var i = 0;

				while (i < length) {

					var meta  = self.addMeta(contents[i]),
						key   = meta.key,
						group = meta.group;

					_data[group][key] = delete data[group][key];

					i++;
				}

				for (key in data.files) {
					self.removeMeta(key);
				}

				for (key in data.folders) {
					self.removeMeta(key);
				}

				// Update to the new set of data
				data.folders = _data.folders;
				data.files   = _data.files;

				if (recursive) {
					for (key in data.folders) {
						self.importMeta(self.getMeta(key), recursive);
					}
				}

				return folder;
			},

			createMetaView: function(meta) {

				var view = {

					meta: meta,

					addMeta: function(meta) {

						for (mode in view.modes) {
							var viewMap = view.modes[mode][meta.group];
							viewMap && viewMap.add(meta);
						}
					},

					removeMeta: function(meta) {

						for (mode in view.modes) {
							var viewMap = view.modes[mode][meta.group];

							viewMap && viewMap.remove(meta);
						}
					},

					create: function(options) {

						var defaultOptions = {
							from: 0,
							to: 1024,
							mode: "dateModified",
							group: "files"
						};

						// Create monitor
						var monitor = $.Callbacks("unique memory");

						$.extend(

							monitor,

							defaultOptions,

							options,

							{
								uid: $.uid(),

								select: function(options) {

									// Update options
									$.extend(monitor, options);

									// Deregister from the previous map
									if (monitor.map) {
										delete monitor.map.monitors[monitor.uid];
									}

									monitor.map = view.modes[monitor.mode][monitor.group];

									// Register to the new map
									monitor.map.monitors[monitor.uid] = monitor;

									// #debug:start
									// self.media.console("log", ["Monitoring " +
monitor.group + " in " + meta.key, monitor]);
									// #debug:end

									return monitor.refresh();
								},

								updated: monitor.add,

								refresh: function() {

									return monitor.fire(monitor.map.slice(monitor.from, monitor.to));
								},

								destroy: function() {

									monitor.disable();

									if (monitor.map) {

										delete monitor.map.monitors[monitor.uid];
									}

									return monitor;
								}
							}
						);

						return monitor.select();
					}
				};

				// Extend view with view modes
				self.createViewModes(view);

				return view;
			},

			createViewModes: function(view) {

				// TODO: Make this extensible for other types of sort maps.
				view.modes = {
					dateModified: {
						folders: self.createViewMap(view, true), // Monkey patch
						files: self.createViewMap(view)
					}
				};

				return view;
			},

			// TODO: When createViewModes is extensible,
			//       this is only part of dateModified mode.
			createViewMap: function(view, folderGroup) {

				var map = $.extend([], {

					task: $.Threads({threadLimit: 1}),

					affectedIndex: [],

					add: function(meta) {

						map.task.add(function() {
							// TODO: Proper date modified insertion
							map.unshift(meta.key);
							map.affectedIndex.push(0);

							// Monkey patch to show folder tree in alphabetical order
							if (folderGroup) {
								map.sort().reverse();
							}

							map.refreshMonitor();
						});
					},

					remove: function(meta) {

						map.task.add(function() {

							var key = meta.key,
								i = map.length,
								position;

							while (i--) {
								if (map[i]===key) {
									position = i;
									break;
								}
							}

							if (position===undefined) return;

							map.splice(i, 1);
							map.affectedIndex.push(i);

							map.refreshMonitor();
						});
					},

					monitors: {},

					refreshMonitor: function() {

						clearTimeout(map.refreshMonitor.timer);

						map.refreshMonitor.timer = setTimeout(function(){

							var affectedIndex = map.affectedIndex;
							map.affectedIndex = [];

							map.task.add(function(){

								var l = affectedIndex.length,
									i = 0;

								for (id in map.monitors) {

									var monitor = map.monitors[id],
										from = monitor.from,
										to = monitor.to,
										i;

									for (i=0; i<l; i++) {

										var a = affectedIndex[i];

										if (a >= from || a <= to) {

											monitor.refresh();
											break;
										}
									}
								}
							});

						}, 250);
					}
				});

				return map;
			},

			search: function(keyword) {

				// TODO: Also remove DS from keyword
				if ($.trim(keyword)==="") return [];

				// #debug:start
				// var profiler = "Searching library using keyword '" +
keyword + "'";
				// self.media.console("time", [profiler]);
				// #debug:end

				var keyword = keyword.toLowerCase();

				var results = self.createMetaView({type: "search"});

				for (key in self.meta) {

					var parts = key.split("|"),
						place = parts[0],
						path = parts[1],
						meta = self.meta[key];

					if (/jomsocial|flickr/.test(place)) {
						// Note: This means that album name keyword cannot be matched.
						path = meta.title || "";
					}

					if (path.toLowerCase().match(keyword)) {
						results.addMeta(meta);
					}
				}

				// #debug:start
				// self.media.console("timeEnd", [profiler]);
				// #debug:end

				return results;
			}
		}}
	);

	EasyBlog.Controller("Media.Exporter",

		{
			defaultOptions: {

				view: {
					recentItem: "media/recent.item"
				},

				// Recent inserts
				"{recentActivities}"            :
".recentActivities",
				"{recentActivitiesDialog}"      : ".recentActivities
.modalPromptDialog",
				"{hideRecentActivitiesButton}"  : ".recentActivities
.promptHideButton",
				"{dashboardButton}"             : ".recentActivities
.dashboardButton",
				"{recentItemGroup}": ".recentItemGroup",
				"{recentItem}"     : ".recentItem"
			}
		},

		function(self){ return {

			init: function() {

				$Media.exporter = self;

				$Media.insert = self.insert;
			},

			handler: {},

			showDialog: function() {

				self.recentActivitiesDialog()
					.addClass("active");

				self.recentActivities()
					.css({top: 0, opacity: 1})
					.addClass("active");
			},

			hideDialog: function() {

				self.recentActivities()
					.animate({top: "-=50px", opacity: 0}, {duration: 250,
complete: function() {

							self.recentActivities()
								.removeClass("active");

							self.recentActivitiesDialog()
								.removeClass("active");
						}
					});
			},

			"{dashboardButton} click": function() {
				self.hideDialog();
			},

			"{hideRecentActivitiesButton} click": function() {

				self.hideDialog();
			},

			// Recent inserts
			insert: function(item, settings) {

				var meta = $Media.library.getMeta(item);

				if (meta===undefined) return;

				var task = self.create(meta.type, meta.key, settings);

				// Show dialog
				self.showDialog();

				// Create recent item
				task.recentItem =
					self.view.recentItem({meta: meta})
						.addClass("loading")
						.css({opacity: 0})
						.prependTo(self.recentItemGroup())
						.animate({opacity: 1}, {duration: 500, complete: function() {

							task
								.done(function(html) {

									if (html==="") {
										task.recentItem
											.removeClass("loading done")
											.addClass("error")
											.find(".itemProgress")
											.html($.language("COM_EASYBLOG_MM_UNABLE_TO_EXPORT_ITEM"));
									}

									if( typeof( tinyMCE ) != 'undefined' )
									{

										// If you are TinyMCE/JCE on IE
										if (tinyMCE && tinyMCE.isIE && $Media.IE==9) {

											// Get back the bookmark we stored just now
											var bookmark = $Media.bookmark;

											if (bookmark) {

												var editor = tinyMCE.editors.write_content;

												editor.selection.moveToBookmark({rng: bookmark.range});

												editor.execCommand('mceInsertContent', false, html);

											// Just in case we did not get the bookmark
											} else {

												EasyBlog.dashboard.editor.insert(html);
											}

										} else {

											EasyBlog.dashboard.editor.insert(html);
										}
									}
									else
									{
										EasyBlog.dashboard.editor.insert(html);
									}

									task.recentItem
										.removeClass("loading failed")
										.addClass("done")
										.find(".itemProgress")
										.html($.language("COM_EASYBLOG_MM_ITEM_INSERTED"));

									if ($Media.options.recentActivities.hideAfter > 0) {

										setTimeout(function(){ self.hideDialog(); },
$Media.options.recentActivities.hideAfter);
									}
								})
								.progress(function(message){

									if (task.recentItem.hasClass("done")) return;

									task.recentItem
										.find(".itemProgress")
										.html(message);
								})
								.fail(function(message){

									task.recentItem
										.removeClass("loading done")
										.addClass("error")
										.find(".itemProgress")
										.html(message);
								});
						}
					});

				return task;
			},

			create: function(type, key, settings) {

				var handler = self.handler[type],

					task = $.Deferred();

				if (handler===undefined) {

					var Exporter =
EasyBlog.Controller.Media.Exporter[$.String.capitalize(type)];

					if (Exporter===undefined) {

						task.reject($.language("COM_EASYBLOG_MM_UNABLE_TO_FIND_EXPORTER"));

						return task;
					}

					handler = self.handler[type] = new Exporter(self.element, $.extend({},
{settings: self.options[type], controller: { media: self.media }}));
				}

				handler.create(task, key, settings);

				return task;
			}

		}}
	);

	EasyBlog.Controller("Media.Exporter.File",

		{
			defaultOptions: {

				settings: {
					title: "",
					target: "_self",
					content: ""
				}
			}
		},

		function(self){ return {

			init: function() {

			},

			create: function(task, key, customSettings) {

				var settings = $.extend({}, self.options.settings, customSettings),

					meta = self.media.library.getMeta(key),

					link =
						$(document.createElement("A"))
							.attr({
								title: settings.title,
								target: settings.target,
								href: meta.url
							})
							.html((settings.content) ? settings.content : meta.title);

				task.resolve(link.toHTML());

				return task;
			}

		}}
	);

	EasyBlog.Controller("Media.Exporter.Folder",

		{
			defaultOptions: {

				settings: {

				}
			}
		},

		function(self){ return {

			init: function() {

			},

			create: function(task, key, customSettings) {

				var settings = $.extend({}, self.options.settings, customSettings),

					meta = self.media.library.getMeta(key),

					embedType = (meta.place=="jomsocial") ? "album" :
"gallery";

					settings.file = meta.path;

					settings.place = meta.place;

				var snippet = "[embed=" + embedType + "]" +
$.toJSON(settings) + "[/embed]";

				task.resolve(snippet);

				return task;
			}

		}}
	);

	EasyBlog.Controller("Media.Exporter.Image",

		{
			defaultOptions: {

				settings: {
					zoom: null, // variationName
					caption: null,
					enforceDimension: false,
					enforceWidth: null,
					enforceHeight: null,
					variation: null, // variationName
					defaultVariation: "thumbnail",
					defaultZoom: "original"
				}
			}
		},

		function(self){ return {

			init: function() {

			},

			create: function(task, key, customSettings) {

				var settings = $.extend({}, self.options.settings, customSettings),

					meta = self.media.library.getMeta(key),

					image = $(new Image());

					// Convert caption into html entities,
					// escape quotes and other special characters.
					var title = htmlentity(meta.title);

					image.attr({
						src: meta.thumbnail.url,
						alt: title,
						title: title
					});

				var resolve = function() {

						task.resolve(image.toHTML());
					},

					process = function() {

						var variations = {};

						$.each(meta.variations, function(i, variation) {
							variations[variation.name] = variation;
						});


						// Use provided variation, else use default variation, or the first
variation on the list.
						var variation = variations[settings.variation] ||
										variations[settings.defaultVariation] ||
										meta.variations[0];


						// Convert caption into html entities,
						// escape quotes and other special characters.
						var title = htmlentity(variation.title);

						// Use setting from selected variation
						image.attr({
							src: variation.url,
							alt: title,
							title: title
						});

						// Enforce dimension
						if (settings.enforceDimension) {

							if (settings.enforceWidth!==null &&
settings.enforceHeight!==null) {

								var sizes = $.Image.resizeWithin(
									variation.width, variation.height,
									settings.enforceWidth, settings.enforceHeight
								);

								// Turn it into whole number
								sizes.width = Math.floor(sizes.width);
								sizes.height = Math.floor(sizes.height);

								image.attr(sizes);
							}
						}

						// Image caption
						if (settings.caption!==null) {

							// Convert caption into html entities,
							// escape quotes and other special characters.
							var caption = htmlentity(settings.caption);

							image
								.addClass("easyblog-image-caption")
								.attr("title", caption);
						}

						// Image zooming capabilities
						if (settings.zoom!==null) {

							var zoomWith = variations[settings.zoom] ||
										   variations[settings.defaultZoom] ||
										   {url: meta.thumbnail.url, title: meta.title};

							var title = htmlentity(settings.caption || zoomWith.title ||
"");

							image =
								$("<a>")
									.addClass("easyblog-thumb-preview")
									.attr({
										href: zoomWith.url,
										title: title
									})
									.html(image);
						};

						resolve();
					}

				// If any of these criterias were true,
				// we need to retrieve the variations.
				if (settings.variation || settings.zoom || settings.enforceWidth ||
settings.enforceHeight) {

					// If the variations hasn't been loaded
					if (meta.variations===undefined) {

						task.notify($.language("COM_EASYBLOG_MM_GETTING_IMAGE_SIZES"));

						// Then get it first
						self.media.library.getMetaVariations(key)
							.done(function(metaWithVariations) {

								// Add variations to our meta
								meta = metaWithVariations;

								// Process the rest of the image settings
								process();
							})
							.fail(function() {

								// If the ajax call failed, reject task.
								task.reject($.language("COM_EASYBLOG_MM_UNABLE_TO_RETRIEVE_VARIATIONS"));
							});

					// If variations has been loaded,
					// process the rest of the image settings now.
					} else {

						process();
					}

				// If there are no fancy image settings,
				// the default one will work just fine.
				} else {

					resolve();
				}

				return task;
			}

		}}
	);

	EasyBlog.Controller("Media.Exporter.Audio",

		{
			defaultOptions: {
				width: 400,
				height: 24,
				autostart: false,
				controlbar: "bottom",
				backcolor: "#333333",
				frontcolor: "#ffffff"
			}
		},

		function(self){ return {

			init: function() {

			},

			create: function(task, key, customSettings) {

				var settings = $.extend({}, self.options.settings, customSettings),

					meta = self.media.library.getMeta(key);

					settings.file = meta.path;

					settings.place = meta.place;

				var snippet = "[embed=audio]" + $.toJSON(settings) +
"[/embed]";

				task.resolve(snippet);

				return task;
			}

		}}
	);

	EasyBlog.Controller("Media.Exporter.Video",

		{
			defaultOptions: {

				settings: {
					width: 400,
					height: 225,
					autostart: false,
					controlbar: "bottom",
					backcolor: "#333333",
					frontcolor: "#ffffff"
				}
			}
		},

		function(self){ return {

			init: function() {

			},

			create: function(task, key, customSettings) {

				var settings = $.extend({}, self.options.settings, customSettings),

					meta = self.media.library.getMeta(key);

					settings.file = meta.path;

					settings.place = meta.place;

				var snippet = "[embed=video]" + $.toJSON(settings) +
"[/embed]";

				task.resolve(snippet);

				return task;
			}

		}}
	);

	EasyBlog.Controller("MediaLauncher",

		{
			defaultOptions: {
				"{uploadImageButton}": ".uploadImageButton",
				"{chooseImageButton}": ".chooseImageButton"
			}
		},

		function(self) { return {

			init: function() {

				$("#media_manager_button").click(function(){
					EasyBlog.mediaManager.browse();
				});
			},

			"{uploadImageButton} click": function() {

				EasyBlog.mediaManager.upload();
			},

			"{chooseImageButton} click": function() {


				EasyBlog.mediaManager.browse();
			}
		}}
	);

	//
	// 2. Initialize media manager.
	//
	var container =
$(document.createElement("div")).attr("id",
"EasyBlogMediaManager").appendTo("body");

	EasyBlog.mediaManager = new EasyBlog.Controller.Media(container);
});

responsive.js000064400000012451151167475140007315
0ustar00EasyBlog.module('responsive', function($) {
	var module = this;

	// $(selector).responsive({condition});
	// $(selector).responsive([{condition1}, {condition2}]);
	$.fn.responsive = function() {
		var node = this;

		/* conditions = {
			at: 0, // threshold value
			switchTo: '', // classname to apply to the node
			alsoSwitch: {
				'selector': 'class'
			}
			switchStylesheet: '',
			targetFunction: '',
			reverseFunction: ''
		} */

		var options = {
			elementWidth: function() {
				return $(node).outerWidth(true);
			},
			conditions: $.makeArray(arguments)
		};

		$.responsive.process.call(node, options);
	};

	/*
	$.responsive({
		elementWidth: function() {} // width calculation of the target element
	}, {
		condition1
	});

	$.responsive({
		elementWidth: function() {} // width calculation of the target element
	}, [{
		condition1
	}, {
		condition2
	}]);
	*/
	$.responsive = function(elem, options) {
		// make sure that single condition object gets convert into array any how
		options.conditions = $.makeArray(options.conditions);

		/*var defaultOptions = {
			// main element width to calculate
			elementWidth: function() {}, // a function that returns pixel value

			// array of conditions of ascending thresholdWidth
			conditions: [{

				// threshold for this condition
				at: 0,

				// condition specific options
				switchTo: '',
				alsoSwitch: {}, //  objects with element and class
				switchStylesheet: '',
				targetFunction: '', // function to run
				reverseFunction: '' // reverse function that reverses any
action in target function
			}]
		}*/

		$.responsive.process.call($(elem), options);
	};

	$.responsive.process = function(options) {
		var node = this;
		var totalConditions = options.conditions.length;

		$(window).resize(function() {
			$.responsive.sortConditions(options);

			var elementWidth;

			// calculate element width
			if ($.isFunction(options.elementWidth)) {
				elementWidth = options.elementWidth();
			} else {
				elementWidth = options.elementWidth;
			}

			// loop through each condition
			$.each(options.conditions, function(i, condition) {
				var conditionOptions = $.responsive.properConditions(condition);

				var thresholdWidth = condition.at;

				// calculate threshold width
				if ($.isFunction(condition.at)) {
					thresholdWidth = condition.at();
				} else {
					thresholdWidth = condition.at;
				}

				// perform resize if element <= threshold
				if (elementWidth <= thresholdWidth) {

					// remove all other condition first
					$.responsive.resetToDefault.call(node, options.conditions, i);

					// apply current condition
					$.responsive.resize.call(node, conditionOptions);
					return false;
				} else {
					$.responsive.deresize.call(node, conditionOptions);
				}
			});

		}).resize();
	};

	$.responsive.resize = function(condition) {
		var node = this;

		if (condition.switchTo) {
			$.each(condition.switchTo, function(i, classname) {
				node.addClass(classname);
			});
		}

		if (condition.alsoSwitch) {
			$.each(condition.alsoSwitch, function(selector, classname) {
				$(selector).addClass(classname);
			});
		}

		if (condition.targetFunction) {
			condition.targetFunction();
		}

		if (condition.switchStylesheet) {
			$.each(condition.switchStylesheet, function(i, stylesheet) {
				var tmp = $('link[href$="' + stylesheet +
'"]');
				if (tmp.length < 1) {
					$('<link/>', {
						rel: 'stylesheet',
						type: 'text/css',
						href: stylesheet
					}).appendTo('head');
				}
			});
		}
	};

	$.responsive.deresize = function(condition) {
		var node = this;

		if (condition.switchTo) {
			$.each(condition.switchTo, function(i, classname) {
				node.removeClass(classname);
			});
		}

		if (condition.alsoSwitch) {
			$.each(condition.alsoSwitch, function(selector, classname) {
				$(selector).removeClass(classname);
			});
		}

		if (condition.reverseFunction) {
			condition.reverseFunction();
		}

		if (condition.switchStylesheet) {
			$.each(condition.switchStylesheet, function(i, stylesheet) {
				$('link[href$="' + stylesheet +
'"]').remove();
			});
		}
	};

	$.responsive.resetToDefault = function(options, current) {
		var node = this;
		$.each(options, function(i, condition) {
			if (current && i == current) {
				return true;
			} else {
				$.responsive.deresize.call(node, condition);
			}
		});
	};

	$.responsive.properConditions = function(condition) {
		var conditionOptions = {
			at: condition.at,
			alsoSwitch: condition.alsoSwitch,
			switchTo: $.makeArray(condition.switchTo),
			switchStylesheet: $.makeArray(condition.switchStylesheet),
			targetFunction: condition.targetFunction,
			reverseFunction: condition.reverseFunction
		};

		return conditionOptions;
	};

	$.responsive.sortConditions = function(options) {
		var totalConditions = options.conditions.length;

		for (var i = 0; i < totalConditions; i++) {
			for (var j = i + 1; j < totalConditions; j++) {
				var a, b;

				if ($.isFunction(options.conditions[i].at)) {
					a = options.conditions[i].at();
				} else {
					a = options.conditions[i].at;
				}

				if ($.isFunction(options.conditions[j].at)) {
					b = options.conditions[j].at();
				} else {
					b = options.conditions[j].at;
				}

				if (a > b) {
					var tmp = options.conditions[i];
					options.conditions[i] = options.conditions[j];
					options.conditions[j] = tmp;
				}
			}
		}
	};

	module.resolve();
});
tag.js000064400000017567151167475140005710
0ustar00EasyBlog.module("tag", function($){

var module = this;

EasyBlog.require()
	.view("dashboard/dashboard.tags.item")
	.done(function(){

		EasyBlog.Controller(

			"Tag.Form",
			{
				defaultOptions: {

					tags: [],
					tagLimit: 0,
					tagSelections: [],
					tagSelectionLimit: 25,

					"{tagList}"             : ".tag-list.creation",
					"{tagItems}"            : ".tag-list.creation
.tag-item",
					"{tagItemRemoveButton}" : ".remove-tag",

					"{tagCreationForm}"		: ".new-tag-item",
					"{tagInput}"            : ".tagInput",
					"{tagCreateButton}"     : ".tag-create",
					"{totalTags}"			: ".total-tags",

					"{tagSelectionFilter}"  : ".tag-selection-filter",
					"{tagSelectionList}"    : ".tag-list.selection",
					"{tagSelectionItems}"   : ".tag-list.selection
.tag-item",
					"{tagSelection}"        : ".tag-selection",

					"{showAllTagsButton}"   : ".show-all-tags",

					view: {
						tagItem: "dashboard/dashboard.tags.item"
					}
				}
			},

			function(self) { return {

				init: function() {

					if (EasyBlog.dashboard) {
						EasyBlog.dashboard.registerPlugin("tags", self);
					}

					// Fork this into an asynchronous process
					// in case of large dataset
					setTimeout(function(){

						// Populate tag selections
						var tags = self.options.tagSelections,
							i, l = tags.length;

						for (i=0; i<l; i++) {
							self.tags[tags[i].title.toLowerCase()] = tags[i];
						}

						// Populate selected tags if any
						var tags = self.options.tags,
							l = tags.length;

						for (i=0; i<l; i++) {

							var key = self.getKey(tags[i].title);

							self.selectTag(key);
						}

						// Generate tag selections
						self.showTagSelections("");

					}, 0);
				},

				// Tag data
				tags: {},

				// Tag elements
				items: {},

				// Selected tags
				selected: {},

				sanitizeTitle: function(title) {

					// return
$.trim(title).replace(/[,\'\"\#\<\>]/gi,"");
				},

				getKey: function(title) {

					return title.toLowerCase();
					// return self.sanitizeTitle(title).toLowerCase();
				},

				getTag: function(key) {

					// This is because of key conflicts with native object methods
					// like "watch" or "hasOwnProperty" since tags can
be anything.
					return Object.prototype.hasOwnProperty.call(self.tags, key) ?
self.tags[key] : undefined;
				},

				createTag: function(title) {

					var title = title,
					//var title = self.sanitizeTitle(title),
						key = title.toLowerCase();

					return self.getTag(key) || (self.tags[key] = {title: title});
				},

				getTagItem: function(key) {

					var tag = self.getTag(key);

					if (!tag) return;

					return tag.item || (tag.item = self.view.tagItem({title:
tag.title}).data("key", key));
				},

				getTagData: function(key) {

					var tag = self.getTag(key);

					if (!tag) return;

					return tag.data || (tag.data = $('<input
class="tagdata" type="hidden" name="tags[]"
/>').val(tag.title));
				},

				search: function(keyword) {

					var keyword = $.trim(keyword).toLowerCase(),
						results = [];

					for (key in self.tags) {

						if (key.indexOf(keyword) < 0) continue;

						results.push(key);
					}

					return results;
				},

				selectTag: function(key) {

					clearTimeout(self.selectTag.refreshTagSelection);

					var tagItem = self.getTagItem(key);

					if (!tagItem) return;

					var tagItems = self.tagItems();

					if (self.options.tagLimit > 0 && tagItems.length >=
self.options.tagLimit) return;

					tagItem.css({opacity: 0});

					// When no item is selected
					if (tagItems.length < 1) {

						self.tagList()
							.prepend(tagItem);

					// When there are selected items
					} else {

						var lastTagItem = tagItems.filter(":last");

						// Don't move tag if it's already the last one.
						if (lastTagItem[0]!=tagItem[0]) {

							tagItem.insertAfter(lastTagItem);
						}
					}

					tagItem.animate({opacity: 1});

					// Attach tag data
					var tagData = self.getTagData(key);

					tagData.appendTo(self.element);

					self.selected[key] = true;

					self.checkTagLimit();

					self.selectTag.refreshTagSelection = setTimeout(function(){

						// Refresh tag selection
						self.showTagSelections();

					}, 500);
				},

				unselectTag: function(key) {

					var tagItem = self.getTagItem(key);

					if (!tagItem) return;

					// Detach tag item
					tagItem.detach();

					// Detach tag data
					var tagData = self.getTagData(key);

					tagData.detach();

					delete self.selected[key];

					self.checkTagLimit();

					var tag = self.getTag(key);

					if (tag.alias!==undefined) {

						// Refresh tag selection
						self.showTagSelections();
					}
				},

				addToTagSelectionList: function(key) {

					var tagItem = self.getTagItem(key);

					return tagItem && tagItem.appendTo(self.tagSelectionList());
				},

				showTagSelections: function(filter) {

					// Detach everything
					self.tagSelectionItems().detach();

					filter = self.currentFilter =
						(filter===undefined) ? self.currentFilter || "" : filter;

					var c = 0,
						limit = self.options.tagSelectionLimit;

					if (filter==="") {

						for (key in self.tags) {
							if (c >= limit) break;
							if (self.selected[key] || self.getTag(key).alias===undefined)
continue;
							self.addToTagSelectionList(key);
							c++;
						}

					} else {

						var results = self.search(filter),
							i, l = results.length;

						for (i=0; i<l; i++) {
							if (c >= limit) break;
							var key = results[i];
							if (self.selected[key] || self.getTag(key).alias===undefined)
continue;
							self.addToTagSelectionList(key);
							c++;
						}
					}

					self.tagSelection().toggleClass("no-selection", c < 1);
				},

				"{tagInput} keydown": function(tagInput, event) {

					event.stopPropagation();

					self.realEnterKey = (event.keyCode==13);
				},

				"{tagInput} keypress": function(tagInput, event) {

					event.stopPropagation();

					// We need to verify whether or not the user is actually entering
					// an ENTER key or exiting from an IME context menu.
					self.realEnterKey = self.realEnterKey && (event.keyCode==13);
				},

				"{tagInput} keyup": function(tagInput, event) {

					clearTimeout(self.filterTask);

					event.stopPropagation();

					switch(event.keyCode) {

						case 27: // escape
							tagInput.val("");
							break;

						case 13: // enter
							if (self.realEnterKey &&
tagInput.hasClass("canCreate")) {
								self.createTagFromInput();
							}
							break;
					}

					self.filterTask = setTimeout(function(){

						self.showTagSelections(tagInput.val());

					}, 250);
				},

				createTagFromInput: function() {

					var title = $.trim(self.tagInput().val());

					if (title!=="") {

						var key = self.getKey(title),
							tag = self.createTag(title);

						self.selectTag(key);

						self.tagInput().val("");
					}

					// Reset show tag selections to original state
					self.showTagSelections("");
				},

				checkTagLimit: function() {

					var limit = self.options.tagLimit;

					if (limit < 1) return;

					var totalTags = self.tagItems().length;

					// Update data count
					self.totalTags().text(totalTags);

					self.tagCreationForm()[totalTags >= limit ? "hide" :
"show"]();
				},

				"{tagCreateButton} click": function() {

					self.createTagFromInput();
				},

				"{tagSelectionItems} click": function(el) {

					var key = el.data("key");
					self.selectTag(key);
				},

				"{tagItemRemoveButton} click": function(el) {

					var key = el.parents(".tag-item").data("key");

					self.unselectTag(key);
				},

				"{showAllTagsButton} click": function(el) {

					if (el.hasClass("active")) {

						el.removeClass("active");
						self.options.tagSelectionLimit = self.originalLimit;

					} else {

						el.addClass("active");
						self.originalLimit = self.options.tagSelectionLimit;
						self.options.tagSelectionLimit = 9999;
					}

					self.showTagSelections("");
				}
			}}
		);

		module.resolve();

	});
});