File diff 86e1646f8f31 → f742f86f4be4
www/conservancy/static/admin/js/core.js
Show inline comments
 
new file 100644
 
// Core javascript helper functions
 

	
 
// Cross-browser event handlers.
 
function addEvent(obj, evType, fn) {
 
    if (obj.addEventListener) {
 
        obj.addEventListener(evType, fn, false);
 
        return true;
 
    } else if (obj.attachEvent) {
 
        var r = obj.attachEvent("on" + evType, fn);
 
        return r;
 
    } else {
 
        return false;
 
    }
 
}
 

	
 
function removeEvent(obj, evType, fn) {
 
    if (obj.removeEventListener) {
 
        obj.removeEventListener(evType, fn, false);
 
        return true;
 
    } else if (obj.detachEvent) {
 
        obj.detachEvent("on" + evType, fn);
 
        return true;
 
    } else {
 
        return false;
 
    }
 
}
 

	
 
// quickElement(tagType, parentReference, textInChildNode, [, attribute, attributeValue ...]);
 
function quickElement() {
 
    var obj = document.createElement(arguments[0]);
 
    if (arguments[2] != '' && arguments[2] != null) {
 
        var textNode = document.createTextNode(arguments[2]);
 
        obj.appendChild(textNode);
 
    }
 
    var len = arguments.length;
 
    for (var i = 3; i < len; i += 2) {
 
        obj.setAttribute(arguments[i], arguments[i+1]);
 
    }
 
    arguments[1].appendChild(obj);
 
    return obj;
 
}
 

	
 
// ----------------------------------------------------------------------------
 
// Cross-browser xmlhttp object
 
// from http://jibbering.com/2002/4/httprequest.html
 
// ----------------------------------------------------------------------------
 
var xmlhttp;
 
/*@cc_on @*/
 
/*@if (@_jscript_version >= 5)
 
    try {
 
        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
 
    } catch (e) {
 
        try {
 
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
 
        } catch (E) {
 
            xmlhttp = false;
 
        }
 
    }
 
@else
 
    xmlhttp = false;
 
@end @*/
 
if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
 
  xmlhttp = new XMLHttpRequest();
 
}
 

	
 
// ----------------------------------------------------------------------------
 
// Find-position functions by PPK
 
// See http://www.quirksmode.org/js/findpos.html
 
// ----------------------------------------------------------------------------
 
function findPosX(obj) {
 
    var curleft = 0;
 
    if (obj.offsetParent) {
 
        while (obj.offsetParent) {
 
            curleft += obj.offsetLeft;
 
            obj = obj.offsetParent;
 
        }
 
    } else if (obj.x) {
 
        curleft += obj.x;
 
    }
 
    return curleft;
 
}
 

	
 
function findPosY(obj) {
 
    var curtop = 0;
 
    if (obj.offsetParent) {
 
        while (obj.offsetParent) {
 
            curtop += obj.offsetTop;
 
            obj = obj.offsetParent;
 
        }
 
    } else if (obj.y) {
 
        curtop += obj.y;
 
    }
 
    return curtop;
 
}
 

	
 
//-----------------------------------------------------------------------------
 
// Date object extensions
 
// ----------------------------------------------------------------------------
 
Date.prototype.getCorrectYear = function() {
 
    // Date.getYear() is unreliable --
 
    // see http://www.quirksmode.org/js/introdate.html#year
 
    var y = this.getYear() % 100;
 
    return (y < 38) ? y + 2000 : y + 1900;
 
}
 

	
 
Date.prototype.getTwoDigitMonth = function() {
 
    return (this.getMonth() < 9) ? '0' + (this.getMonth()+1) : (this.getMonth()+1);
 
}
 

	
 
Date.prototype.getTwoDigitDate = function() {
 
    return (this.getDate() < 10) ? '0' + this.getDate() : this.getDate();
 
}
 

	
 
Date.prototype.getTwoDigitHour = function() {
 
    return (this.getHours() < 10) ? '0' + this.getHours() : this.getHours();
 
}
 

	
 
Date.prototype.getTwoDigitMinute = function() {
 
    return (this.getMinutes() < 10) ? '0' + this.getMinutes() : this.getMinutes();
 
}
 

	
 
Date.prototype.getISODate = function() {
 
    return this.getCorrectYear() + '-' + this.getTwoDigitMonth() + '-' + this.getTwoDigitDate();
 
}
 

	
 
Date.prototype.getHourMinute = function() {
 
    return this.getTwoDigitHour() + ':' + this.getTwoDigitMinute();
 
}
 

	
 
// ----------------------------------------------------------------------------
 
// String object extensions
 
// ----------------------------------------------------------------------------
 
String.prototype.pad_left = function(pad_length, pad_string) {
 
    var new_string = this;
 
    for (var i = 0; new_string.length < pad_length; i++) {
 
        new_string = pad_string + new_string;
 
    }
 
    return new_string;
 
}
 

	
 
// ----------------------------------------------------------------------------
 
// Get the computed style for and element
 
// ----------------------------------------------------------------------------
 
function getStyle(oElm, strCssRule){
 
    var strValue = "";
 
    if(document.defaultView && document.defaultView.getComputedStyle){
 
        strValue = document.defaultView.getComputedStyle(oElm, "").getPropertyValue(strCssRule);
 
    }
 
    else if(oElm.currentStyle){
 
        strCssRule = strCssRule.replace(/\-(\w)/g, function (strMatch, p1){
 
            return p1.toUpperCase();
 
        });
 
        strValue = oElm.currentStyle[strCssRule];
 
    }
 
    return strValue;
 
}