
addDOMLoadEvent = (function(){
    // create event function stack
    var load_events = [],
        load_timer,
        script,
        done,
        exec,
        old_onload,
        init = function () {
            done = true;

            // kill the timer
            clearInterval(load_timer);

            // execute each function in the stack in the order they were added
            while (exec = load_events.shift())
                exec();

            if (script) script.onreadystatechange = '';
        };

    return function (func) {
        // if the init function was already ran, just run this function now and stop
        if (done) return func();

        if (!load_events[0]) {
            // for Mozilla/Opera9
            if (document.addEventListener)
                document.addEventListener("DOMContentLoaded", init, false);

            // for Internet Explorer
            /*@cc_on @*/
            /*@if (@_win32)
                document.write("<script id=__ie_onload defer src=//0><\/scr"+"ipt>");
                script = document.getElementById("__ie_onload");
                script.onreadystatechange = function() {
                    if (this.readyState == "complete")
                        init(); // call the onload handler
                };
            /*@end @*/

            // for Safari
            if (/WebKit/i.test(navigator.userAgent)) { // sniff
                load_timer = setInterval(function() {
                    if (/loaded|complete/.test(document.readyState))
                        init(); // call the onload handler
                }, 10);
            }

            // for other browsers set the window.onload, but also execute the old window.onload
            old_onload = window.onload;
            window.onload = function() {
                init();
                if (old_onload) old_onload();
            };
        }

        load_events.push(func);
    }
})();

function globalOnLoad() {
	E = new MyError();
	form = document.forms[0];
	var obj, i;

	if (obj = document.getElementById('spamdetect')) {
		form.robot_email.value = 'yes';
		obj.style.display = 'none';
	}

	obj = document.getElementsByTagName('a');
	for (i=0; i<obj.length; ++i) {
		obj[i].onfocus = function() {
			this.blur();
		}
		if (obj[i].lang) {
			$mailHideFromSpam(obj[i]);
		}
	}
	obj = form.elements;
	var focus = true;
	for (i=0; i<obj.length; ++i) {
		if (focus && (obj[i].type == 'text' || obj[i].type == 'textarea')) {
			try {
				obj[i].focus();
				focus = false;
			} catch(err) {
				continue;
			}
		} else if  (obj[i].type == 'button' ||
					obj[i].type == 'reset' ||
					obj[i].type == 'submit' ||
					obj[i].type == 'image' ||
					obj[i].type == 'radio' ||
					obj[i].type == 'checkbox') {

			if (obj[i].hideFocus) {
				obj[i].hideFocus = true;
			} else {
				obj[i].onfocus = function() {
					this.blur();
				}
			}
            if (obj[i].type == 'checkbox') {
				obj[i].$groupChecked = function() {
					var group = $gebtn(form, 'input');
                    var found = false;
					for (var i=0; i<group.length; i++) {
						if (group[i].checked && group[i].name == this.name) {
							found = true;
							break;
						}
					}
					return found;
				}
			}
		}
	}
	if (window.onLoadEvents) {
		onLoadEvents();
	}

	//document.onmousemove = mouseMove;
	return true;
}

addDOMLoadEvent(globalOnLoad);

function $loadScript(script) {
	var obj =  {
		type	: 'text/javascript',
		language: 'JavaScript',
		src		: '/inc/js/' + script
	};
	DOMEditor.append(document.getElementsByTagName('head')[0], DOMEditor.createElement('script', obj));
}

String.prototype.isEmpty = function() {
	if (this == null) {
		return true;
	}else {
		return (this.replace(/\s+/g, '') == '');
	}
}
String.prototype.isNum = Number.prototype.isNum = function() {
	return !(isNaN(this) || this == '' || this == null);
}

function validChecks(boxList) {
	var found = false;
	for (var i=0; i<boxList.length; i++) {
		if (boxList[i].checked) {
			found = true;
			break;
		}
	}
	return found;
}
function preloader(list, path) {
	preloadedPictures   = new Array();
    for (var i=0; i<list.length; i++) {
		preloadedPictures[i]     = new Image();
		preloadedPictures[i].src = path + list[i];
	}
	return true;
}
function $emailValidator(email) {
	var RE = /^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,4})/;
	return RE.test(email);
}


function $mailHideFromSpam(a) {
	try {
		var user = a.id.split('_');
		user = user[user.length - 1];
		var mail = user + '@' + a.name + '.' + a.lang;
		a.href = 'mailto:' + mail;
		a.innerHTML = a.innerHTML.replace(/\[\*mailholder\*\]/g, mail);
		if (!a.title || a.title == '') {
			a.title = mail;
		}
	} catch(e) {}
}

function findPos(obj) {
	 var curleft = 0;
	 var curtop  = 0;

	 if (obj.offsetParent) {
	 	while (obj.offsetParent) {
	 		curleft += obj.offsetLeft;
	 		curtop  += obj.offsetTop;
	 		obj = obj.offsetParent;
	 	}
	 } else if (obj.x) {
	 	curleft += obj.x;
	 	curtop  += obj.y;
	 }

	 return {
	 	left	: curleft,
	 	top		: curtop
	 };
}

function windowSizes() {
	var body = (document.compatMode && document.compatMode == "CSS1Compat") ? document.documentElement : document.body;
	return {
		win		: (window.innerWidth) ? {w : innerWidth, h : innerHeight} : {w : body.clientWidth, h : body.clientHeight},
		scroll	: (window.pageXOffset) ? {l : pageXOffset, t : pageYOffset} : {l : body.scrollLeft, t : body.scrollTop},
		html	: {w : body.scrollWidth, h : body.scrollHeight}
	}
}

function $gebid(id) {
	return document.getElementById(id);
}
function $gebtn(obj, name) {
	return obj.getElementsByTagName(name);
}
function $mousePos(ev) {
	var x = ev.clientX ? ev.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft) : ev.pageX;
	var y = ev.clientY ? ev.clientY + (document.documentElement.scrollTop || document.body.scrollTop) : ev.pageY;
	return {x:x, y:y}
}
