summaryrefslogtreecommitdiff
path: root/js
diff options
context:
space:
mode:
Diffstat (limited to 'js')
-rw-r--r--js/geometa.js31
-rw-r--r--js/jquery.joverlay.js203
-rw-r--r--js/jquery.joverlay.min.js4
-rw-r--r--js/util.js125
4 files changed, 216 insertions, 147 deletions
diff --git a/js/geometa.js b/js/geometa.js
index ced5be060..21deb1885 100644
--- a/js/geometa.js
+++ b/js/geometa.js
@@ -1,5 +1,5 @@
// A shim to implement the W3C Geolocation API Specification using Gears or the Ajax API
-if ( typeof navigator.geolocation == "undefined" || navigator.geolocation.shim ) (function(){
+if (typeof navigator.geolocation == "undefined" || navigator.geolocation.shim ) (function(){
// -- BEGIN GEARS_INIT
(function() {
@@ -94,7 +94,7 @@ var GearsGeoLocation = (function() {
}
};
-})();
+});
var AjaxGeoLocation = (function() {
// -- PRIVATE
@@ -103,7 +103,7 @@ var AjaxGeoLocation = (function() {
if (!hasGoogleLoader() && !loading) {
loading = true;
var s = document.createElement('script');
- s.src = 'http://www.google.com/jsapi?callback=_google_loader_apiLoaded';
+ s.src = (document.location.protocol == "https:"?"https://":"http://") + 'www.google.com/jsapi?callback=_google_loader_apiLoaded';
s.type = "text/javascript";
document.getElementsByTagName('body')[0].appendChild(s);
}
@@ -161,22 +161,23 @@ var AjaxGeoLocation = (function() {
var cl = google.loader.ClientLocation;
var position = {
- latitude: cl.latitude,
- longitude: cl.longitude,
- altitude: null,
- accuracy: 43000, // same as Gears accuracy over wifi?
- altitudeAccuracy: null,
- heading: null,
- velocity: null,
- timestamp: new Date(),
-
+ coords: {
+ latitude: cl.latitude,
+ longitude: cl.longitude,
+ altitude: null,
+ accuracy: 43000, // same as Gears accuracy over wifi?
+ altitudeAccuracy: null,
+ heading: null,
+ speed: null,
+ },
// extra info that is outside of the bounds of the core API
address: {
city: cl.address.city,
country: cl.address.country,
country_code: cl.address.country_code,
region: cl.address.region
- }
+ },
+ timestamp: new Date()
};
successCallback(position);
@@ -208,9 +209,9 @@ var AjaxGeoLocation = (function() {
}
};
-})();
+});
// If you have Gears installed use that, else use Ajax ClientLocation
-navigator.geolocation = (window.google && google.gears) ? GearsGeoLocation : AjaxGeoLocation;
+navigator.geolocation = (window.google && google.gears) ? GearsGeoLocation() : AjaxGeoLocation();
})();
diff --git a/js/jquery.joverlay.js b/js/jquery.joverlay.js
index e4effec8e..cf4e15998 100644
--- a/js/jquery.joverlay.js
+++ b/js/jquery.joverlay.js
@@ -1,6 +1,6 @@
/* Copyright (c) 2009 Alvaro A. Lima Jr http://alvarojunior.com/jquery/joverlay.html
* Licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
- * Version: 0.7.1 (JUN 15, 2009)
+ * Version: 0.8 (OUT 19, 2009)
* Requires: jQuery 1.3+
*/
@@ -9,43 +9,54 @@
// Global vars
var isIE6 = $.browser.msie && $.browser.version == 6.0; // =(
var JOVERLAY_TIMER = null;
- var JOVERLAY_ELEMENT_PREV = null;
$.fn.jOverlay = function(options) {
// Element exist?
if ( $('#jOverlay').length ) {$.closeOverlay();}
- // Clear Element Prev
- JOVERLAY_ELEMENT_PREV = null;
-
// Clear Timer
if (JOVERLAY_TIMER !== null) {
clearTimeout( JOVERLAY_TIMER );
}
// Set Options
- var options = $.extend({}, $.fn.jOverlay.options, options);
+ var options = $.extend({}, $.fn.jOverlay.options, options || {});
- // private function
- function center(id) {
- if (options.center) {
- $.center(id);
- }
- }
+ // success deprecated !!! Use onSuccess
+ var onSuccess = options.onSuccess || options.success;
var element = this.is('*') ? this : '#jOverlayContent';
+
var position = isIE6 ? 'absolute' : 'fixed';
+
var isImage = /([^\/\\]+)\.(png|gif|jpeg|jpg|bmp)$/i.test( options.url );
var imgLoading = options.imgLoading ? "<img id='jOverlayLoading' src='"+options.imgLoading+"' style='position:"+position+"; z-index:"+(options.zIndex + 9)+";'/>" : '';
+ // private function
+ function center(id) {
+ if (options.center) {
+ $.center(id);
+ } else if( isIE6 ) {
+ $.center('#jOverlayContent',{
+ 'top' : $(window).scrollTop() + 'px',
+ 'marginLeft' : '',
+ 'marginTop' : '',
+ 'left' : ''
+ });
+ }
+ }
+
$('body').prepend(imgLoading + "<div id='jOverlay' />"
+ "<div id='jOverlayContent' style='position:"+position+"; z-index:"+(options.zIndex + 5)+"; display:none;'/>"
);
+ // Cache options
+ $('#jOverlayContent').data('options', options);
+
// Loading Centered
- $('#jOverlayLoading').load(function(){
+ $('#jOverlayLoading').load(function() {
center(this);
});
@@ -57,35 +68,42 @@
// Overlay Style
$('#jOverlay').css({
- backgroundColor : options.color,
- position : position,
- top : '0px',
- left : '0px',
- filter : 'alpha(opacity='+ (options.opacity * 100) +')', // IE =(
- opacity : options.opacity, // Good Browser =D
- zIndex : options.zIndex,
- width : !isIE6 ? '100%' : $(window).width() + 'px',
- height : !isIE6 ? '100%' : $(document).height() + 'px'
+ 'backgroundColor' : options.color,
+ 'position' : position,
+ 'top' : '0px',
+ 'left' : '0px',
+ 'filter' : 'alpha(opacity='+ (options.opacity * 100) +')', // IE =(
+ 'opacity' : options.opacity, // Good Browser =D
+ '-khtml-opacity' : options.opacity,
+ '-moz-opacity' : options.opacity,
+ 'zIndex' : options.zIndex,
+ 'width' : !isIE6 ? '100%' : $(window).width() + 'px',
+ 'height' : !isIE6 ? '100%' : $(document).height() + 'px'
}).show();
+ // INNER HTML
+ if ( $.trim(options.html) ) {
+ $(element).html(options.html);
+ }
+
// ELEMENT
if ( this.is('*') ) {
- JOVERLAY_ELEMENT_PREV = this.prev();
+ $('#jOverlayContent').data('jOverlayElementPrev', this.prev() );
$('#jOverlayContent').html(
- this.show().attr('display', options.autoHide ? 'none' : this.css('display') )
+ this.show().data('display', options.autoHide ? 'none' : this.css('display') )
);
-
+
if ( !isImage ) {
center('#jOverlayContent');
$('#jOverlayContent').show();
-
+
// Execute callback
- if ( !options.url && $.isFunction( options.success ) ) {
- options.success( this );
+ if ( !options.url && $.isFunction( onSuccess ) ) {
+ onSuccess( this );
}
}
@@ -106,13 +124,14 @@
$( element ).html(this);
center('#jOverlayContent');
+ center('#jOverlayLoading');
$('#jOverlayLoading').fadeOut(500);
$('#jOverlayContent').show();
// Execute callback
- if ( $.isFunction( options.success ) ) {
- options.success( this );
+ if ( $.isFunction( onSuccess ) ) {
+ onSuccess( $(element) );
}
}).error(function(){
@@ -138,8 +157,8 @@
center('#jOverlayContent');
// Execute callback
- if ($.isFunction( options.success )) {
- options.success(responseText);
+ if ( $.isFunction( onSuccess ) ) {
+ onSuccess( responseText );
}
},
@@ -163,8 +182,8 @@
$(window).resize(function(){
$('#jOverlay').css({
- width: $(window).width() + 'px',
- height: $(document).height() + 'px'
+ 'width' : $(window).width() + 'px',
+ 'height' : $(document).height() + 'px'
});
center('#jOverlayContent');
@@ -174,11 +193,15 @@
}
// Press ESC to close
- $(document).keydown(function(event){
- if (event.keyCode == 27) {
- $.closeOverlay();
- }
- });
+ if ( options.closeOnEsc ) {
+ $(document).keydown(function(event){
+ if ( event.keyCode == 27 ) {
+ $.closeOverlay();
+ }
+ });
+ } else {
+ $(document).unbind('keydown');
+ }
// Click to close
if ( options.bgClickToClose ) {
@@ -188,12 +211,13 @@
// Timeout (auto-close)
// time in millis to wait before auto-close
// set to 0 to disable
- if ( Number(options.timeout) > 0 ) {
- jOverlayTimer = setTimeout( $.closeOverlay, Number(options.timeout) );
+ if ( options.timeout && Number(options.timeout) > 0 ) {
+ JOVERLAY_TIMER = window.setTimeout( $.closeOverlay, Number(options.timeout) );
}
// ADD CSS
$('#jOverlayContent').css(options.css || {});
+
};
// Resizing large images - orginal by Christian Montoya.
@@ -202,68 +226,87 @@
var x = $(window).width() - 150;
var y = $(window).height() - 150;
if (imageWidth > x) {
- imageHeight = imageHeight * (x / imageWidth);
- imageWidth = x;
- if (imageHeight > y) {
- imageWidth = imageWidth * (y / imageHeight);
- imageHeight = y;
+ imageHeight = imageHeight * (x / imageWidth);
+ imageWidth = x;
+ if (imageHeight > y) {
+ imageWidth = imageWidth * (y / imageHeight);
+ imageHeight = y;
}
- } else if (imageHeight > y) {
- imageWidth = imageWidth * (y / imageHeight);
- imageHeight = y;
- if (imageWidth > x) {
- imageHeight = imageHeight * (x / imageWidth);
+ } else if (imageHeight > y) {
+ imageWidth = imageWidth * (y / imageHeight);
+ imageHeight = y;
+ if (imageWidth > x) {
+ imageHeight = imageHeight * (x / imageWidth);
imageWidth = x;
}
}
- return {width:imageWidth, height:imageHeight};
+ return {'width':imageWidth, 'height':imageHeight};
};
// Centered Element
- $.center = function(element) {
+ $.center = function(element, css) {
var element = $(element);
var elemWidth = element.width();
- element.css({
- width : elemWidth + 'px',
- marginLeft : '-' + (elemWidth / 2) + 'px',
- marginTop : '-' + element.height() / 2 + 'px',
- height : 'auto',
- top : !isIE6 ? '50%' : $(window).scrollTop() + ($(window).height() / 2) + 'px',
- left : '50%'
- });
+ element.css($.extend({},{
+ 'width' : elemWidth + 'px',
+ 'marginLeft' : '-' + (elemWidth / 2) + 'px',
+ 'marginTop' : '-' + element.height() / 2 + 'px',
+ 'height' : 'auto',
+ 'top' : !isIE6 ? '50%' : $(window).scrollTop() + ($(window).height() / 2) + 'px',
+ 'left' : '50%'
+ }, css || {}));
};
// Options default
$.fn.jOverlay.options = {
- method : 'GET',
- data : '',
- url : '',
- color : '#000',
- opacity : '0.6',
- zIndex : 9999,
- center : true,
- imgLoading : '',
- bgClickToClose : true,
- success : null,
- timeout : 0,
- autoHide : true,
- css : {}
+ 'method' : 'GET',
+ 'data' : '',
+ 'url' : '',
+ 'color' : '#000',
+ 'opacity' : '0.6',
+ 'zIndex' : 9999,
+ 'center' : true,
+ 'imgLoading' : '',
+ 'bgClickToClose' : true,
+ 'success' : null, // Deprecated : use onSuccess
+ 'onSuccess' : null,
+ 'timeout' : 0,
+ 'autoHide' : true,
+ 'css' : {},
+ 'html' : '',
+ 'closeOnEsc' : true
+ };
+
+ // Set default options (GLOBAL)
+ // Overiding the default values.
+ $.fn.jOverlay.setDefaults = function(options) {
+ $.fn.jOverlay.options = $.extend({}, $.fn.jOverlay.options, options || {});
};
// Close
$.closeOverlay = function() {
+ var content = $('#jOverlayContent');
+ var options = content.data('options');
+ var elementPrev = content.data('jOverlayElementPrev');
+
+ // Fix IE6 (SELECT)
if (isIE6) { $("select").show(); }
- if ( JOVERLAY_ELEMENT_PREV !== null ) {
- if ( JOVERLAY_ELEMENT_PREV !== null ) {
- var element = $('#jOverlayContent').children();
- JOVERLAY_ELEMENT_PREV.after( element.css('display', element.attr('display') ) );
- element.removeAttr('display');
- }
+ // Restore position
+ if ( elementPrev ) {
+ var contentChildren = content.children();
+ elementPrev.after( contentChildren.css('display', contentChildren.data('display') ) );
+ // Clear cache
+ contentChildren.removeData('display');
+ content.removeData('jOverlayElementPrev');
}
+ // Clear options cache
+ content.removeData('options');
+
+ // Remove joverlay elements
$('#jOverlayLoading, #jOverlayContent, #jOverlay').remove();
};
diff --git a/js/jquery.joverlay.min.js b/js/jquery.joverlay.min.js
index 44cd46043..fa1ceb7b6 100644
--- a/js/jquery.joverlay.min.js
+++ b/js/jquery.joverlay.min.js
@@ -1,7 +1,7 @@
/* Copyright (c) 2009 Alvaro A. Lima Jr http://alvarojunior.com/jquery/joverlay.html
* Licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
- * Version: 0.7.1 (JUN 15, 2009
+ * Version: 0.8 (OUT 19, 2009)
* Requires: jQuery 1.3+
* Packer from http://dean.edwards.name/packer/
*/
-(function($){var g=$.browser.msie&&$.browser.version==6.0;var h=null;var i=null;$.fn.jOverlay=function(b){if($('#jOverlay').length){$.closeOverlay()}i=null;if(h!==null){clearTimeout(h)}var b=$.extend({},$.fn.jOverlay.options,b);function center(a){if(b.center){$.center(a)}}var c=this.is('*')?this:'#jOverlayContent';var d=g?'absolute':'fixed';var e=/([^\/\\]+)\.(png|gif|jpeg|jpg|bmp)$/i.test(b.url);var f=b.imgLoading?"<img id='jOverlayLoading' src='"+b.imgLoading+"' style='position:"+d+"; z-index:"+(b.zIndex+9)+";'/>":'';$('body').prepend(f+"<div id='jOverlay' />"+"<div id='jOverlayContent' style='position:"+d+"; z-index:"+(b.zIndex+5)+"; display:none;'/>");$('#jOverlayLoading').load(function(){center(this)});if(g){$('select').hide();$('#jOverlayContent select').show()}$('#jOverlay').css({backgroundColor:b.color,position:d,top:'0px',left:'0px',filter:'alpha(opacity='+(b.opacity*100)+')',opacity:b.opacity,zIndex:b.zIndex,width:!g?'100%':$(window).width()+'px',height:!g?'100%':$(document).height()+'px'}).show();if(this.is('*')){i=this.prev();$('#jOverlayContent').html(this.show().attr('display',b.autoHide?'none':this.css('display')));if(!e){center('#jOverlayContent');$('#jOverlayContent').show();if(!b.url&&$.isFunction(b.success)){b.success(this)}}}if(e){$('<img/>').load(function(){var a=$.resize(this.width,this.height);$(this).css({width:a.width,height:a.height});$(c).html(this);center('#jOverlayContent');$('#jOverlayLoading').fadeOut(500);$('#jOverlayContent').show();if($.isFunction(b.success)){b.success(this)}}).error(function(){alert('Image ('+b.url+') not found.');$.closeOverlay()}).attr({'src':b.url,'alt':b.url})}if(b.url&&!e){$.ajax({type:b.method,data:b.data,url:b.url,success:function(a){$('#jOverlayLoading').fadeOut(500);$(c).html(a).show();center('#jOverlayContent');if($.isFunction(b.success)){b.success(a)}},error:function(){alert('URL ('+b.url+') not found.');$.closeOverlay()}})}if(g){$(window).scroll(function(){center('#jOverlayContent')});$(window).resize(function(){$('#jOverlay').css({width:$(window).width()+'px',height:$(document).height()+'px'});center('#jOverlayContent')})}$(document).keydown(function(a){if(a.keyCode==27){$.closeOverlay()}});if(b.bgClickToClose){$('#jOverlay').click($.closeOverlay)}if(Number(b.timeout)>0){jOverlayTimer=setTimeout($.closeOverlay,Number(b.timeout))}$('#jOverlayContent').css(b.css||{})};$.resize=function(a,b){var x=$(window).width()-150;var y=$(window).height()-150;if(a>x){b=b*(x/a);a=x;if(b>y){a=a*(y/b);b=y}}else if(b>y){a=a*(y/b);b=y;if(a>x){b=b*(x/a);a=x}}return{width:a,height:b}};$.center=function(a){var a=$(a);var b=a.width();a.css({width:b+'px',marginLeft:'-'+(b/2)+'px',marginTop:'-'+a.height()/2+'px',height:'auto',top:!g?'50%':$(window).scrollTop()+($(window).height()/2)+'px',left:'50%'})};$.fn.jOverlay.options={method:'GET',data:'',url:'',color:'#000',opacity:'0.6',zIndex:9999,center:true,imgLoading:'',bgClickToClose:true,success:null,timeout:0,autoHide:true,css:{}};$.closeOverlay=function(){if(g){$("select").show()}if(i!==null){if(i!==null){var a=$('#jOverlayContent').children();i.after(a.css('display',a.attr('display')));a.removeAttr('display')}}$('#jOverlayLoading, #jOverlayContent, #jOverlay').remove()}})(jQuery);
+(function($){var isIE6=$.browser.msie&&$.browser.version==6.0;var JOVERLAY_TIMER=null;$.fn.jOverlay=function(options){if($('#jOverlay').length){$.closeOverlay()}if(JOVERLAY_TIMER!==null){clearTimeout(JOVERLAY_TIMER)}var options=$.extend({},$.fn.jOverlay.options,options||{});var onSuccess=options.onSuccess||options.success;var element=this.is('*')?this:'#jOverlayContent';var position=isIE6?'absolute':'fixed';var isImage=/([^\/\\]+)\.(png|gif|jpeg|jpg|bmp)$/i.test(options.url);var imgLoading=options.imgLoading?"<img id='jOverlayLoading' src='"+options.imgLoading+"' style='position:"+position+"; z-index:"+(options.zIndex+9)+";'/>":'';function center(id){if(options.center){$.center(id)}else if(isIE6){$.center('#jOverlayContent',{'top':$(window).scrollTop()+'px','marginLeft':'','marginTop':'','left':''})}}$('body').prepend(imgLoading+"<div id='jOverlay' />"+"<div id='jOverlayContent' style='position:"+position+"; z-index:"+(options.zIndex+5)+"; display:none;'/>");$('#jOverlayContent').data('options',options);$('#jOverlayLoading').load(function(){center(this)});if(isIE6){$('select').hide();$('#jOverlayContent select').show()}$('#jOverlay').css({'backgroundColor':options.color,'position':position,'top':'0px','left':'0px','filter':'alpha(opacity='+(options.opacity*100)+')','opacity':options.opacity,'-khtml-opacity':options.opacity,'-moz-opacity':options.opacity,'zIndex':options.zIndex,'width':!isIE6?'100%':$(window).width()+'px','height':!isIE6?'100%':$(document).height()+'px'}).show();if($.trim(options.html)){$(element).html(options.html)}if(this.is('*')){$('#jOverlayContent').data('jOverlayElementPrev',this.prev());$('#jOverlayContent').html(this.show().data('display',options.autoHide?'none':this.css('display')));if(!isImage){center('#jOverlayContent');$('#jOverlayContent').show();if(!options.url&&$.isFunction(onSuccess)){onSuccess(this)}}}if(isImage){$('<img/>').load(function(){var resize=$.resize(this.width,this.height);$(this).css({width:resize.width,height:resize.height});$(element).html(this);center('#jOverlayContent');center('#jOverlayLoading');$('#jOverlayLoading').fadeOut(500);$('#jOverlayContent').show();if($.isFunction(onSuccess)){onSuccess($(element))}}).error(function(){alert('Image ('+options.url+') not found.');$.closeOverlay()}).attr({'src':options.url,'alt':options.url})}if(options.url&&!isImage){$.ajax({type:options.method,data:options.data,url:options.url,success:function(responseText){$('#jOverlayLoading').fadeOut(500);$(element).html(responseText).show();center('#jOverlayContent');if($.isFunction(onSuccess)){onSuccess(responseText)}},error:function(){alert('URL ('+options.url+') not found.');$.closeOverlay()}})}if(isIE6){$(window).scroll(function(){center('#jOverlayContent')});$(window).resize(function(){$('#jOverlay').css({'width':$(window).width()+'px','height':$(document).height()+'px'});center('#jOverlayContent')})}if(options.closeOnEsc){$(document).keydown(function(event){if(event.keyCode==27){$.closeOverlay()}})}else{$(document).unbind('keydown')}if(options.bgClickToClose){$('#jOverlay').click($.closeOverlay)}if(options.timeout&&Number(options.timeout)>0){JOVERLAY_TIMER=window.setTimeout($.closeOverlay,Number(options.timeout))}$('#jOverlayContent').css(options.css||{})};$.resize=function(imageWidth,imageHeight){var x=$(window).width()-150;var y=$(window).height()-150;if(imageWidth>x){imageHeight=imageHeight*(x/imageWidth);imageWidth=x;if(imageHeight>y){imageWidth=imageWidth*(y/imageHeight);imageHeight=y}}else if(imageHeight>y){imageWidth=imageWidth*(y/imageHeight);imageHeight=y;if(imageWidth>x){imageHeight=imageHeight*(x/imageWidth);imageWidth=x}}return{'width':imageWidth,'height':imageHeight}};$.center=function(element,css){var element=$(element);var elemWidth=element.width();element.css($.extend({},{'width':elemWidth+'px','marginLeft':'-'+(elemWidth/2)+'px','marginTop':'-'+element.height()/2+'px','height':'auto','top':!isIE6?'50%':$(window).scrollTop()+($(window).height()/2)+'px','left':'50%'},css||{}))};$.fn.jOverlay.options={'method':'GET','data':'','url':'','color':'#000','opacity':'0.6','zIndex':9999,'center':true,'imgLoading':'','bgClickToClose':true,'success':null,'onSuccess':null,'timeout':0,'autoHide':true,'css':{},'html':'','closeOnEsc':true};$.fn.jOverlay.setDefaults=function(options){$.fn.jOverlay.options=$.extend({},$.fn.jOverlay.options,options||{})};$.closeOverlay=function(){var content=$('#jOverlayContent');var options=content.data('options');var elementPrev=content.data('jOverlayElementPrev');if(isIE6){$("select").show()}if(elementPrev){var contentChildren=content.children();elementPrev.after(contentChildren.css('display',contentChildren.data('display')));contentChildren.removeData('display');content.removeData('jOverlayElementPrev')}content.removeData('options');$('#jOverlayLoading, #jOverlayContent, #jOverlay').remove()}})(jQuery); \ No newline at end of file
diff --git a/js/util.js b/js/util.js
index 8846fcd3d..9ffbd88e4 100644
--- a/js/util.js
+++ b/js/util.js
@@ -131,34 +131,37 @@ var SN = { // StatusNet
},
FormXHR: function(f) {
- f.bind('submit', function(e) {
- form_id = $(this)[0].id;
- $.ajax({
- type: 'POST',
- dataType: 'xml',
- url: $(this)[0].action,
- data: $(this).serialize() + '&ajax=1',
- beforeSend: function(xhr) {
- $('#'+form_id).addClass(SN.C.S.Processing);
- $('#'+form_id+' .submit').addClass(SN.C.S.Disabled);
- $('#'+form_id+' .submit').attr(SN.C.S.Disabled, SN.C.S.Disabled);
- },
- error: function (xhr, textStatus, errorThrown) {
- alert(errorThrown || textStatus);
- },
- success: function(data, textStatus) {
- if (typeof($('form', data)[0]) != 'undefined') {
- form_new = document._importNode($('form', data)[0], true);
- $('#'+form_id).replaceWith(form_new);
- $('#'+form_new.id).each(function() { SN.U.FormXHR($(this)); });
- }
- else {
- $('#'+form_id).replaceWith(document._importNode($('p', data)[0], true));
+ if (jQuery.data(f[0], "ElementData") === undefined) {
+ jQuery.data(f[0], "ElementData", {Bind:'submit'});
+ f.bind('submit', function(e) {
+ form_id = $(this)[0].id;
+ $.ajax({
+ type: 'POST',
+ dataType: 'xml',
+ url: $(this)[0].action,
+ data: $(this).serialize() + '&ajax=1',
+ beforeSend: function(xhr) {
+ $('#'+form_id).addClass(SN.C.S.Processing);
+ $('#'+form_id+' .submit').addClass(SN.C.S.Disabled);
+ $('#'+form_id+' .submit').attr(SN.C.S.Disabled, SN.C.S.Disabled);
+ },
+ error: function (xhr, textStatus, errorThrown) {
+ alert(errorThrown || textStatus);
+ },
+ success: function(data, textStatus) {
+ if (typeof($('form', data)[0]) != 'undefined') {
+ form_new = document._importNode($('form', data)[0], true);
+ $('#'+form_id).replaceWith(form_new);
+ $('#'+form_new.id).each(function() { SN.U.FormXHR($(this)); });
+ }
+ else {
+ $('#'+form_id).replaceWith(document._importNode($('p', data)[0], true));
+ }
}
- }
+ });
+ return false;
});
- return false;
- });
+ }
},
FormNoticeXHR: function(form) {
@@ -182,7 +185,7 @@ var SN = { // StatusNet
$('#'+form_id+' #'+SN.C.S.NoticeActionSubmit).removeClass(SN.C.S.Disabled);
$('#'+form_id+' #'+SN.C.S.NoticeActionSubmit).removeAttr(SN.C.S.Disabled, SN.C.S.Disabled);
if (textStatus == 'timeout') {
- alert ('Sorry! We had trouble sending your notice. The servers are overloaded. Please try again, and contact the site administrator if this problem persists');
+ form.append('<p class="error>Sorry! We had trouble sending your notice. The servers are overloaded. Please try again, and contact the site administrator if this problem persists.</p>');
}
else {
if ($('.'+SN.C.S.Error, xhr.responseXML).length > 0) {
@@ -190,7 +193,7 @@ var SN = { // StatusNet
}
else {
if(jQuery.inArray(parseInt(xhr.status), SN.C.I.HTTP20x30x) < 0) {
- alert('Sorry! We had trouble sending your notice ('+xhr.status+' '+xhr.statusText+'). Please report the problem to the site administrator if this happens again.');
+ form.append('<p class="error>(Sorry! We had trouble sending your notice ('+xhr.status+' '+xhr.statusText+'). Please report the problem to the site administrator if this happens again.</p>');
}
else {
$('#'+form_id+' #'+SN.C.S.NoticeDataText).val('');
@@ -202,8 +205,9 @@ var SN = { // StatusNet
success: function(data, textStatus) {
var result;
if ($('#'+SN.C.S.Error, data).length > 0) {
- result = document._importNode($('p', data)[0], true);
- alert(result.textContent || result.innerHTML);
+ result = document._importNode($('p', data)[0], true);
+ result = result.textContent || result.innerHTML;
+ form.append('<p class="error">'+result+'</p>');
}
else {
if($('body')[0].id == 'bookmarklet') {
@@ -212,7 +216,8 @@ var SN = { // StatusNet
if ($('#'+SN.C.S.CommandResult, data).length > 0) {
result = document._importNode($('p', data)[0], true);
- alert(result.textContent || result.innerHTML);
+ result = result.textContent || result.innerHTML;
+ form.append('<p class="success">'+result+'</p>');
}
else {
notice = document._importNode($('li', data)[0], true);
@@ -230,9 +235,9 @@ var SN = { // StatusNet
}
$('#'+notice.id).css({display:'none'});
$('#'+notice.id).fadeIn(2500);
- SN.U.NoticeAttachments();
- SN.U.NoticeReply();
- SN.U.NoticeFavor();
+ SN.U.NoticeWithAttachment($('#'+notice.id));
+ SN.U.NoticeReplyTo($('#'+notice.id));
+ SN.U.FormXHR($('#'+notice.id+' .form_favor'));
}
}
$('#'+form_id+' #'+SN.C.S.NoticeDataText).val('');
@@ -252,13 +257,20 @@ var SN = { // StatusNet
NoticeReply: function() {
if ($('#'+SN.C.S.NoticeDataText).length > 0 && $('#content .notice_reply').length > 0) {
- $('#content .notice').each(function() {
- var notice = $(this)[0];
- $($('.notice_reply', notice)[0]).click(function() {
- var nickname = ($('.author .nickname', notice).length > 0) ? $($('.author .nickname', notice)[0]) : $('.author .nickname.uid');
- SN.U.NoticeReplySet(nickname.text(), $($('.notice_id', notice)[0]).text());
- return false;
- });
+ $('#content .notice').each(function() { SN.U.NoticeReplyTo($(this)); });
+ }
+ },
+
+ NoticeReplyTo: function(notice_item) {
+ var notice = notice_item[0];
+ var notice_reply = $('.notice_reply', notice)[0];
+
+ if (jQuery.data(notice_reply, "ElementData") === undefined) {
+ jQuery.data(notice_reply, "ElementData", {Bind:'submit'});
+ $(notice_reply).bind('click', function() {
+ var nickname = ($('.author .nickname', notice).length > 0) ? $($('.author .nickname', notice)[0]) : $('.author .nickname.uid');
+ SN.U.NoticeReplySet(nickname.text(), $($('.notice_id', notice)[0]).text());
+ return false;
});
}
},
@@ -266,19 +278,18 @@ var SN = { // StatusNet
NoticeReplySet: function(nick,id) {
if (nick.match(SN.C.I.PatternUsername)) {
var text = $('#'+SN.C.S.NoticeDataText);
- if (text.length) {
+ if (text.length > 0) {
replyto = '@' + nick + ' ';
text.val(replyto + text.val().replace(RegExp(replyto, 'i'), ''));
- $('#'+SN.C.S.FormNotice+' input#'+SN.C.S.NoticeInReplyTo).val(id);
+ $('#'+SN.C.S.FormNotice+' #'+SN.C.S.NoticeInReplyTo).val(id);
+
+ text[0].focus();
if (text[0].setSelectionRange) {
var len = text.val().length;
text[0].setSelectionRange(len,len);
- text[0].focus();
}
- return false;
}
}
- return true;
},
NoticeFavor: function() {
@@ -287,13 +298,25 @@ var SN = { // StatusNet
},
NoticeAttachments: function() {
+ $('.notice a.attachment').each(function() {
+ SN.U.NoticeWithAttachment($(this).closest('.notice'));
+ });
+ },
+
+ NoticeWithAttachment: function(notice) {
+ if ($('.attachment', notice).length === 0) {
+ return;
+ }
+
+ var notice_id = notice.attr('id');
+
$.fn.jOverlay.options = {
method : 'GET',
data : '',
url : '',
color : '#000',
opacity : '0.6',
- zIndex : 99,
+ zIndex : 9999,
center : false,
imgLoading : $('address .url')[0].href+'theme/base/images/illustrations/illu_progress_loading-01.gif',
bgClickToClose : true,
@@ -306,13 +329,13 @@ var SN = { // StatusNet
css : {'max-width':'542px', 'top':'5%', 'left':'32.5%'}
};
- $('#content .notice a.attachment').click(function() {
+ $('#'+notice_id+' a.attachment').click(function() {
$().jOverlay({url: $('address .url')[0].href+'attachment/' + ($(this).attr('id').substring('attachment'.length + 1)) + '/ajax'});
return false;
});
var t;
- $("body:not(#shownotice) #content .notice a.thumbnail").hover(
+ $("body:not(#shownotice) #"+notice_id+" a.thumbnail").hover(
function() {
var anchor = $(this);
$("a.thumbnail").children('img').hide();
@@ -365,9 +388,10 @@ var SN = { // StatusNet
NewDirectMessage: function() {
NDM = $('.entity_send-a-message a');
NDM.attr({'href':NDM.attr('href')+'&ajax=1'});
- NDM.click(function() {
+ NDM.bind('click', function() {
var NDMF = $('.entity_send-a-message form');
if (NDMF.length === 0) {
+ $(this).addClass('processing');
$.get(NDM.attr('href'), null, function(data) {
$('.entity_send-a-message').append(document._importNode($('form', data)[0], true));
NDMF = $('.entity_send-a-message .form_notice');
@@ -378,6 +402,7 @@ var SN = { // StatusNet
NDMF.hide();
return false;
});
+ NDM.removeClass('processing');
});
}
else {