
(function($){$.Watermarker=function(obj,opt)
{var obj=obj,opt=opt;if(typeof(obj)!=='object')obj=$(obj)[0];if(typeof(opt)!=='object')opt={};var defaults={watermark_img:'watermark.png',opacity:1.0,opacitySlider:null,x:null,y:null,w:'100%',h:'100%',position:null,onChange:function(){},onSelect:function(){}};var options=defaults;setOptions(opt);var $origimg=$(obj);var $container=$('<div />').width($origimg.width()).height($origimg.height()).css({position:'relative'}).insertAfter($origimg);$container.append($origimg);var $wcontainer=$('<div />').resizable({resize:function(event,ui){setSubElemSameSizeAsContainer();updateData();},containment:'parent'}).draggable({drag:function(event,ui){updateData();},containment:'parent'}).css({position:'absolute'}).insertAfter($origimg);var $styleContainer=$('<div />').addClass('watermark').css({position:'absolute','z-index':1})
$wcontainer.append($styleContainer);var $waterimg=$('<img />').attr('src',options.watermark_img).addClass('watermark').css({position:'absolute','z-index':2})
$wcontainer.append($waterimg);if(options.opacitySlider!==null)
{options.opacitySlider.slider({min:0,max:100,value:options.opacity*100,slide:function(event,ui){options.opacity=ui.value/100;$wcontainer.css({opacity:options.opacity,filter:'alpha(opacity='+(options.opacity*100)+')'});updateData();}});}
var middleX=Math.round($origimg.width()/2-$waterimg.width()/2);var middleY=Math.round($origimg.height()/2-$waterimg.height()/2);var bottomY=$origimg.height()-$waterimg.height();var rightX=$origimg.width()-$waterimg.width();var posX,posY;if(options.x!=null&&options.y!=null)
{posX=options.x;posY=options.y;}
else if(options.position!=null)
{switch(options.position)
{case'topleft':posX=0;posY=0;break;case'topcenter':posX=middleX;posY=0;break;case'topright':posX=rightX;posY=0;break;case'centerleft':posX=0;posY=middleY;break;case'centercenter':case'center':default:posX=middleX;posY=middleY;break;case'centerright':posX=rightX;posY=middleY;break;case'bottomleft':posX=0;posY=bottomY;break;case'bottomcenter':posX=middleX;posY=bottomY;break;case'bottomright':posX=rightX;posY=bottomY;break;}}
else
{posX=middleX;posY=middleY;}
$wcontainer.css({top:posY+'px',left:posX+'px'});$wcontainer.width(options.w);$wcontainer.height(options.h);setSubElemSameSizeAsContainer();$wcontainer.css({opacity:options.opacity,filter:'alpha(opacity='+(options.opacity*100)+')'});updateData();function setOptions(opt)
{if(typeof(opt)!='object')opt={};options=$.extend(options,opt);if(typeof(options.onChange)!=='function')
options.onChange=function(){};if(typeof(options.onSelect)!=='function')
options.onSelect=function(){};};function setSubElemSameSizeAsContainer()
{$waterimg.width($wcontainer.width());$waterimg.height($wcontainer.height());var bL=removePx($styleContainer.css('borderLeftWidth'));var bR=removePx($styleContainer.css('borderRightWidth'));var bT=removePx($styleContainer.css('borderTopWidth'));var bB=removePx($styleContainer.css('borderBottomWidth'));$styleContainer.width($wcontainer.width()-bL-bR);$styleContainer.height($wcontainer.height()-bT-bB);}
function removePx(str)
{return parseInt(str.replace('px',''));}
function updateData()
{var WatermarkPos=getPos($waterimg);var ContainerPos=getPos($container);options.onChange({x:WatermarkPos[0]-ContainerPos[0],y:WatermarkPos[1]-ContainerPos[1],w:$waterimg.width(),h:$waterimg.height(),opacity:options.opacity});}
function getPos(obj)
{var pos=$(obj).offset();return[pos.left,pos.top];};};$.fn.Watermarker=function(options)
{function attachWhenDone(from)
{var loadsrc=options.useImg||from.src;var img=new Image();img.onload=function(){$.Watermarker(from,options);};img.src=loadsrc;};if(typeof(options)!=='object')options={};this.each(function()
{if($(this).data('Watermarker'))
{if(options=='api')return $(this).data('Watermarker');else $(this).data('Watermarker').setOptions(options);}
else attachWhenDone(this);});return this;};})(jQuery);
