157 lines
4.8 KiB
JavaScript
157 lines
4.8 KiB
JavaScript
|
// 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;
|
||
|
}
|