diff -r fb7cd02b9848 -r 561aa6d282f6 web/wp-content/plugins/wptouch/js/ajax_upload_3.6.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/wp-content/plugins/wptouch/js/ajax_upload_3.6.js Mon Feb 01 09:51:57 2010 +0000 @@ -0,0 +1,333 @@ +/** + * Ajax upload + * Project page - http://valums.com/ajax-upload/ + * Copyright (c) 2008-2009 Andris Valums, http://valums.com + * Licensed under the MIT license (http://valums.com/mit-license/) + * Version 3.6 (03.10.2009) + **/ +(function(){ +var d = document, w = window; +function get(element){ +if (typeof element == "string") +element = d.getElementById(element); +return element; +} +function addEvent(el, type, fn){ +if (w.addEventListener){ +el.addEventListener(type, fn, false); +} else if (w.attachEvent){ +var f = function(){ +fn.call(el, w.event); +}; el.attachEvent('on' + type, f) +} +} +var toElement = function(){ +var div = d.createElement('div'); +return function(html){ +div.innerHTML = html; +var el = div.childNodes[0]; +div.removeChild(el); +return el; +} +}(); +function hasClass(ele,cls){ +return ele.className.match(new RegExp('(\\s|^)'+cls+'(\\s|$)')); +} +function addClass(ele,cls) { +if (!hasClass(ele,cls)) ele.className += " "+cls; +} +function removeClass(ele,cls) { +var reg = new RegExp('(\\s|^)'+cls+'(\\s|$)'); +ele.className=ele.className.replace(reg,' '); +} +if (document.documentElement["getBoundingClientRect"]){ +var getOffset = function(el){ +var box = el.getBoundingClientRect(), +doc = el.ownerDocument, +body = doc.body, +docElem = doc.documentElement, +clientTop = docElem.clientTop || body.clientTop || 0, +clientLeft = docElem.clientLeft || body.clientLeft || 0, +zoom = 1; +if (body.getBoundingClientRect) { +var bound = body.getBoundingClientRect(); +zoom = (bound.right - bound.left)/body.clientWidth; +} +if (zoom > 1){ +clientTop = 0; +clientLeft = 0; +} +var top = box.top/zoom + (window.pageYOffset || docElem && docElem.scrollTop/zoom || body.scrollTop/zoom) - clientTop, +left = box.left/zoom + (window.pageXOffset|| docElem && docElem.scrollLeft/zoom || body.scrollLeft/zoom) - clientLeft; +return { +top: top, +left: left +}; +} +} else { +var getOffset = function(el){ +if (w.jQuery){ +return jQuery(el).offset(); +} var top = 0, left = 0; +do { +top += el.offsetTop || 0; +left += el.offsetLeft || 0; +} +while (el = el.offsetParent); +return { +left: left, +top: top +}; +} +} +function getBox(el){ +var left, right, top, bottom; var offset = getOffset(el); +left = offset.left; +top = offset.top; +right = left + el.offsetWidth; +bottom = top + el.offsetHeight; return { +left: left, +right: right, +top: top, +bottom: bottom +}; +} +function getMouseCoords(e){ if (!e.pageX && e.clientX){ +var zoom = 1; var body = document.body; +if (body.getBoundingClientRect) { +var bound = body.getBoundingClientRect(); +zoom = (bound.right - bound.left)/body.clientWidth; +} +return { +x: e.clientX / zoom + d.body.scrollLeft + d.documentElement.scrollLeft, +y: e.clientY / zoom + d.body.scrollTop + d.documentElement.scrollTop +}; +} +return { +x: e.pageX, +y: e.pageY +}; } +var getUID = function(){ +var id = 0; +return function(){ +return 'ValumsAjaxUpload' + id++; +} +}(); +function fileFromPath(file){ +return file.replace(/.*(\/|\\)/, ""); } +function getExt(file){ +return (/[.]/.exec(file)) ? /[^.]+$/.exec(file.toLowerCase()) : ''; +} var getXhr = function(){ +var xhr; +return function(){ +if (xhr) return xhr; +if (typeof XMLHttpRequest !== 'undefined') { +xhr = new XMLHttpRequest(); +} else { +var v = [ +"Microsoft.XmlHttp", +"MSXML2.XmlHttp.5.0", +"MSXML2.XmlHttp.4.0", +"MSXML2.XmlHttp.3.0", +"MSXML2.XmlHttp.2.0" ]; +for (var i=0; i < v.length; i++){ +try { +xhr = new ActiveXObject(v[i]); +break; +} catch (e){} +} +} return xhr; +} +}(); +Ajax_upload = AjaxUpload = function(button, options){ +if (button.jquery){ +button = button[0]; +} else if (typeof button == "string" && /^#.*/.test(button)){ button = button.slice(1); } +button = get(button); this._input = null; +this._button = button; +this._disabled = false; +this._submitting = false; +this._justClicked = false; +this._parentDialog = d.body; +if (window.jQuery && jQuery.ui && jQuery.ui.dialog){ +var parentDialog = jQuery(this._button).parents('.ui-dialog'); +if (parentDialog.length){ +this._parentDialog = parentDialog[0]; +} +} this._settings = { +action: 'upload.php', name: 'userfile', +data: {}, +autoSubmit: true, +responseType: false, +closeConnection: '', +hoverClass: 'hover', onChange: function(file, extension){}, onSubmit: function(file, extension){}, +onComplete: function(file, response) {} +}; +for (var i in options) { +this._settings[i] = options[i]; +} +this._createInput(); +this._rerouteClicks(); +} +AjaxUpload.prototype = { +setData : function(data){ +this._settings.data = data; +}, +disable : function(){ +this._disabled = true; +}, +enable : function(){ +this._disabled = false; +}, +destroy : function(){ +if(this._input){ +if(this._input.parentNode){ +this._input.parentNode.removeChild(this._input); +} +this._input = null; +} +}, _createInput : function(){ +var self = this; +var input = d.createElement("input"); +input.setAttribute('type', 'file'); +input.setAttribute('name', this._settings.name); +var styles = { +'position' : 'absolute' +,'margin': '-5px 0 0 -175px' +,'padding': 0 +,'width': '220px' +,'height': '30px' +,'fontSize': '14px' ,'opacity': 0 +,'cursor': 'pointer' +,'display' : 'none' +,'zIndex' : 2147483583 +}; +for (var i in styles){ +input.style[i] = styles[i]; +} +if ( ! (input.style.opacity === "0")){ +input.style.filter = "alpha(opacity=0)"; +} +this._parentDialog.appendChild(input); +addEvent(input, 'change', function(){ +var file = fileFromPath(this.value); if(self._settings.onChange.call(self, file, getExt(file)) == false ){ +return; } if (self._settings.autoSubmit){ +self.submit(); } }); +addEvent(input, 'click', function(){ +self.justClicked = true; +setTimeout(function(){ +self.justClicked = false; +}, 2500); }); this._input = input; +}, +_rerouteClicks : function (){ +var self = this; +var box, dialogOffset = {top:0, left:0}, over = false; +addEvent(self._button, 'mouseover', function(e){ +if (!self._input || over) return; +over = true; +box = getBox(self._button); +if (self._parentDialog != d.body){ +dialogOffset = getOffset(self._parentDialog); +} }); +addEvent(document, 'mousemove', function(e){ +var input = self._input; if (!input || !over) return; +if (self._disabled){ +removeClass(self._button, self._settings.hoverClass); +input.style.display = 'none'; +return; +} var c = getMouseCoords(e); +if ((c.x >= box.left) && (c.x <= box.right) && +(c.y >= box.top) && (c.y <= box.bottom)){ +input.style.top = c.y - dialogOffset.top + 'px'; +input.style.left = c.x - dialogOffset.left + 'px'; +input.style.display = 'block'; +addClass(self._button, self._settings.hoverClass); +} else { over = false; +var check = setInterval(function(){ +if (self.justClicked){ +return; +} +if ( !over ){ +input.style.display = 'none'; } clearInterval(check); +}, 25); +removeClass(self._button, self._settings.hoverClass); +} }); }, +_createIframe : function(){ +var id = getUID(); +var iframe = toElement(''); +iframe.id = id; +iframe.style.display = 'none'; +d.body.appendChild(iframe); return iframe; }, +submit : function(){ +var self = this, settings = this._settings; if (this._input.value === ''){ +return; +} +var file = fileFromPath(this._input.value); if (! (settings.onSubmit.call(this, file, getExt(file)) == false)) { +var iframe = this._createIframe(); +var form = this._createForm(iframe); +form.appendChild(this._input); +if (settings.closeConnection && /AppleWebKit|MSIE/.test(navigator.userAgent)){ +var xhr = getXhr(); +xhr.open('GET', settings.closeConnection, false); +xhr.send(''); +} +form.submit(); +d.body.removeChild(form); form = null; +this._input = null; +this._createInput(); +var toDeleteFlag = false; +addEvent(iframe, 'load', function(e){ +if (// For Safari +iframe.src == "javascript:'%3Chtml%3E%3C/html%3E';" || +iframe.src == "javascript:'';"){ if( toDeleteFlag ){ +setTimeout( function() { +d.body.removeChild(iframe); +}, 0); +} +return; +} var doc = iframe.contentDocument ? iframe.contentDocument : frames[iframe.id].document; +if (doc.readyState && doc.readyState != 'complete'){ +return; +} +if (doc.body && doc.body.innerHTML == "false"){ +return; } +var response; +if (doc.XMLDocument){ +response = doc.XMLDocument; +} else if (doc.body){ +response = doc.body.innerHTML; +if (settings.responseType && settings.responseType.toLowerCase() == 'json'){ +if (doc.body.firstChild && doc.body.firstChild.nodeName.toUpperCase() == 'PRE'){ +response = doc.body.firstChild.firstChild.nodeValue; +} +if (response) { +response = window["eval"]("(" + response + ")"); +} else { +response = {}; +} +} +} else { +var response = doc; +} +settings.onComplete.call(self, file, response); +toDeleteFlag = true; +iframe.src = "javascript:'';"; }); +} else { +d.body.removeChild(this._input); this._input = null; +this._createInput(); } +}, _createForm : function(iframe){ +var settings = this._settings; +var form = toElement('
'); +form.style.display = 'none'; +form.action = settings.action; +form.target = iframe.name; +d.body.appendChild(form); +for (var prop in settings.data){ +var el = d.createElement("input"); +el.type = 'hidden'; +el.name = prop; +el.value = settings.data[prop]; +form.appendChild(el); +} return form; +} }; +})(jQuery); \ No newline at end of file