OC.L10N.register(
"core",
{
"No image or file provided" : "Nun s'especificó nenguna imaxe o ficheru",
"Unknown filetype" : "Triba de ficheru desconocida",
"Invalid image" : "Imaxe inválida",
"No temporary profile picture available, try again" : "Nengún perfil d'imaxe temporal disponible, intentalo de nueves",
"No crop data provided" : "Nun s'apurrió'l retayu de datos",
"Couldn't reset password because the token is invalid" : "Nun pudo reaniciase la contraseña porque'l token ye inválidu",
"Couldn't send reset email. Please make sure your username is correct." : "Nun pudo unviase'l corréu. Por favor, asegurate que'l to nome d'usuariu seya correutu",
"%s password reset" : "%s restablecer contraseña",
"Couldn't send reset email. Please contact your administrator." : "Nun pudo unviase'l corréu de reaniciu. Por favor, contauta col alministrador.",
"Error loading tags" : "Fallu cargando les etiquetes",
"Tag already exists" : "Yá esiste la etiqueta",
"Error deleting tag(s)" : "Fallu desaniciando etiqueta(es)",
"Error tagging" : "Fallu etiquetando",
"Error untagging" : "Fallu al quitar etiquetes",
"Error favoriting" : "Fallu al marcar favoritos",
"Error unfavoriting" : "Fallu al desmarcar favoritos",
"Couldn't send mail to following users: %s " : "Nun pudo unviase'l corréu a los usuarios siguientes: %s",
"Turned on maintenance mode" : "Activáu'l mou de caltenimientu",
"Turned off maintenance mode" : "Apagáu'l mou de caltenimientu",
"Updated database" : "Base de datos anovada",
"Checked database schema update" : "Anovamientu del esquema de base de datos revisáu",
"Checked database schema update for apps" : "Anovamientu del esquema de base de datos p'aplicaciones revisáu",
"Updated \"%s\" to %s" : "Anováu \"%s\" a %s",
"Sunday" : "Domingu",
"Monday" : "Llunes",
"Tuesday" : "Martes",
"Wednesday" : "Miércoles",
"Thursday" : "Xueves",
"Friday" : "Vienres",
"Saturday" : "Sábadu",
"Sun." : "Dom.",
"Mon." : "Llu.",
"Tue." : "Mar.",
"Wed." : "Mié.",
"Thu." : "Xue.",
"Fri." : "Vie.",
"Sat." : "Sáb.",
"January" : "Xineru",
"February" : "Febreru",
"March" : "Marzu",
"April" : "Abril",
"May" : "Mayu",
"June" : "Xunu",
"July" : "Xunetu",
"August" : "Agostu",
"September" : "Setiembre",
"October" : "Ochobre",
"November" : "Payares",
"December" : "Avientu",
"Jan." : "Xin.",
"Feb." : "Feb.",
"Mar." : "Mar.",
"Apr." : "Abr.",
"May." : "May.",
"Jun." : "Xun.",
"Jul." : "Xnt.",
"Aug." : "Ago.",
"Sep." : "Set.",
"Oct." : "Och.",
"Nov." : "Pay.",
"Dec." : "Avi.",
"Settings" : "Axustes",
"Saving..." : "Guardando...",
"Dismiss" : "Encaboxar",
"seconds ago" : "hai segundos",
"The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.
If it is not there ask your local administrator." : "Unviósete al corréu l'enllaz pa reaniciar la to contraseña. Si nun lu recibes nuna cantidá razonable de tiempu, comprueba les tos carpetes de corréu puxarra.
Si nun ta ehí, entruga al to alministrador llocal",
"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset.
If you are not sure what to do, please contact your administrator before you continue.
Do you really want to continue?" : "Los tos ficheros tán crifraos. Si nun habilitesti la clave de recuperación, nun habrá forma de recuperar los tos datos dempués de que se reanicie la to contraseña.
Si nun tas seguru de qué facer, por favor contauta col to alministrador enantes que sigas.
¿De xuru quies siguir?",
"I know what I'm doing" : "Sé lo que toi faciendo",
"Password can not be changed. Please contact your administrator." : "Nun pue camudase la contraseña. Por favor, contauta col alministrador.",
"No" : "Non",
"Yes" : "Sí",
"Choose" : "Esbillar",
"Error loading file picker template: {error}" : "Fallu cargando'l ficheru de plantía d'escoyeta: {error}",
"Ok" : "Aceutar",
"Error loading message template: {error}" : "Fallu cargando'l mensaxe de la plantía: {error}",
"_{count} file conflict_::_{count} file conflicts_" : ["{count} conflictu de ficheru","{count} conflictos de ficheru "],
"One file conflict" : "Conflictu nun ficheru",
"New Files" : "Ficheros nuevos",
"Already existing files" : "Ficheros qu'esisten yá",
"Which files do you want to keep?" : "¿Qué ficheros quies caltener?",
"If you select both versions, the copied file will have a number added to its name." : "Si seleiciones dambes versiones, el ficheru copiáu va tener un númberu amestáu al so nome",
"Cancel" : "Encaboxar",
"Continue" : "Continuar",
"(all selected)" : "(esbillao too)",
"({count} selected)" : "(esbillaos {count})",
"Error loading file exists template" : "Falu cargando plantía de ficheru esistente",
"Very weak password" : "Contraseña mui feble",
"Weak password" : "Contraseña feble",
"So-so password" : "Contraseña pasable",
"Good password" : "Contraseña bona",
"Strong password" : "Contraseña mui bona",
"Shared" : "Compartíu",
"Shared with {recipients}" : "Compartío con {recipients}",
"Error" : "Fallu",
"Error while sharing" : "Fallu mientres la compartición",
"Error while unsharing" : "Fallu mientres se dexaba de compartir",
"Error setting expiration date" : "Fallu afitando la fecha de caducidá",
"The public link will expire no later than {days} days after it is created" : "L'enllaz públicu va caducar enantes de {days} díes dende la so creación",
"Set expiration date" : "Afitar la data de caducidá",
"Expiration" : "Caducidá",
"Expiration date" : "Data de caducidá",
"Choose a password for the public link" : "Escueyi una contraseña pal enllaz públicu",
"Resharing is not allowed" : "Recompartir nun ta permitíu",
"Share link" : "Compartir enllaz",
"Link" : "Enllaz",
"Password protect" : "Protexer con contraseña",
"Password" : "Contraseña",
"Allow editing" : "Permitir edición",
"Email link to person" : "Enllaz de corréu-e a la persona",
"Send" : "Unviar",
"Sending ..." : "Unviando ...",
"Email sent" : "Corréu unviáu",
"Shared with you and the group {group} by {owner}" : "Compartíu contigo y col grupu {group} por {owner}",
"Shared with you by {owner}" : "Compartíu contigo por {owner}",
"group" : "grupu",
"remote" : "remotu",
"notify by email" : "notificar per corréu",
"Unshare" : "Dexar de compartir",
"can share" : "pue compartir",
"can edit" : "pue editar",
"create" : "crear",
"change" : "camudar",
"delete" : "desaniciar",
"access control" : "control d'accesu",
"Share" : "Compartir",
"Share with people on other ownClouds using the syntax username@example.com/owncloud" : "Compartir con xente d'otros ownClouds usando la sintaxis usuariu@exemplu.com/owncloud",
"Warning" : "Avisu",
"Delete" : "Desaniciar",
"Rename" : "Renomar",
"The object type is not specified." : "El tipu d'oxetu nun ta especificáu.",
"Enter new" : "Introducir nueva",
"Add" : "Amestar",
"Edit tags" : "Editar etiquetes",
"Error loading dialog template: {error}" : "Fallu cargando plantía de diálogu: {error}",
"No tags selected for deletion." : "Nun s'esbillaron etiquetes pa desaniciar.",
"Please reload the page." : "Por favor, recarga la páxina",
"The update was unsuccessful. Please report this issue to the ownCloud community." : "L'anovamientu fízose con ésitu. Por favor, informa d'esti problema a la comuña ownCloud.",
"The update was successful. Redirecting you to ownCloud now." : "L'anovamientu fízose con ésitu. Redirixiendo agora al to ownCloud.",
"Personal" : "Personal",
"Users" : "Usuarios",
"Apps" : "Aplicaciones",
"Admin" : "Alministrador",
"Help" : "Ayuda",
"Access forbidden" : "Accesu denegáu",
"Hey there,\n\njust letting you know that %s shared %s with you.\nView it: %s\n\n" : "Hola, ¿qué hai?\n\nnamái déxanos dicite que %s compartió %s contigo.\nVelu: %s\n\n",
"The share will expire on %s." : "La compartición va caducar el %s.",
"Cheers!" : "¡Salú!",
"Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "El to direutoriu de datos y ficheros seique ye accesible dende internet por mor qu'el ficheru .htaccess nun furrula.",
"Create an admin account" : "Crea una cuenta d'alministrador",
"Username" : "Nome d'usuariu",
"Storage & database" : "Almacenamientu y Base de datos",
"Data folder" : "Carpeta de datos",
"Configure the database" : "Configura la base de datos",
"Only %s is available." : "Namái ta disponible %s",
"Database user" : "Usuariu de la base de datos",
"Database password" : "Contraseña de la base de datos",
"Database name" : "Nome de la base de datos",
"Database tablespace" : "Espaciu de tables de la base de datos",
"Database host" : "Agospiador de la base de datos",
"Finish setup" : "Finar la configuración ",
"Finishing …" : "Finando ...",
"Hey there,
just letting you know that %s shared %s with you.
View it!
" : "Hola, ¿qué hai?,
namái déxamos dicite que %s compartió %s contigo.\n
¡Velu!
",
"Log out" : "Zarrar sesión",
"Search" : "Guetar",
"Server side authentication failed!" : "Falló l'autenticación nel sirvidor!",
"Please contact your administrator." : "Por favor, contauta col to alministrador",
"Log in" : "Aniciar sesión",
"Alternative Logins" : "Anicios de sesión alternativos",
"Use the following link to reset your password: {link}" : "Usa'l siguiente enllaz pa restablecer la to contraseña: {link}",
"New password" : "Contraseña nueva",
"New Password" : "Contraseña nueva",
"Reset password" : "Restablecer contraseña",
"This ownCloud instance is currently in single user mode." : "Esta instalación d'ownCloud ta en mou d'usuariu únicu.",
"This means only administrators can use the instance." : "Esto quier dicir que namái pue usala un alministrador.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Contauta col alministrador si esti problema sigui apaeciendo.",
"Thank you for your patience." : "Gracies pola to paciencia.",
"You are accessing the server from an untrusted domain." : "Tas accediendo al sirvidor dende un dominiu non confiáu.",
"Add \"%s\" as trusted domain" : "Amestáu \"%s\" como dominiu de confianza",
"The theme %s has been disabled." : "Deshabilitóse'l tema %s.",
"Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "Enantes de siguir, asegúrate de que se fizo una copia de seguridá de la base de datos, la carpeta de configuración y la carpeta de datos.",
"Start update" : "Aniciar anovamientu"
},
"nplurals=2; plural=(n != 1);");
/a>
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
/*!
* jQuery UI Position @VERSION
* http://jqueryui.com
*
* Copyright OpenJS Foundation and other contributors
* Released under the MIT license.
* http://jquery.org/license
*
* http://api.jqueryui.com/position/
*/
//>>label: Position
//>>group: Core
//>>description: Positions elements relative to other elements.
//>>docs: http://api.jqueryui.com/position/
//>>demos: http://jqueryui.com/position/
( function( factory ) {
"use strict";
if ( typeof define === "function" && define.amd ) {
// AMD. Register as an anonymous module.
define( [ "jquery", "./version" ], factory );
} else {
// Browser globals
factory( jQuery );
}
} )( function( $ ) {
"use strict";
( function() {
var cachedScrollbarWidth,
max = Math.max,
abs = Math.abs,
rhorizontal = /left|center|right/,
rvertical = /top|center|bottom/,
roffset = /[\+\-]\d+(\.[\d]+)?%?/,
rposition = /^\w+/,
rpercent = /%$/,
_position = $.fn.position;
function getOffsets( offsets, width, height ) {
return [
parseFloat( offsets[ 0 ] ) * ( rpercent.test( offsets[ 0 ] ) ? width / 100 : 1 ),
parseFloat( offsets[ 1 ] ) * ( rpercent.test( offsets[ 1 ] ) ? height / 100 : 1 )
];
}
function parseCss( element, property ) {
return parseInt( $.css( element, property ), 10 ) || 0;
}
function isWindow( obj ) {
return obj != null && obj === obj.window;
}
function getDimensions( elem ) {
var raw = elem[ 0 ];
if ( raw.nodeType === 9 ) {
return {
width: elem.width(),
height: elem.height(),
offset: { top: 0, left: 0 }
};
}
if ( isWindow( raw ) ) {
return {
width: elem.width(),
height: elem.height(),
offset: { top: elem.scrollTop(), left: elem.scrollLeft() }
};
}
if ( raw.preventDefault ) {
return {
width: 0,
height: 0,
offset: { top: raw.pageY, left: raw.pageX }
};
}
return {
width: elem.outerWidth(),
height: elem.outerHeight(),
offset: elem.offset()
};
}
$.position = {
scrollbarWidth: function() {
if ( cachedScrollbarWidth !== undefined ) {
return cachedScrollbarWidth;
}
var w1, w2,
div = $( "<div style=" +
"'display:block;position:absolute;width:200px;height:200px;overflow:hidden;'>" +
"<div style='height:300px;width:auto;'></div></div>" ),
innerDiv = div.children()[ 0 ];
$( "body" ).append( div );
w1 = innerDiv.offsetWidth;
div.css( "overflow", "scroll" );
w2 = innerDiv.offsetWidth;
if ( w1 === w2 ) {
w2 = div[ 0 ].clientWidth;
}
div.remove();
return ( cachedScrollbarWidth = w1 - w2 );
},
getScrollInfo: function( within ) {
var overflowX = within.isWindow || within.isDocument ? "" :
within.element.css( "overflow-x" ),
overflowY = within.isWindow || within.isDocument ? "" :
within.element.css( "overflow-y" ),
hasOverflowX = overflowX === "scroll" ||
( overflowX === "auto" && within.width < within.element[ 0 ].scrollWidth ),
hasOverflowY = overflowY === "scroll" ||
( overflowY === "auto" && within.height < within.element[ 0 ].scrollHeight );
return {
width: hasOverflowY ? $.position.scrollbarWidth() : 0,
height: hasOverflowX ? $.position.scrollbarWidth() : 0
};
},
getWithinInfo: function( element ) {
var withinElement = $( element || window ),
isElemWindow = isWindow( withinElement[ 0 ] ),
isDocument = !!withinElement[ 0 ] && withinElement[ 0 ].nodeType === 9,
hasOffset = !isElemWindow && !isDocument;
return {
element: withinElement,
isWindow: isElemWindow,
isDocument: isDocument,
offset: hasOffset ? $( element ).offset() : { left: 0, top: 0 },
scrollLeft: withinElement.scrollLeft(),
scrollTop: withinElement.scrollTop(),
width: withinElement.outerWidth(),
height: withinElement.outerHeight()
};
}
};
$.fn.position = function( options ) {
if ( !options || !options.of ) {
return _position.apply( this, arguments );
}
// Make a copy, we don't want to modify arguments
options = $.extend( {}, options );
var atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions,
// Make sure string options are treated as CSS selectors
target = typeof options.of === "string" ?
$( document ).find( options.of ) :
$( options.of ),
within = $.position.getWithinInfo( options.within ),
scrollInfo = $.position.getScrollInfo( within ),
collision = ( options.collision || "flip" ).split( " " ),
offsets = {};
dimensions = getDimensions( target );
if ( target[ 0 ].preventDefault ) {
// Force left top to allow flipping
options.at = "left top";
}
targetWidth = dimensions.width;
targetHeight = dimensions.height;
targetOffset = dimensions.offset;
// Clone to reuse original targetOffset later
basePosition = $.extend( {}, targetOffset );
// Force my and at to have valid horizontal and vertical positions
// if a value is missing or invalid, it will be converted to center
$.each( [ "my", "at" ], function() {
var pos = ( options[ this ] || "" ).split( " " ),
horizontalOffset,
verticalOffset;
if ( pos.length === 1 ) {
pos = rhorizontal.test( pos[ 0 ] ) ?
pos.concat( [ "center" ] ) :
rvertical.test( pos[ 0 ] ) ?
[ "center" ].concat( pos ) :
[ "center", "center" ];
}
pos[ 0 ] = rhorizontal.test( pos[ 0 ] ) ? pos[ 0 ] : "center";
pos[ 1 ] = rvertical.test( pos[ 1 ] ) ? pos[ 1 ] : "center";
// Calculate offsets
horizontalOffset = roffset.exec( pos[ 0 ] );
verticalOffset = roffset.exec( pos[ 1 ] );
offsets[ this ] = [
horizontalOffset ? horizontalOffset[ 0 ] : 0,
verticalOffset ? verticalOffset[ 0 ] : 0
];
// Reduce to just the positions without the offsets
options[ this ] = [
rposition.exec( pos[ 0 ] )[ 0 ],
rposition.exec( pos[ 1 ] )[ 0 ]
];
} );
// Normalize collision option
if ( collision.length === 1 ) {
collision[ 1 ] = collision[ 0 ];
}
if ( options.at[ 0 ] === "right" ) {
basePosition.left += targetWidth;
} else if ( options.at[ 0 ] === "center" ) {
basePosition.left += targetWidth / 2;
}
if ( options.at[ 1 ] === "bottom" ) {
basePosition.top += targetHeight;
} else if ( options.at[ 1 ] === "center" ) {
basePosition.top += targetHeight / 2;
}
atOffset = getOffsets( offsets.at, targetWidth, targetHeight );
basePosition.left += atOffset[ 0 ];
basePosition.top += atOffset[ 1 ];
return this.each( function() {
var collisionPosition, using,
elem = $( this ),
elemWidth = elem.outerWidth(),
elemHeight = elem.outerHeight(),
marginLeft = parseCss( this, "marginLeft" ),
marginTop = parseCss( this, "marginTop" ),
collisionWidth = elemWidth + marginLeft + parseCss( this, "marginRight" ) +
scrollInfo.width,
collisionHeight = elemHeight + marginTop + parseCss( this, "marginBottom" ) +
scrollInfo.height,
position = $.extend( {}, basePosition ),
myOffset = getOffsets( offsets.my, elem.outerWidth(), elem.outerHeight() );
if ( options.my[ 0 ] === "right" ) {
position.left -= elemWidth;
} else if ( options.my[ 0 ] === "center" ) {
position.left -= elemWidth / 2;
}
if ( options.my[ 1 ] === "bottom" ) {
position.top -= elemHeight;
} else if ( options.my[ 1 ] === "center" ) {
position.top -= elemHeight / 2;
}
position.left += myOffset[ 0 ];
position.top += myOffset[ 1 ];
collisionPosition = {
marginLeft: marginLeft,
marginTop: marginTop
};
$.each( [ "left", "top" ], function( i, dir ) {
if ( $.ui.position[ collision[ i ] ] ) {
$.ui.position[ collision[ i ] ][ dir ]( position, {
targetWidth: targetWidth,
targetHeight: targetHeight,
elemWidth: elemWidth,
elemHeight: elemHeight,
collisionPosition: collisionPosition,
collisionWidth: collisionWidth,
collisionHeight: collisionHeight,
offset: [ atOffset[ 0 ] + myOffset[ 0 ], atOffset [ 1 ] + myOffset[ 1 ] ],
my: options.my,
at: options.at,
within: within,
elem: elem
} );
}
} );
if ( options.using ) {
// Adds feedback as second argument to using callback, if present
using = function( props ) {
var left = targetOffset.left - position.left,
right = left + targetWidth - elemWidth,
top = targetOffset.top - position.top,
bottom = top + targetHeight - elemHeight,
feedback = {
target: {
element: target,
left: targetOffset.left,
top: targetOffset.top,
width: targetWidth,
height: targetHeight
},
element: {
element: elem,
left: position.left,
top: position.top,
width: elemWidth,
height: elemHeight
},
horizontal: right < 0 ? "left" : left > 0 ? "right" : "center",
vertical: bottom < 0 ? "top" : top > 0 ? "bottom" : "middle"
};
if ( targetWidth < elemWidth && abs( left + right ) < targetWidth ) {
feedback.horizontal = "center";
}
if ( targetHeight < elemHeight && abs( top + bottom ) < targetHeight ) {
feedback.vertical = "middle";
}
if ( max( abs( left ), abs( right ) ) > max( abs( top ), abs( bottom ) ) ) {
feedback.important = "horizontal";
} else {
feedback.important = "vertical";
}
options.using.call( this, props, feedback );
};
}
elem.offset( $.extend( position, { using: using } ) );
} );
};
$.ui.position = {
fit: {
left: function( position, data ) {
var within = data.within,
withinOffset = within.isWindow ? within.scrollLeft : within.offset.left,
outerWidth = within.width,
collisionPosLeft = position.left - data.collisionPosition.marginLeft,
overLeft = withinOffset - collisionPosLeft,
overRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset,
newOverRight;
// Element is wider than within
if ( data.collisionWidth > outerWidth ) {
// Element is initially over the left side of within
if ( overLeft > 0 && overRight <= 0 ) {
newOverRight = position.left + overLeft + data.collisionWidth - outerWidth -
withinOffset;
position.left += overLeft - newOverRight;
// Element is initially over right side of within
} else if ( overRight > 0 && overLeft <= 0 ) {
position.left = withinOffset;
// Element is initially over both left and right sides of within
} else {
if ( overLeft > overRight ) {
position.left = withinOffset + outerWidth - data.collisionWidth;
} else {
position.left = withinOffset;
}
}
// Too far left -> align with left edge
} else if ( overLeft > 0 ) {
position.left += overLeft;
// Too far right -> align with right edge
} else if ( overRight > 0 ) {
position.left -= overRight;
// Adjust based on position and margin
} else {
position.left = max( position.left - collisionPosLeft, position.left );
}
},
top: function( position, data ) {
var within = data.within,
withinOffset = within.isWindow ? within.scrollTop : within.offset.top,
outerHeight = data.within.height,
collisionPosTop = position.top - data.collisionPosition.marginTop,
overTop = withinOffset - collisionPosTop,
overBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset,
newOverBottom;
// Element is taller than within
if ( data.collisionHeight > outerHeight ) {
// Element is initially over the top of within
if ( overTop > 0 && overBottom <= 0 ) {
newOverBottom = position.top + overTop + data.collisionHeight - outerHeight -
withinOffset;
position.top += overTop - newOverBottom;
// Element is initially over bottom of within
} else if ( overBottom > 0 && overTop <= 0 ) {
position.top = withinOffset;
// Element is initially over both top and bottom of within
} else {
if ( overTop > overBottom ) {
position.top = withinOffset + outerHeight - data.collisionHeight;
} else {
position.top = withinOffset;
}
}
// Too far up -> align with top
} else if ( overTop > 0 ) {
position.top += overTop;
// Too far down -> align with bottom edge
} else if ( overBottom > 0 ) {
position.top -= overBottom;
// Adjust based on position and margin
} else {
position.top = max( position.top - collisionPosTop, position.top );
}
}
},
flip: {
left: function( position, data ) {
var within = data.within,
withinOffset = within.offset.left + within.scrollLeft,
outerWidth = within.width,
offsetLeft = within.isWindow ? within.scrollLeft : within.offset.left,
collisionPosLeft = position.left - data.collisionPosition.marginLeft,
overLeft = collisionPosLeft - offsetLeft,
overRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft,
myOffset = data.my[ 0 ] === "left" ?
-data.elemWidth :
data.my[ 0 ] === "right" ?
data.elemWidth :
0,
atOffset = data.at[ 0 ] === "left" ?
data.targetWidth :
data.at[ 0 ] === "right" ?
-data.targetWidth :
0,
offset = -2 * data.offset[ 0 ],
newOverRight,
newOverLeft;
if ( overLeft < 0 ) {
newOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth -
outerWidth - withinOffset;
if ( newOverRight < 0 || newOverRight < abs( overLeft ) ) {
position.left += myOffset + atOffset + offset;
}
} else if ( overRight > 0 ) {
newOverLeft = position.left - data.collisionPosition.marginLeft + myOffset +
atOffset + offset - offsetLeft;
if ( newOverLeft > 0 || abs( newOverLeft ) < overRight ) {
position.left += myOffset + atOffset + offset;
}
}
},
top: function( position, data ) {
var within = data.within,
withinOffset = within.offset.top + within.scrollTop,
outerHeight = within.height,
offsetTop = within.isWindow ? within.scrollTop : within.offset.top,
collisionPosTop = position.top - data.collisionPosition.marginTop,
overTop = collisionPosTop - offsetTop,
overBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop,
top = data.my[ 1 ] === "top",
myOffset = top ?
-data.elemHeight :
data.my[ 1 ] === "bottom" ?
data.elemHeight :
0,
atOffset = data.at[ 1 ] === "top" ?
data.targetHeight :
data.at[ 1 ] === "bottom" ?
-data.targetHeight :
0,
offset = -2 * data.offset[ 1 ],
newOverTop,
newOverBottom;
if ( overTop < 0 ) {
newOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight -
outerHeight - withinOffset;
if ( newOverBottom < 0 || newOverBottom < abs( overTop ) ) {
position.top += myOffset + atOffset + offset;
}
} else if ( overBottom > 0 ) {
newOverTop = position.top - data.collisionPosition.marginTop + myOffset + atOffset +
offset - offsetTop;
if ( newOverTop > 0 || abs( newOverTop ) < overBottom ) {
position.top += myOffset + atOffset + offset;
}
}
}
},
flipfit: {
left: function() {
$.ui.position.flip.left.apply( this, arguments );
$.ui.position.fit.left.apply( this, arguments );
},
top: function() {
$.ui.position.flip.top.apply( this, arguments );
$.ui.position.fit.top.apply( this, arguments );
}
}
};
} )();
return $.ui.position;
} );