var script_loaded = true;
var loading_scripts = false;
var load_timeout = 15000; //15 sec
function displayLoading() {
var div = document.createElement('div');
div.id = 'loading_div';
div.innerHTML = '<img src="static_core/images/indicator.gif" /><br />Loading scripts... Please wait.';
div.style.cssText = 'border: 1px solid #999; position: absolute; width: 300px; background-color: #eee; padding: 10px;';
var t;
if (document.documentElement && document.documentElement.scrollTop)
t = document.documentElement.scrollTop;
else if (document.body)
t = document.body.scrollTop;
var body = document.getElementsByTagName('body')[0];
div.style.left = (body.offsetWidth/2) - 150 + 'px';
div.style.top = (t + 100) + "px";
body.appendChild(div);
}
function hideLoading() {
var body = document.getElementsByTagName('body')[0];
body.removeChild(document.getElementById('loading_div'));
}
function onDemand(fn_str, srcs) {
return function() {
if(window.loading_scripts) {
return ;
}
window.loading_scripts = true;
displayLoading();
var args = arguments;
var current_time = 0;
var current_script;
var load_script = function() {
if(current_time >= load_timeout) {
alert("Could not load JavaScript: " + current_script);
return;
}
if(script_loaded == true) {
if(srcs.length != 0) {
script_loaded = false;
current_time = 0;
var head = document.getElementsByTagName("head")[0];
var script = document.createElement("script");
current_script = srcs.shift();
script.src = current_script;
head.appendChild(script);
}
else {
window.loading_scripts = false;
hideLoading();
return eval(fn_str + ".apply(window, args);");
}
}
current_time += 25;
window.setTimeout(load_script, 25);
}
load_script();
return false;
}
}
function getHostName() {
var left = PageOracle.getBaseURL().replace(/http:\/\/[^\/]*/, '') + '/';
return "http://" + window.location.host + left;
}
var p_ajs = getHostName()+'static_core/scripts/general/AJS.js';
var p_ajs_adapter = getHostName()+'static_core/scripts/general/AJS_adapter.js';
var p_ajs_fx = getHostName()+'static_core/scripts/general/AJS_fx.js';
var path_ajs = [p_ajs, p_ajs_adapter, p_ajs_fx];
var path_greybox = getHostName()+'static_core/greybox/gb_scripts.js';
GB_ROOT_DIR = getHostName() + "static_core/greybox/";
GB_show = onDemand("GB_show", path_ajs.concat(path_greybox));
GB_showFullScreen = onDemand("GB_showFullScreen", path_ajs.concat(path_greybox));
GB_showImage = onDemand("GB_showImage", path_ajs.concat(path_greybox));
function showLogin() {
var url = getHostName() + "users/showLogin";
GB_show("Login into the system", url, 250, 350);
return false;
}
function skKeys(e) {
if(!e)
e = window.event;
var target;
if(e.target)
target = e.target;
else if (e.srcElement) 
target = e.srcElement;
var nn = target.nodeName.toLowerCase();
if(nn == 'textarea' || nn == 'input')
return true;
e.key = e.keyCode ? e.keyCode : e.charCode;
if((e.key == 101 || e.key == 69 || e.key == 5) && e.ctrlKey) {
if(!PageOracle.isLoggedIn()) {
if(window.GB_CURRENT) {
return false;
}
showLogin();
}
else {
window.location = PageOracle.getBaseURL() + '/users/setLogout?id=' + PageOracle.getPageId();
}
}
}
if (document.attachEvent) {
document.attachEvent("onkeypress", skKeys);
}
else {
document.addEventListener('keypress', skKeys, false);
}
if(!AJS) {
var AJS = {
BASE_URL: "",
ajaxErrorHandler: null,
getQueryArgument: function(var_name) {
var query = window.location.search.substring(1);
var vars = query.split("&");
for (var i=0;i<vars.length;i++) {
var pair = vars[i].split("=");
if (pair[0] == var_name) {
return pair[1];
}
}
return null;
},
isIe: function() {
return (navigator.userAgent.toLowerCase().indexOf("msie") != -1 && navigator.userAgent.toLowerCase().indexOf("opera") == -1);
},
isNetscape7: function() {
return (navigator.userAgent.toLowerCase().indexOf("netscape") != -1 && navigator.userAgent.toLowerCase().indexOf("7.") != -1);
},
isSafari: function() {
return (navigator.userAgent.toLowerCase().indexOf("khtml") != -1);
},
isOpera: function() {
return (navigator.userAgent.toLowerCase().indexOf("opera") != -1);
},
isMozilla: function() {
return (navigator.userAgent.toLowerCase().indexOf("gecko") != -1 && navigator.productSub >= 20030210);
},
isMac: function() {
return (navigator.userAgent.toLowerCase().indexOf('macintosh') != -1);
},
isCamino: function() {
return (navigator.userAgent.toLowerCase().indexOf("camino") != -1);
},
createArray: function(v) {
if(AJS.isArray(v) && !AJS.isString(v))
return v;
else if(!v)
return [];
else
return [v];
},
forceArray: function(args) {
var r = [];
AJS.map(args, function(elm) {
r.push(elm);
});
return r;
},
join: function(delim, list) {
try {
return list.join(delim);
}
catch(e) {
var r = list[0] || '';
AJS.map(list, function(elm) {
r += delim + elm;
}, 1);
return r + '';
}
},
isIn: function(elm, list) {
var i = AJS.getIndex(elm, list);
if(i != -1)
return true;
else
return false;
},
getIndex: function(elm, list/*optional*/, eval_fn) {
for(var i=0; i < list.length; i++)
if(eval_fn && eval_fn(list[i]) || elm == list[i])
return i;
return -1;
},
getFirst: function(list) {
if(list.length > 0)
return list[0];
else
return null;
},
getLast: function(list) {
if(list.length > 0)
return list[list.length-1];
else
return null;
},
update: function(l1, l2) {
for(var i in l2)
l1[i] = l2[i];
return l1;
},
flattenList: function(list) {
var non_arrays = true;
map(list, function(elm) {
if(elm && AJS.isArray(elm)) {
non_arrays = false;
return true;
}
});
if(non_arrays)
return list;
var has_list = false;
var new_list = [];
for(var i=0; i < list.length; i++) {
var elm = list[i];
if(AJS.isArray(elm)) {
has_list = true;
break;
}
if(elm != null)
new_list.push(elm);
}
if(!has_list)
return new_list;
var r = [];
var _flatten = function(r, l) {
AJS.map(l, function(o) {
if(o == null) {
}
else if (AJS.isArray(o))
_flatten(r, o);
else
r.push(o);
});
}
_flatten(r, list);
return r;
},
flattenElmArguments: function(args) {
return AJS.flattenList(AJS.forceArray(args));
},
map: function(list, fn,/*optional*/ start_index, end_index) {
var i = 0, l = list.length;
if(start_index)
i = start_index;
if(end_index)
l = end_index;
for(i; i < l; i++) {
var val = fn(list[i], i);
if(val != undefined)
return val;
}
},
rmap: function(list, fn) {
var i = list.length-1, l = 0;
for(i; i >= l; i--) {
var val = fn.apply(null, [list[i], i]);
if(val != undefined)
return val;
}
},
filter: function(list, fn, /*optional*/ start_index, end_index) {
var r = [];
AJS.map(list, function(elm) {
if(fn(elm))
r.push(elm);
}, start_index, end_index);
return r;
},
partial: function(fn) {
var args = AJS.$FA(arguments);
args.shift();
return function() {
args = args.concat(AJS.$FA(arguments));
return fn.apply(window, args);
}
},
getElement: function(id) {
if(AJS.isString(id) || AJS.isNumber(id))
return document.getElementById(id);
else
return id;
},
getElements: function(/*id1, id2, id3*/) {
var args = AJS.forceArray(arguments);
var elements = new Array();
for (var i = 0; i < args.length; i++) {
var element = AJS.getElement(args[i]);
elements.push(element);
}
return elements;
},
getElementsByTagAndClassName: function(tag_name, class_name, /*optional*/ parent, first_match) {
var class_elements = [];
if(!AJS.isDefined(parent))
parent = document;
if(!AJS.isDefined(tag_name))
tag_name = '*';
var els = parent.getElementsByTagName(tag_name);
var els_len = els.length;
var pattern = new RegExp("(^|\\s)" + class_name + "(\\s|$)");
for (i = 0, j = 0; i < els_len; i++) {
if ( pattern.test(els[i].className) || class_name == null ) {
class_elements[j] = els[i];
j++;
}
}
if(first_match)
return class_elements[0];
else
return class_elements;
},
nodeName: function(elm) {
return elm.nodeName.toLowerCase();
},
_nodeWalk: function(elm, tag_name, class_name, fn_next_elm) {
var p = fn_next_elm(elm);
var checkFn;
if(tag_name && class_name) {
checkFn = function(p) {
return AJS.nodeName(p) == tag_name && AJS.hasClass(p, class_name);
}
}
else if(tag_name) {
checkFn = function(p) { return AJS.nodeName(p) == tag_name; }
}
else {
checkFn = function(p) { return AJS.hasClass(p, class_name); }
}
while(p) {
if(checkFn(p))
return p;
p = fn_next_elm(p);
}
return null;
},
getParentBytc: function(elm, tag_name, class_name) {
return AJS._nodeWalk(elm, tag_name, class_name, function(m) { return m.parentNode; });
},
hasParent: function(elm, parent_to_consider, max_look_up) {
if(elm == parent_to_consider)
return true;
if(max_look_up == 0)
return false;
return AJS.hasParent(elm.parentNode, parent_to_consider, max_look_up-1);
},
getPreviousSiblingBytc: function(elm, tag_name, class_name) {
return AJS._nodeWalk(elm, tag_name, class_name, function(m) { return m.previousSibling; });
},
getNextSiblingBytc: function(elm, tag_name, class_name) {
return AJS._nodeWalk(elm, tag_name, class_name, function(m) { return m.nextSibling; });
},
getBody: function() {
return AJS.$bytc('body')[0]
},
getFormElement: function(form, name) {
form = AJS.$(form);
var r = null;
AJS.map(form.elements, function(elm) {
if(elm.name && elm.name == name)
r = elm;
});
if(r)
return r;
AJS.map(AJS.$bytc('select', null, form), function(elm) {
if(elm.name && elm.name == name)
r = elm;
});
return r;
},
formContents: function(form) {
var form = AJS.$(form);
var r = {};
var fn = function(elms) {
AJS.map(elms, function(e) {
if(e.name)
r[e.name] = e.value || '';
});
}
fn(AJS.$bytc('input', null, form));
fn(AJS.$bytc('textarea', null, form));
return r;
},
getSelectValue: function(select) {
var select = AJS.$(select);
return select.options[select.selectedIndex].value;
},
documentInsert: function(elm) {
if(typeof(elm) == 'string')
elm = AJS.HTML2DOM(elm);
document.write('<span id="dummy_holder"></span>');
AJS.swapDOM(AJS.$('dummy_holder'), elm);
},
cloner: function(element) {
return function() {
return element.cloneNode(true);
}
},
appendChildNodes: function(elm/*, elms...*/) {
if(arguments.length >= 2) {
AJS.map(arguments, function(n) {
if(AJS.isString(n))
n = AJS.TN(n);
if(AJS.isDefined(n))
elm.appendChild(n);
}, 1);
}
return elm;
},
appendToTop: function(elm/*, elms...*/) {
var args = AJS.forceArray(arguments).slice(1);
if(args.length >= 1) {
var first_child = elm.firstChild;
if(first_child) {
while(true) {
var t_elm = args.shift();
if(t_elm)
AJS.insertBefore(t_elm, first_child);
else
break;
}
}
else {
AJS.ACN.apply(null, arguments);
}
}
return elm;
},
replaceChildNodes: function(elm/*, elms...*/) {
var child;
while ((child = elm.firstChild))
elm.removeChild(child);
if (arguments.length < 2)
return elm;
else
return AJS.appendChildNodes.apply(null, arguments);
return elm;
},
insertAfter: function(elm, reference_elm) {
reference_elm.parentNode.insertBefore(elm, reference_elm.nextSibling);
return elm;
},
insertBefore: function(elm, reference_elm) {
reference_elm.parentNode.insertBefore(elm, reference_elm);
return elm;
},
swapDOM: function(dest, src) {
dest = AJS.getElement(dest);
var parent = dest.parentNode;
if (src) {
src = AJS.getElement(src);
parent.replaceChild(src, dest);
} else {
parent.removeChild(dest);
}
return src;
},
removeElement: function(/*elm1, elm2...*/) {
var args = AJS.forceArray(arguments);
AJS.map(args, function(elm) { AJS.swapDOM(elm, null); });
},
createDOM: function(name, attrs) {
var i=0, attr;
var elm = document.createElement(name);
var first_attr = attrs[0];
if(AJS.isDict(attrs[i])) {
for(k in first_attr) {
attr = first_attr[k];
if(k == 'style' || k == 's')
elm.style.cssText = attr;
else if(k == 'c' || k == 'class' || k == 'className')
elm.className = attr;
else {
elm.setAttribute(k, attr);
}
}
i++;
}
if(first_attr == null)
i = 1;
for(var j=i; j < attrs.length; j++) {
var attr = attrs[j];
if(attr) {
var type = typeof(attr);
if(type == 'string' || type == 'number')
attr = AJS.TN(attr);
elm.appendChild(attr);
}
}
return elm;
},
_createDomShortcuts: function() {
var elms = [
"ul", "li", "td", "tr", "th",
"tbody", "table", "input", "span", "b",
"a", "div", "img", "button", "h1",
"h2", "h3", "h4", "h5", "h6", "br", "textarea", "form",
"p", "select", "option", "optgroup", "iframe", "script",
"center", "dl", "dt", "dd", "small",
"pre", 'i'
];
var extends_ajs = function(elm) {
AJS[elm.toUpperCase()] = function() {
return AJS.createDOM.apply(null, [elm, arguments]); 
};
}
AJS.map(elms, extends_ajs);
AJS.TN = function(text) { return document.createTextNode(text) };
},
setHTML: function(elm, html) {
elm.innerHTML = html;
return elm;
},
showElement: function(/*elms...*/) {
var args = AJS.forceArray(arguments);
AJS.map(args, function(elm) { elm.style.display = ''});
},
hideElement: function(elm) {
var args = AJS.forceArray(arguments);
AJS.map(args, function(elm) { elm.style.display = 'none'});
},
isElementHidden: function(elm) {
return ((elm.style.display == "none") || (elm.style.visibility == "hidden"));
},
setVisibility: function(/*elms..., val*/) {
var args = AJS.flattenElmArguments(arguments);
var val = args.pop() && 'visible' || 'hidden';
AJS.setStyle(args, 'visibility', val);
},
getCssDim: function(dim) {
if(AJS.isString(dim))
return dim;
else
return dim + "px";
},
getCssProperty: function(elm, prop) {
elm = AJS.$(elm);
var y;
if(elm.currentStyle)
y = elm.currentStyle[prop];
else if (window.getComputedStyle)
y = document.defaultView.getComputedStyle(elm,null).getPropertyValue(prop);
return y;
},
setStyle: function(/*elm1, elm2..., property, new_value*/) {
var args = AJS.forceArray(arguments);
var new_val = args.pop();
var property = args.pop();
AJS.map(args, function(elm) { 
elm.style[property] = AJS.getCssDim(new_val);
});
},
setWidth: function(/*elm1, elm2..., width*/) {
var args = AJS.forceArray(arguments);
args.splice(args.length-1, 0, 'width');
AJS.setStyle.apply(null, args);
},
setHeight: function(/*elm1, elm2..., height*/) {
var args = AJS.forceArray(arguments);
args.splice(args.length-1, 0, 'height');
AJS.setStyle.apply(null, args);
},
setLeft: function(/*elm1, elm2..., left*/) {
var args = AJS.forceArray(arguments);
args.splice(args.length-1, 0, 'left');
AJS.setStyle.apply(null, args);
},
setTop: function(/*elm1, elm2..., top*/) {
var args = AJS.forceArray(arguments);
args.splice(args.length-1, 0, 'top');
AJS.setStyle.apply(null, args);
},
setClass: function(/*elm1, elm2..., className*/) {
var args = AJS.forceArray(arguments);
var c = args.pop();
AJS.map(args, function(elm) { elm.className = c});
},
addClass: function(/*elm1, elm2..., className*/) {
var args = AJS.forceArray(arguments);
var cls = args.pop();
var add_class = function(o) {
if(!new RegExp("(^|\\s)" + cls + "(\\s|$)").test(o.className))
o.className += (o.className ? " " : "") + cls;
};
AJS.map(args, function(elm) { add_class(elm); });
},
hasClass: function(elm, cls) {
if(!elm.className)
return false;
return elm.className == cls || 
elm.className.search(new RegExp(" " + cls + "|^" + cls)) != -1
},
removeClass: function(/*elm1, elm2..., className*/) {
var args = AJS.forceArray(arguments);
var cls = args.pop();
var rm_class = function(o) {
o.className = o.className.replace(new RegExp("\\s?" + cls, 'g'), "");
};
AJS.map(args, function(elm) { rm_class(elm); });
},
setOpacity: function(elm, p) {
elm.style.opacity = p;
elm.style.filter = "alpha(opacity="+ p*100 +")";
},
resetOpacity: function(elm) {
elm.style.opacity = 1;
elm.style.filter = "";
},
RND: function(tmpl, ns, scope) {
scope = scope || window;
var fn = function(w, g) {
g = g.split("|");
var cnt = ns[g[0]];
for(var i=1; i < g.length; i++)
cnt = scope[g[i]](cnt);
if(cnt == '')
return '';
if(cnt == 0 || cnt == -1)
cnt += '';
return cnt || w;
};
return tmpl.replace(/%\(([A-Za-z0-9_|.]*)\)/g, fn);
},
HTML2DOM: function(html,/*optional*/ first_child) {
var d = AJS.DIV();
d.innerHTML = html;
if(first_child)
return d.childNodes[0];
else
return d;
},
preloadImages: function(/*img_src1, ..., img_srcN*/) {
AJS.AEV(window, 'load', AJS.$p(function(args) {
AJS.map(args, function(src) {
var pic = new Image();
pic.src = src;
});
}, arguments));
},
getXMLHttpRequest: function() {
var try_these = [
function () { return new XMLHttpRequest(); },
function () { return new ActiveXObject('Msxml2.XMLHTTP'); },
function () { return new ActiveXObject('Microsoft.XMLHTTP'); },
function () { return new ActiveXObject('Msxml2.XMLHTTP.4.0'); },
function () { throw "Browser does not support XMLHttpRequest"; }
];
for (var i = 0; i < try_these.length; i++) {
var func = try_these[i];
try {
return func();
} catch (e) {
}
}
},
getRequest: function(url, data, type) {
if(!type)
type = "POST";
var req = AJS.getXMLHttpRequest();
if(url.match(/^https?:\/\//) == null) {
if(AJS.BASE_URL != '') {
if(AJS.BASE_URL.lastIndexOf('/') != AJS.BASE_URL.length-1)
AJS.BASE_URL += '/';
url = AJS.BASE_URL + url;
}
}
req.open(type, url, true);
if(type == "POST")
req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
return AJS._sendXMLHttpRequest(req);
},
_sendXMLHttpRequest: function(req, data) {
var d = new AJSDeferred(req);
var onreadystatechange = function () {
if (req.readyState == 4) {
var status = '';
try {
status = req.status;
}
catch(e) {};
if(status == 200 || status == 304 || req.responseText == null) {
d.callback();
}
else {
if(d.errbacks.length == 0) {
if(AJS.ajaxErrorHandler)
AJS.ajaxErrorHandler(req.responseText, req);
}
else 
d.errback();
}
}
}
req.onreadystatechange = onreadystatechange;
return d;
},
_reprString: function(o) {
return ('"' + o.replace(/(["\\])/g, '\\$1') + '"'
).replace(/[\f]/g, "\\f"
).replace(/[\b]/g, "\\b"
).replace(/[\n]/g, "\\n"
).replace(/[\t]/g, "\\t"
).replace(/[\r]/g, "\\r");
},
_reprDate: function(db) {
var year = db.getFullYear();
var dd = db.getDate();
var mm = db.getMonth()+1;
var hh = db.getHours();
var mins = db.getMinutes();
function leadingZero(nr) {
if (nr < 10) nr = "0" + nr;
return nr;
}
if(hh == 24) hh = '00';
var time = leadingZero(hh) + ':' + leadingZero(mins);
return '"' + year + '-' + mm + '-' + dd + 'T' + time + '"';
},
serializeJSON: function(o) {
var objtype = typeof(o);
if (objtype == "undefined") {
return "undefined";
} else if (objtype == "number" || objtype == "boolean") {
return o + "";
} else if (o === null) {
return "null";
}
if (objtype == "string") {
return AJS._reprString(o);
}
if(objtype == 'object' && o.getFullYear) {
return AJS._reprDate(o);
}
var me = arguments.callee;
if (objtype != "function" && typeof(o.length) == "number") {
var res = [];
for (var i = 0; i < o.length; i++) {
var val = me(o[i]);
if (typeof(val) != "string") {
val = "undefined";
}
res.push(val);
}
return "[" + res.join(",") + "]";
}
if (objtype == "function")
return null;
res = [];
for (var k in o) {
var useKey;
if (typeof(k) == "number") {
useKey = '"' + k + '"';
} else if (typeof(k) == "string") {
useKey = AJS._reprString(k);
} else {
continue;
}
val = me(o[k]);
if (typeof(val) != "string") {
continue;
}
res.push(useKey + ":" + val);
}
return "{" + res.join(",") + "}";
},
loadJSONDoc: function(url) {
var d = AJS.getRequest(url);
var eval_req = function(data, req) {
var text = req.responseText;
if(text == "Error")
d.errback(req);
else
return AJS.evalTxt(text);
};
d.addCallback(eval_req);
return d;
},
evalTxt: function(txt) {
try {
return eval('('+ txt + ')');
}
catch(e) {
return eval(txt);
}
},
evalScriptTags: function(html) {
var script_data = html.match(/<script.*?>((\n|\r|.)*?)<\/script>/g);
if(script_data != null) {
for(var i=0; i < script_data.length; i++) {
var script_only = script_data[i].replace(/<script.*?>/g, "");
script_only = script_only.replace(/<\/script>/g, "");
eval(script_only);
}
}
},
queryArguments: function(data) {
var post_data = [];
for(k in data)
post_data.push(k + "=" + AJS.urlencode(data[k]));
return post_data.join("&");
},
getMousePos: function(e) {
var posx = 0;
var posy = 0;
if (!e) var e = window.event;
if (e.pageX || e.pageY) {
posx = e.pageX;
posy = e.pageY;
}
else if (e.clientX || e.clientY) {
posx = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
posy = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;
}
return {x: posx, y: posy};
},
getScrollTop: function() {
var t;
if (document.documentElement && document.documentElement.scrollTop)
t = document.documentElement.scrollTop;
else if (document.body)
t = document.body.scrollTop;
return t;
},
absolutePosition: function(elm) {
var posObj = {'x': elm.offsetLeft, 'y': elm.offsetTop};
if(elm.offsetParent) {
var next = elm.offsetParent;
while(next) {
posObj.x += next.offsetLeft;
posObj.y += next.offsetTop;
next = next.offsetParent;
}
}
if (AJS.isSafari() && elm.style.position == 'absolute' ) {
posObj.x -= document.body.offsetLeft;
posObj.y -= document.body.offsetTop;
}
return posObj;
},
getWindowSize: function(doc) {
doc = doc || document;
var win_w, win_h;
if (self.innerHeight) {
win_w = self.innerWidth;
win_h = self.innerHeight;
} else if (doc.documentElement && doc.documentElement.clientHeight) {
win_w = doc.documentElement.clientWidth;
win_h = doc.documentElement.clientHeight;
} else if (doc.body) {
win_w = doc.body.clientWidth;
win_h = doc.body.clientHeight;
}
return {'w': win_w, 'h': win_h};
},
isOverlapping: function(elm1, elm2) {
var pos_elm1 = AJS.absolutePosition(elm1);
var pos_elm2 = AJS.absolutePosition(elm2);
var top1 = pos_elm1.y;
var left1 = pos_elm1.x;
var right1 = left1 + elm1.offsetWidth;
var bottom1 = top1 + elm1.offsetHeight;
var top2 = pos_elm2.y;
var left2 = pos_elm2.x;
var right2 = left2 + elm2.offsetWidth;
var bottom2 = top2 + elm2.offsetHeight;
var getSign = function(v) {
if(v > 0) return "+";
else if(v < 0) return "-";
else return 0;
}
if ((getSign(top1 - bottom2) != getSign(bottom1 - top2)) &&
(getSign(left1 - right2) != getSign(right1 - left2)))
return true;
return false;
},
getEventElm: function(e) {
if(e && !e.type && !e.keyCode)
return e
var targ;
if (!e) var e = window.event;
if (e.target) targ = e.target;
else if (e.srcElement) targ = e.srcElement;
if (targ.nodeType == 3) // defeat Safari bug
targ = targ.parentNode;
return targ;
},
setEventKey: function(e) {
e.key = e.keyCode ? e.keyCode : e.charCode;
if(window.event) {
e.ctrl = window.event.ctrlKey;
e.shift = window.event.shiftKey;
}
else {
e.ctrl = e.ctrlKey;
e.shift = e.shiftKey;
}
switch(e.key) {
case 63232:
e.key = 38;
break;
case 63233:
e.key = 40;
break;
case 63235:
e.key = 39;
break;
case 63234:
e.key = 37;
break;
}
},
ready_bound: false,
is_ready: false,
bindReady: function() {
if ( AJS.ready_bound ) return;
AJS.ready_bound = true;
if ( document.addEventListener ) {
document.addEventListener( "DOMContentLoaded", function(){
document.removeEventListener( "DOMContentLoaded", arguments.callee, false );
AJS.ready();
}, false );
} else if ( document.attachEvent ) {
document.attachEvent("onreadystatechange", function(){
if ( document.readyState === "complete" ) {
document.detachEvent( "onreadystatechange", arguments.callee );
AJS.ready();
}
});
if ( document.documentElement.doScroll && window == window.top ) (function(){
if ( AJS.is_ready ) return;
try {
document.documentElement.doScroll("left");
} catch( error ) {
setTimeout( arguments.callee, 0 );
return;
}
AJS.ready();
})();
}
AJS.AEV( window, "load", AJS.ready );
},
ready_list: [],
ready: function(fn) {
if(AJS.is_ready)
return ;
AJS.is_ready = true;
AJS.map(AJS.ready_list, function(fn) {
fn.call(window);
});
AJS.ready_list = [];
},
_f_guid: 0,
_wipe_guid: 0,
_elms_to_wipe: {},
addEventListener: function(elms, types, handler, listen_once) {
elms = AJS.$A(elms);
types = AJS.$A(types);
AJS.map(elms, function(elm) {
if(listen_once)
handler.listen_once = true;
if (!handler.$f_guid) 
handler.$f_guid = AJS._f_guid++;
if (!elm.events) 
elm.events = {};
AJS.map(types, function(type) {
var handlers = elm.events[type];
if(elm == window && type == 'load') {
AJS.ready_list.push( handler );
}
else {
if(type == 'lazy_load')
type = 'load';
if (!handlers) {
handlers = elm.events[type] = {};
if(elm["on" + type])
handlers[0] = elm["on" + type];
}
if(!elm._wipe_guid) {
elm._wipe_guid = AJS._wipe_guid++;
AJS._elms_to_wipe[elm._wipe_guid] = elm;
}
handlers[handler.$f_guid] = handler;
elm["on" + type] = AJS.handleEvent;
}
});
elm = null;
});
},
handleEvent: function(event) {
var me = this;
event = event || window.event;
if(!event)
return ;
if(!event.ctrl)
AJS.setEventKey(event);
var handlers = this.events[event.type];
var handlers_to_delete = [];
var res = true;
for (var i in handlers) {
var handler = this.$$handleEvent = handlers[i];
res = this.$$handleEvent(event);
if(handler.listen_once)
handlers_to_delete.push(handler);
}
if(handlers_to_delete.length > 0)
AJS.map(handlers_to_delete, function(handler) {
delete me.events[event.type][handler.$f_guid];
});
return res;
},
removeEventListener: function(elms, type, handler) {
elms = AJS.$A(elms);
map(elms, function(elm) {
if (elm.events && elm.events[type]) {
delete elm.events[type][handler.$f_guid];
}
});
},
event_types: ['mouseover', 'mouseout', 'mousemove', 'mousedown',
'mouseup', 'submit',
'click', 'load', 'keypress', 'keyup', 'keydown',
'change'],
cleanUpEvents: function(elm) {
if(elm && elm.getElementsByTagName) {
AJS.map(AJS.event_types, function(type) {
elm['on' + type] = null;
});
elm.events = null;
var wipe_guid = elm._wipe_guid;
if(wipe_guid)
AJS._elms_to_wipe[wipe_guid] = null;
}
},
bind: function(fn, scope, /*optional*/ extra_args) {
fn._cscope = scope;
return AJS._getRealScope(fn, extra_args);
},
bindMethods: function(self) {
for (var k in self) {
var func = self[k];
if (typeof(func) == 'function') {
self[k] = AJS.$b(func, self);
}
}
},
callLater: function(fn, interval) {
var fn_no_send = function() {
fn();
};
window.setTimeout(fn_no_send, interval);
},
preventDefault: function(e) {
if(AJS.isIe()) 
window.event.returnValue = false;
else {
e.preventDefault();
}
},
_listenOnce: function(elm, type, fn) {
var r_fn = function() {
AJS.removeEventListener(elm, type, r_fn);
fn(arguments);
}
return r_fn;
},
_getRealScope: function(fn, /*optional*/ extra_args) {
extra_args = AJS.$A(extra_args);
var scope = fn._cscope || window;
return function() {
var args = AJS.$FA(arguments).concat(extra_args);
return fn.apply(scope, args);
};
},
_unloadListeners: function() {
if(AJS.listeners)
AJS.map(AJS.listeners, function(elm, type, fn) { AJS.REV(elm, type, fn) });
AJS.listeners = [];
},
preloadImages: function(/*img_src1, ..., img_srcN*/) {
var args = AJS.$FA(arguments);
AJS.AEV(window, 'load', function() {
AJS.map(args, function(src) {
var pic = new Image();
pic.src = src;
});
});
},
keys: function(obj) {
var rval = [];
for (var prop in obj) {
rval.push(prop);
}
return rval;
},
values: function(obj) {
var rval = [];
for (var prop in obj) {
rval.push(obj[prop]);
}
return rval;
},
urlencode: function(str) {
return encodeURIComponent(str.toString());
},
isDefined: function(o) {
return (o != "undefined" && o != null)
},
isArray: function(obj) {
return obj instanceof Array;
},
isString: function(obj) {
return (typeof obj == 'string');
},
isNumber: function(obj) {
return (typeof obj == 'number');
},
isObject: function(obj) {
return (typeof obj == 'object');
},
isFunction: function(obj) {
return (typeof obj == 'function');
},
isDict: function(o) {
var str_repr = String(o);
return str_repr.indexOf(" Object") != -1;
},
exportToGlobalScope: function(scope) {
scope = scope || window;
for(e in AJS)
scope[e] = AJS[e];
},
log: function(o) {
if(window.console)
console.log(o);
else {
var div = AJS.$('ajs_logger');
if(!div) {
div = AJS.DIV({id: 'ajs_logger', 'style': 'color: green; position: absolute; left: 0'});
div.style.top = AJS.getScrollTop() + 'px';
AJS.ACN(AJS.getBody(), div);
}
AJS.setHTML(div, ''+o);
}
}
}
AJS.Class = function(members) {
var fn = function() {
if(arguments[0] != 'no_init') {
return this.init.apply(this, arguments);
}
}
fn.prototype = members;
AJS.update(fn, AJS.Class.prototype);
return fn;
}
AJS.Class.prototype = {
extend: function(members) {
var parent = new this('no_init');
for(k in members) {
var prev = parent[k];
var cur = members[k];
if (prev && prev != cur && typeof cur == 'function') {
cur = this._parentize(cur, prev);
}
parent[k] = cur;
}
return new AJS.Class(parent);
},
implement: function(members) {
AJS.update(this.prototype, members);
},
_parentize: function(cur, prev) {
return function(){
this.parent = prev;
return cur.apply(this, arguments);
}
}
};//End class
AJS.$ = AJS.getElement;
AJS.$$ = AJS.getElements;
AJS.$f = AJS.getFormElement;
AJS.$b = AJS.bind;
AJS.$p = AJS.partial;
AJS.$FA = AJS.forceArray;
AJS.$A = AJS.createArray;
AJS.DI = AJS.documentInsert;
AJS.ACN = AJS.appendChildNodes;
AJS.RCN = AJS.replaceChildNodes;
AJS.AEV = AJS.addEventListener;
AJS.REV = AJS.removeEventListener;
AJS.$bytc = AJS.getElementsByTagAndClassName;
AJS.$AP = AJS.absolutePosition;
AJSDeferred = function(req) {
this.callbacks = [];
this.errbacks = [];
this.req = req;
}
AJSDeferred.prototype = {
excCallbackSeq: function(req, list) {
var data = req.responseText;
while (list.length > 0) {
var fn = list.pop();
var new_data = fn(data, req);
if(new_data)
data = new_data;
}
},
callback: function () {
this.excCallbackSeq(this.req, this.callbacks);
},
errback: function() {
if(this.errbacks.length == 0)
alert("Error encountered:\n" + this.req.responseText);
this.excCallbackSeq(this.req, this.errbacks);
},
addErrback: function(fn) {
this.errbacks.unshift(fn);
},
addCallback: function(fn) {
this.callbacks.unshift(fn);
},
abort: function() {
this.req.abort();
},
addCallbacks: function(fn1, fn2) {
this.addCallback(fn1);
this.addErrback(fn2);
},
sendReq: function(data) {
if(AJS.isObject(data)) {
this.req.send(AJS.queryArguments(data));
}
else if(AJS.isDefined(data))
this.req.send(data);
else {
this.req.send("");
}
}
};//End deferred
AJS.addEventListener(window, 'unload', AJS._unloadListeners);
AJS._createDomShortcuts()
AJS.bindReady();
}
script_loaded = true;
try {
AJS.exportToGlobalScope();
AJS.BASE_URL = PageOracle.getBaseURL();
}
catch(e) {
try {
AJS.BASE_URL = parent.parent.PageOracle.getBaseURL();
}
catch(e) {
AJS.BASE_URL = '/';
}
}
finally {
script_loaded = true;
}
AJS.fx = {
_shades: {0: 'ffffff', 1: 'ffffee', 2: 'ffffdd',
3: 'ffffcc', 4: 'ffffbb', 5: 'ffffaa',
6: 'ffff99'},
highlight: function(elm, options) {
var base = new AJS.fx.Base();
base.elm = AJS.$(elm);
base.options.duration = 600;
base.setOptions(options);
AJS.update(base, {
increase: function(){
if(this.now == 7)
elm.style.backgroundColor = '#fff';
else
elm.style.backgroundColor = '#' + AJS.fx._shades[Math.floor(this.now)];
}
});
return base.custom(6, 0);
},
fadeIn: function(elm, options) {
options = options || {};
if(!options.from) {
options.from = 0;
AJS.setOpacity(elm, 0);
}
if(!options.to) options.to = 1;
var s = new AJS.fx.Style(elm, 'opacity', options);
return s.custom(options.from, options.to);
},
fadeOut: function(elm, options) {
options = options || {};
if(!options.from) options.from = 1;
if(!options.to) options.to = 0;
options.duration = 300;
var s = new AJS.fx.Style(elm, 'opacity', options);
return s.custom(options.from, options.to);
},
setWidth: function(elm, options) {
var s = new AJS.fx.Style(elm, 'width', options);
return s.custom(options.from, options.to);
},
setHeight: function(elm, options) {
var s = new AJS.fx.Style(elm, 'height', options);
return s.custom(options.from, options.to);
}
}
AJS.fx.Base = new AJS.Class({
init: function(options) {
this.options = {
onStart: function(){},
onComplete: function(){},
transition: AJS.fx.Transitions.sineInOut,
duration: 500,
wait: true,
fps: 50
};
AJS.update(this.options, options);
AJS.bindMethods(this);
},
setOptions: function(options){
AJS.update(this.options, options);
},
step: function(){
var time = new Date().getTime();
if (time < this.time + this.options.duration){
this.cTime = time - this.time;
this.setNow();
} else {
setTimeout(AJS.$b(this.options.onComplete, this, [this.elm]), 10);
this.clearTimer();
this.now = this.to;
}
this.increase();
},
setNow: function(){
this.now = this.compute(this.from, this.to);
},
compute: function(from, to){
var change = to - from;
return this.options.transition(this.cTime, from, change, this.options.duration);
},
clearTimer: function(){
clearInterval(this.timer);
this.timer = null;
return this;
},
_start: function(from, to){
if (!this.options.wait) this.clearTimer();
if (this.timer) return;
setTimeout(AJS.$p(this.options.onStart, this.elm), 10);
this.from = from;
this.to = to;
this.time = new Date().getTime();
this.timer = setInterval(this.step, Math.round(1000/this.options.fps));
return this;
},
custom: function(from, to){
return this._start(from, to);
},
set: function(to){
this.now = to;
this.increase();
return this;
},
setStyle: function(elm, property, val) {
if(this.property == 'opacity')
AJS.setOpacity(elm, val);
else
AJS.setStyle(elm, property, val);
}
});
AJS.fx.Style = AJS.fx.Base.extend({
init: function(elm, property, options) {
this.parent();
this.elm = elm;
this.setOptions(options);
this.property = property;
},
increase: function(){
this.setStyle(this.elm, this.property, this.now);
}
});
AJS.fx.Styles = AJS.fx.Base.extend({
init: function(elm, options){
this.parent();
this.elm = AJS.$(elm);
this.setOptions(options);
this.now = {};
},
setNow: function(){
for (p in this.from) 
this.now[p] = this.compute(this.from[p], this.to[p]);
},
custom: function(obj){
if (this.timer && this.options.wait) return;
var from = {};
var to = {};
for (p in obj){
from[p] = obj[p][0];
to[p] = obj[p][1];
}
return this._start(from, to);
},
increase: function(){
for (var p in this.now) this.setStyle(this.elm, p, this.now[p]);
}
});
AJS.fx.Transitions = {
linear: function(t, b, c, d) { return c*t/d + b; },
sineInOut: function(t, b, c, d) { return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b; }
};
script_loaded = true;
var AmiTT;
var AmiTT_shown = false;
var AmiTT_alignment = 'left';
var AmiTooltip = {
cur_elm: null,
init: function() {
if(AmiTT)
return ;
AmiTT = AJS.DIV({c: 'AmiTT_main'});
AmiTooltip.updateAlignment();
AJS.hideElement(AmiTT);
AJS.ACN(AJS.getBody(), AmiTT);
AEV(window, 'scroll', function(ev) {
if(AmiTooltip.cur_elm)
AmiTooltip.locate(AmiTooltip.cur_elm);
});
},
updateAlignment: function() {
if(!AmiTT)
return;
try {
removeElement($bytc('div', 'AmiTT_arrow_top', AmiTT));
if(AmiTT_alignment)
appendToTop(AmiTT, DIV({c: 'AmiTT_arrow_top'}, ArrowTop.generate(AmiTT_alignment)));
}
catch(e) {
}
},
setAlignment: function(alignment) {
AmiTT_alignment = alignment;
AmiTooltip.updateAlignment();
},
show: function(elm, content, ev, top_offset, left_offset, include_scroll_top) {
if(include_scroll_top != true)
include_scroll_top = false;
AmiTooltip.cur_elm = elm;
AmiTT_shown = true;
AJS.RCN(AmiTT, content);
AmiTooltip.top_offset = top_offset;
AmiTooltip.left_offset = left_offset;
AmiTooltip.include_scroll_top = include_scroll_top;
AJS.showElement(AmiTT);
AmiTooltip.updateAlignment();
AmiTooltip.locate(elm, ev);
return false;
},
hide: function(force) {
AmiTT_shown = false;
var remove_fn = function() {
if(!AmiTT_shown) {
AJS.hideElement(AmiTT);
AmiTooltip.cur_elm = null;
AmiTooltip.top_offset = 0;
AmiTooltip.left_offset = 0;
}
}
if(force == true)
remove_fn();
else
setTimeout(remove_fn, 100);
return false;
},
locate: function(elm, ev) {
if(!elm)
return;
var cur_elm = AmiTooltip.cur_elm;
var abs_pos = absolutePosition(cur_elm);
var left = abs_pos.x - 5,
width = AmiTT.offsetWidth,
win_width = AJS.getWindowSize().w;
if (left + width + 10 > win_width) {
left -= width - 10 - cur_elm.offsetWidth;
AmiTooltip.setAlignment('right');
}
else {
AmiTooltip.setAlignment('left');
}
if(isNumber(AmiTooltip.top_offset))
abs_pos.y += AmiTooltip.top_offset;
if(isNumber(AmiTooltip.left_offset))
left += AmiTooltip.left_offset;
var top = abs_pos.y + cur_elm.offsetHeight+2;
if(hasClass(cur_elm, 'fixed_pos'))
top += getScrollTop();
if(AmiTooltip.include_scroll_top)
top += getScrollTop();
AJS.setTop(AmiTT, top);
AJS.setLeft(AmiTT, left);
},
showSimpleText: function(elm, text, eval_fn, top_offset, left_offset) {
var show_tooltip = function(ev) {
if(isFunction(eval_fn) && !eval_fn(ev)) {
return false;
}
AmiTooltip.show(elm, DIV({c: 'tooltip_cnt'}, text), ev, top_offset, left_offset);
}
AEV(elm, 'mouseover', show_tooltip);
AEV(elm, 'mouseout', AmiTooltip.hide);
},
showTooltip: function(elm, text) {
AEV(elm, 'mouseover', $p(AmiTooltip.show, elm, setHTML(DIV({c: 'tooltip_cnt'}), text)));
AEV(elm, 'mouseout', AmiTooltip.hide);
}
};
AJS.AEV(window, 'load', AmiTooltip.init);
function imageSprite(cls_name, width, height, extra_cls) {
if(extra_cls)
cls_name += ' ' + extra_cls;
return IMG({
src: '/static_core/images/blank.gif',
width: width,
height: height,
c: cls_name
});
}
var GSocialMedia;
var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };
GSocialMedia = (function() {
function GSocialMedia() {
this.gaq_prefix = '';
preloadImages('https://ssl.gstatic.com/s2/oz/images/stars/po/Publisher/sprite.png');
}
GSocialMedia.prototype.show = function(url, text) {
var genLink, holder;
genLink = function(link) {
var is_twitter, our_text;
if (link.indexOf('twitter.com') !== -1) {
is_twitter = true;
} else {
is_twitter = false;
}
if (link.indexOf('$url') !== -1) {
link = link.replace(/\$url/g, is_twitter && url || urlencode(url));
}
if (is_twitter) {
our_text = text.replace(url, '');
} else {
our_text = text;
}
if (link.indexOf('$text') !== -1) {
our_text = our_text.replace(/\s/g, '+');
our_text = our_text.replace(/\//g, '%2F');
link = link.replace(/\$text/g, our_text);
}
return link;
};
holder = DIV({
c: 'social_media'
}, this.genIcon('Share this page on Facebook', 'facebook', genLink('http://www.facebook.com/share.php?u=$url')), this.genIcon('Share this page on Twitter', 'twitter', genLink('http://www.twitter.com/share?text=$text&url=$url')), this.genIcon('Share this page on LinkedIn', 'linkedin', genLink('http://www.linkedin.com/shareArticle?mini=true&url=$url&title=$text&source=$url')), this.genIcon('Share this page on Plurk', 'plurk', genLink('http://www.plurk.com/?status=$text')), this.genIcon('Bookmark this page on Delicious', 'delicious', genLink('http://www.delicious.com/save?jump=close&url=$url&title=$text')), this.genIcon('Publicly +1 this', 'gplus', genLink('gplus')));
ACN(getBody(), holder);
return setLeft(holder, 10);
};
GSocialMedia.prototype.genIcon = function(tooltip_text, img_sprite, url) {
var cls_off, cls_on, img, link;
cls_off = "icon sm_off cmp_" + img_sprite + "_off";
cls_on = "icon sm_on cmp_" + img_sprite + "_on";
img = imageSprite(cls_off, 27, 27);
link = A({
href: url,
target: '_blank'
}, img);
AEV(link, 'click', __bind(function() {
var gaq;
gaq = window._gaq;
if (gaq) {
return gaq.push(['_trackEvent', 'SocialMedia', 'IconClick', "" + this.gaq_prefix + "_" + img_sprite]);
}
}, this));
AEV(link, 'mouseover', function(ev) {
var indicator;
if (cls_on.indexOf('gplus') !== -1) {
swapDOM(img.parentNode, DIV({
s: 'height: 29px'
}, indicator = IMG({
src: '/static_core/images/indicator.gif',
c: 'indi_img'
}), DIV({
'id': "g_plus_holder"
})));
ACN(getBody(), SCRIPT({
'type': 'text/javascript',
src: 'https://apis.google.com/js/plusone.js'
}));
return window.gPlusInterval = setInterval(function() {
var plusone;
plusone = window.gapi && window.gapi.plusone;
if (plusone) {
removeElement(indicator);
gapi.plusone.render("g_plus_holder", {
"size": "small",
"href": location.href
});
return clearTimeout(window.gPlusInterval);
}
}, 100);
} else {
setClass(img, cls_on);
return AmiTooltip.show(img, DIV({
c: 'tooltip_cnt'
}, tooltip_text), ev, -30, 38, true);
}
});
AEV(link, 'mouseout', function() {
setClass(img, cls_off);
return AmiTooltip.hide(true);
});
return link;
};
return GSocialMedia;
})();
window.SocialMedia = new GSocialMedia();

