|
|
/**
|
|
|
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
|
|
|
*/
|
|
|
var tooltip_activate = function(){
|
|
|
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,
|
|
|
});
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* show more
|
|
|
*/
|
|
|
var show_more_event = function(){
|
|
|
YUE.on(YUD.getElementsByClassName('show_more'),'click',function(e){
|
|
|
var el = e.target;
|
|
|
YUD.setStyle(YUD.get(el.id.substring(1)),'display','');
|
|
|
YUD.setStyle(el.parentNode,'display','none');
|
|
|
});
|
|
|
}
|
|
|
|
|
|
|