(function(){function log(){if(typeof(console)!='undefined'&&typeof(console.log)=='function'){Array.prototype.unshift.call(arguments,'[Ajax Upload]');console.log(Array.prototype.join.call(arguments,' '))}}function addEvent(a,b,c){if(a.addEventListener){a.addEventListener(b,c,false)}else if(a.attachEvent){a.attachEvent('on'+b,function(){c.call(a)})}else{throw new Error('not supported or DOM not loaded');}}function addResizeEvent(a){var b;addEvent(window,'resize',function(){if(b){clearTimeout(b)}b=setTimeout(a,100)})}if(document.documentElement.getBoundingClientRect){var k=function(a){var b=a.getBoundingClientRect();var c=a.ownerDocument;var d=c.body;var e=c.documentElement;var f=e.clientTop||d.clientTop||0;var g=e.clientLeft||d.clientLeft||0;var h=1;if(d.getBoundingClientRect){var i=d.getBoundingClientRect();h=(i.right-i.left)/d.clientWidth}if(h>1){f=0;g=0}var j=b.top/h+(window.pageYOffset||e&&e.scrollTop/h||d.scrollTop/h)-f,left=b.left/h+(window.pageXOffset||e&&e.scrollLeft/h||d.scrollLeft/h)-g;return{top:j,left:left}}}else{var k=function(a){var b=0,left=0;do{b+=a.offsetTop||0;left+=a.offsetLeft||0;a=a.offsetParent}while(a);return{left:left,top:b}}}function getBox(a){var b,right,top,bottom;var c=k(a);b=c.left;top=c.top;right=b+a.offsetWidth;bottom=top+a.offsetHeight;return{left:b,right:right,top:top,bottom:bottom}}function addStyles(a,b){for(var c in b){if(b.hasOwnProperty(c)){a.style[c]=b[c]}}}function copyLayout(a,b){var c=getBox(a);addStyles(b,{position:'absolute',left:c.left+'px',top:c.top+'px',width:a.offsetWidth+'px',height:a.offsetHeight+'px'})}var l=(function(){var c=document.createElement('div');return function(a){c.innerHTML=a;var b=c.firstChild;return c.removeChild(b)}})();var m=(function(){var a=0;return function(){return'ValumsAjaxUpload'+a++}})();function fileFromPath(a){return a.replace(/.*(\/|\\)/,"")}function getExt(a){return(-1!==a.indexOf('.'))?a.replace(/.*[.]/,''):''}function hasClass(a,b){var c=new RegExp('\\b'+b+'\\b');return c.test(a.className)}function addClass(a,b){if(!hasClass(a,b)){a.className+=' '+b}}function removeClass(a,b){var c=new RegExp('\\b'+b+'\\b');a.className=a.className.replace(c,'')}function removeNode(a){a.parentNode.removeChild(a)}window.AjaxUpload=function(c,d){this._settings={action:'upload.php',name:'userfile',data:{},autoSubmit:true,responseType:false,hoverClass:'hover',disabledClass:'disabled',onChange:function(a,b){},onSubmit:function(a,b){},onComplete:function(a,b){}};for(var i in d){if(d.hasOwnProperty(i)){this._settings[i]=d[i]}}if(c.jquery){c=c[0]}else if(typeof c=="string"){if(/^#.*/.test(c)){c=c.slice(1)}c=document.getElementById(c)}if(!c||c.nodeType!==1){throw new Error("Please make sure that you're passing a valid element");}if(c.nodeName.toUpperCase()=='A'){addEvent(c,'click',function(e){if(e&&e.preventDefault){e.preventDefault()}else if(window.event){window.event.returnValue=false}})}this._button=c;this._input=null;this._disabled=false;this.enable();this._rerouteClicks()};AjaxUpload.prototype={setData:function(a){this._settings.data=a},disable:function(){addClass(this._button,this._settings.disabledClass);this._disabled=true;var a=this._button.nodeName.toUpperCase();if(a=='INPUT'||a=='BUTTON'){this._button.setAttribute('disabled','disabled')}if(this._input){this._input.parentNode.style.visibility='hidden'}},enable:function(){removeClass(this._button,this._settings.disabledClass);this._button.removeAttribute('disabled');this._disabled=false},_createInput:function(){var b=this;var c=document.createElement("input");c.setAttribute('type','file');c.setAttribute('name',this._settings.name);addStyles(c,{'position':'absolute','right':0,'margin':0,'padding':0,'fontSize':'480px','cursor':'pointer'});var d=document.createElement("div");addStyles(d,{'display':'block','position':'absolute','overflow':'hidden','margin':0,'padding':0,'opacity':0,'direction':'ltr','zIndex':2147483583});if(d.style.opacity!=="0"){if(typeof(d.filters)=='undefined'){throw new Error('Opacity not supported by the browser');}d.style.filter="alpha(opacity=0)"}addEvent(c,'change',function(){if(!c||c.value===''){return}var a=fileFromPath(c.value);if(false===b._settings.onChange.call(b,a,getExt(a))){b._clearInput();return}if(b._settings.autoSubmit){b.submit()}});addEvent(c,'mouseover',function(){addClass(b._button,b._settings.hoverClass)});addEvent(c,'mouseout',function(){removeClass(b._button,b._settings.hoverClass);c.parentNode.style.visibility='hidden'});d.appendChild(c);document.body.appendChild(d);this._input=c},_clearInput:function(){if(!this._input){return}removeNode(this._input.parentNode);this._input=null;this._createInput();removeClass(this._button,this._settings.hoverClass)},_rerouteClicks:function(){var b=this;addEvent(b._button,'mouseover',function(){if(b._disabled){return}if(!b._input){b._createInput()}var a=b._input.parentNode;copyLayout(b._button,a);a.style.visibility='visible'})},_createIframe:function(){var a=m();var b=l('<iframe src="javascript:false;" name="'+a+'" />');b.setAttribute('id',a);b.style.display='none';document.body.appendChild(b);return b},_createForm:function(a){var b=this._settings;var c=l('<form method="post" enctype="multipart/form-data"></form>');c.setAttribute('action',b.action);c.setAttribute('target',a.name);c.style.display='none';document.body.appendChild(c);for(var d in b.data){if(b.data.hasOwnProperty(d)){var e=document.createElement("input");e.setAttribute('type','hidden');e.setAttribute('name',d);e.setAttribute('value',b.data[d]);c.appendChild(e)}}return c},_getResponse:function(c,d){var e=false,self=this,settings=this._settings;addEvent(c,'load',function(){if(c.src=="javascript:'%3Chtml%3E%3C/html%3E';"||c.src=="javascript:'<html></html>';"){if(e){setTimeout(function(){removeNode(c)},0)}return}var a=c.contentDocument?c.contentDocument:window.frames[c.id].document;if(a.readyState&&a.readyState!='complete'){return}if(a.body&&a.body.innerHTML=="false"){return}var b;if(a.XMLDocument){b=a.XMLDocument}else if(a.body){b=a.body.innerHTML;if(settings.responseType&&settings.responseType.toLowerCase()=='json'){if(a.body.firstChild&&a.body.firstChild.nodeName.toUpperCase()=='PRE'){b=a.body.firstChild.firstChild.nodeValue}if(b){b=eval("("+b+")")}else{b={}}}}else{b=a}settings.onComplete.call(self,d,b);e=true;c.src="javascript:'<html></html>';"})},submit:function(){var a=this,settings=this._settings;if(!this._input||this._input.value===''){return}var b=fileFromPath(this._input.value);if(false===settings.onSubmit.call(this,b,getExt(b))){this._clearInput();return}var c=this._createIframe();var d=this._createForm(c);removeNode(this._input.parentNode);removeClass(a._button,a._settings.hoverClass);d.appendChild(this._input);d.submit();removeNode(d);d=null;removeNode(this._input);this._input=null;this._getResponse(c,b);this._createInput()}}})();
