(function($){$.ui=$.ui||{};var horizontalPositions=/left|center|right/,horizontalDefault="center",verticalPositions=/top|center|bottom/,verticalDefault="center",_position=$.fn.position,_offset=$.fn.offset;$.fn.position=function(options){if(!options||!options.of){return _position.apply(this,arguments)}options=$.extend({},options);var target=$(options.of),collision=(options.collision||"flip").split(" "),offset=options.offset?options.offset.split(" "):[0,0],targetWidth,targetHeight,basePosition;if(options.of.nodeType===9){targetWidth=target.width();targetHeight=target.height();basePosition={top:0,left:0}}else if(options.of.scrollTo&&options.of.document){targetWidth=target.width();targetHeight=target.height();basePosition={top:target.scrollTop(),left:target.scrollLeft()}}else if(options.of.preventDefault){options.at="left top";targetWidth=targetHeight=0;basePosition={top:options.of.pageY,left:options.of.pageX}}else{targetWidth=target.outerWidth();targetHeight=target.outerHeight();basePosition=target.offset()}$.each(["my","at"],function(){var pos=(options[this]||"").split(" ");if(pos.length===1){pos=horizontalPositions.test(pos[0])?pos.concat([verticalDefault]):verticalPositions.test(pos[0])?[horizontalDefault].concat(pos):[horizontalDefault,verticalDefault]}pos[0]=horizontalPositions.test(pos[0])?pos[0]:horizontalDefault;pos[1]=verticalPositions.test(pos[1])?pos[1]:verticalDefault;options[this]=pos});if(collision.length===1){collision[1]=collision[0]}offset[0]=parseInt(offset[0],10)||0;if(offset.length===1){offset[1]=offset[0]}offset[1]=parseInt(offset[1],10)||0;if(options.at[0]==="right"){basePosition.left+=targetWidth}else if(options.at[0]===horizontalDefault){basePosition.left+=targetWidth/2}if(options.at[1]==="bottom"){basePosition.top+=targetHeight}else if(options.at[1]===verticalDefault){basePosition.top+=targetHeight/2}basePosition.left+=offset[0];basePosition.top+=offset[1];return this.each(function(){var elem=$(this),elemWidth=elem.outerWidth(),elemHeight=elem.outerHeight(),position=$.extend({},basePosition);if(options.my[0]==="right"){position.left-=elemWidth}else if(options.my[0]===horizontalDefault){position.left-=elemWidth/2}if(options.my[1]==="bottom"){position.top-=elemHeight}else if(options.my[1]===verticalDefault){position.top-=elemHeight/2}$.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,offset:offset,my:options.my,at:options.at})}});if($.fn.bgiframe){elem.bgiframe()}elem.offset($.extend(position,{using:options.using}))})};$.ui.position={fit:{left:function(position,data){var win=$(window),over=position.left+data.elemWidth-win.width()-win.scrollLeft();position.left=over>0?position.left-over:Math.max(0,position.left)},top:function(position,data){var win=$(window),over=position.top+data.elemHeight-win.height()-win.scrollTop();position.top=over>0?position.top-over:Math.max(0,position.top)}},flip:{left:function(position,data){if(data.at[0]==="center"){return}var win=$(window),over=position.left+data.elemWidth-win.width()-win.scrollLeft(),myOffset=data.my[0]==="left"?-data.elemWidth:data.my[0]==="right"?data.elemWidth:0,offset=-2*data.offset[0];position.left+=position.left<0?myOffset+data.targetWidth+offset:over>0?myOffset-data.targetWidth+offset:0},top:function(position,data){if(data.at[1]==="center"){return}var win=$(window),over=position.top+data.elemHeight-win.height()-win.scrollTop(),myOffset=data.my[1]==="top"?-data.elemHeight:data.my[1]==="bottom"?data.elemHeight:0,atOffset=data.at[1]==="top"?data.targetHeight:-data.targetHeight,offset=-2*data.offset[1];position.top+=position.top<0?myOffset+data.targetHeight+offset:over>0?myOffset+atOffset+offset:0}}};if(!$.offset.setOffset){$.offset.setOffset=function(elem,options){if(/static/.test($.curCSS(elem,"position"))){elem.style.position="relative"}var curElem=$(elem),curOffset=curElem.offset(),curTop=parseInt($.curCSS(elem,"top",true),10)||0,curLeft=parseInt($.curCSS(elem,"left",true),10)||0,props={top:(options.top-curOffset.top)+curTop,left:(options.left-curOffset.left)+curLeft};if('using'in options){options.using.call(elem,props)}else{curElem.css(props)}};$.fn.offset=function(options){var elem=this[0];if(!elem||!elem.ownerDocument){return null}if(options){return this.each(function(){$.offset.setOffset(this,options)})}return _offset.call(this)}}}(jQuery));
