diff rhodecode/public/js/rhodecode.js @ 1421:c6b811f11c94 beta

Javascripts rewrite: updated yui to latest 2.9, simplified ajax loading for multiple pages. Removed YUI dev package
author Marcin Kuzminski <marcin@python-works.com>
date Sat, 09 Jul 2011 20:07:59 +0200
parents
children 91708b96e991
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rhodecode/public/js/rhodecode.js	Sat Jul 09 20:07:59 2011 +0200
@@ -0,0 +1,138 @@
+/**
+RhodeCode JS Files
+**/
+
+if (typeof console == "undefined" || typeof console.log == "undefined"){
+	console = { log: function() {} }
+}
+
+
+function str_repeat(i, m) {
+	for (var o = []; m > 0; o[--m] = i);
+	return o.join('');
+}
+
+/**
+ * INJECT .format function into String
+ * Usage: "My name is {0} {1}".format("Johny","Bravo")
+ * Return "My name is Johny Bravo"
+ * Inspired by https://gist.github.com/1049426
+ */
+String.prototype.format = function() {
+	  
+	  function format() {
+	    var str = this;
+	    var len = arguments.length+1;
+	    var safe = undefined;
+	    var arg = undefined;
+	    
+	    // For each {0} {1} {n...} replace with the argument in that position.  If 
+	    // the argument is an object or an array it will be stringified to JSON.
+	    for (var i=0; i < len; arg = arguments[i++]) {
+	      safe = typeof arg === 'object' ? JSON.stringify(arg) : arg;
+	      str = str.replace(RegExp('\\{'+(i-1)+'\\}', 'g'), safe);
+	    }
+	    return str;
+	  }
+
+	  // Save a reference of what may already exist under the property native.  
+	  // Allows for doing something like: if("".format.native) { /* use native */ }
+	  format.native = String.prototype.format;
+
+	  // Replace the prototype property
+	  return format;
+
+	}();
+
+/**
+ * GLOBAL YUI Shortcuts
+ */
+var YUC = YAHOO.util.Connect;
+var YUD = YAHOO.util.Dom;
+var YUE = YAHOO.util.Event;
+var YUQ = YAHOO.util.Selector.query;
+
+// defines if push state is enabled for this browser ?
+var push_state_enabled = Boolean(
+		window.history && window.history.pushState && window.history.replaceState
+		&& !(   /* disable for versions of iOS before version 4.3 (8F190) */
+				(/ Mobile\/([1-7][a-z]|(8([abcde]|f(1[0-8]))))/i).test(navigator.userAgent)
+				/* disable for the mercury iOS browser, or at least older versions of the webkit engine */
+				|| (/AppleWebKit\/5([0-2]|3[0-2])/i).test(navigator.userAgent)
+		)
+)
+
+/**
+ * Partial Ajax Implementation
+ * 
+ * @param url: defines url to make partial request
+ * @param container: defines id of container to input partial result
+ * @param s_call: success callback function that takes o as arg
+ *  o.tId
+ *  o.status
+ *  o.statusText
+ *  o.getResponseHeader[ ]
+ *  o.getAllResponseHeaders
+ *  o.responseText
+ *  o.responseXML
+ *  o.argument
+ * @param f_call: failure callback
+ * @param args arguments 
+ */
+function ypjax(url,container,s_call,f_call,args){
+	var method='GET';
+	if(args===undefined){
+		args=null;
+	}
+	
+	// Set special header for partial ajax == HTTP_X_PARTIAL_XHR
+	YUC.initHeader('X-PARTIAL-XHR',true);
+	
+	// wrapper of passed callback
+	var s_wrapper = (function(o){
+		return function(o){
+			YUD.get(container).innerHTML=o.responseText;
+			YUD.setStyle(container,'opacity','1.0');
+    		//execute the given original callback
+    		if (s_call !== undefined){
+    			s_call(o);
+    		}
+		}
+	})()	
+	YUD.setStyle(container,'opacity','0.3');
+	YUC.asyncRequest(method,url,{
+		success:s_wrapper,
+		failure:function(o){
+			//failure
+			window.location = url;
+		}
+	},args);
+	
+}
+
+/**
+ * tooltip activate
+ */
+function tooltip_activate(){
+    function toolTipsId(){
+        var ids = [];
+        var tts = YUQ('.tooltip');
+        for (var i = 0; i < tts.length; i++) {
+            // if element doesn't not have and id 
+        	//  autogenerate one for tooltip 
+            if (!tts[i].id){
+                tts[i].id='tt'+((i*100)+tts.length);
+            }
+            ids.push(tts[i].id);
+        }
+        return ids
+    };
+    var myToolTips = new YAHOO.widget.Tooltip("tooltip", {
+        context: [[toolTipsId()],"tl","bl",null,[0,5]],
+        monitorresize:false,
+        xyoffset :[0,0],
+        autodismissdelay:300000,
+        hidedelay:5,
+        showdelay:20,
+    });
+}