/* ****************************************************************************
 * BAAX javascript library 
 *
 * Functions to improve the useablity of BAAX
 *
 * @author Lorne Taylor
 * @revised 2006-05-18
 * ****************************************************************************
 */
// framework
function init(value, default_value) {
    if (value == undefined) {
        return default_value;
    } else {
        return value;
    }
}
function getElement(ref) {
    var elem = null;
    if (typeof(ref) == 'object') {
        return ref; 
    } else if (document.getElementById) {
        elem = document.getElementById(ref);
    } else if (document.all) {
        elem = document.all[ref];
    } else if (document.layers) {
        elem = document.layers[ref];
    }
    if (elem) {
        return elem;
    } else {
        return false;
    }
}
function setObj(ref, prop, value) {
    var elem = getElement(ref);
    if (elem != null && prop != undefined && value != undefined) {
        elem[prop] = value;
    } else {
        return false;   
    }
}
function getObj(ref, prop) {
    var elem = getElement(ref);
    if (elem != null && prop != undefined) {
        return elem[prop];
    } else {
        return elem;
    }
}
function setStyle(ref, prop, value) {
    var elem = getElement(ref);
    if (elem != null && prop != undefined && value != undefined) {
        elem.style[prop] = value;
    } else {
        return false;
    }
}
function getStyle(ref, prop) {
    var elem = getElement(ref);
    if (elem != null && prop != undefined) {
        return elem.style[prop];
    } else {
        return elem.style;
    }
}
// dhtml
function setVis(on, ref) {
	if (on) {
		setStyle(ref, 'visibility', 'visible');
		setStyle(ref, 'display', 'block');
	} else {
		setStyle(ref, 'visibility', 'hidden');
		setStyle(ref, 'display', 'none');
	}
}
function toggleVis(ref, label_hid, label_vis) {
    if (getStyle(ref, 'display') == 'none') {
		setVis(true, ref);
        if (label_vis != undefined) {
            ref += 'ToggleSwitch';
            setLabel(ref, label_vis);
        } 
    } else {
		setVis(false, ref);
        if (label_hid != undefined) {
            ref += 'ToggleSwitch';
            setLabel(ref, label_hid);
        } 
    }
}
function setLabel(ref, label) {
    var obj = getObj(ref); 
    if (obj) {
        if (obj.childNodes[0]) {
            obj.childNodes[0].nodeValue = label;
        } else if (obj.value) {
            obj.value = label;
        } else if (obj.innerHTML) {
            obj.innerHTML = label;
        }
    }
}
function scroll(ref) {
	var obj = getObj(ref);
	obj.scrollTop = obj.scrollHeight;
}
// form
function clearForm(ref) {
    var obj = getObj(ref);
    if (obj) {
        for(i=0; i<obj.length; i++) {
            var elem = obj.elements[i];
            if (elem.type == 'submit' || elem.type == 'reset' || elem.type == 'button' || elem.type == 'hidden') {
                continue;
            } else {
                elem.value = '';
            }
        }
    }
    return false;
}
function clickOnce(ref) {
    var obj = getObj(ref);
    if (obj) {
        if (document.all || document.getElementById) {
            obj.disabled = true;
        } else {
            obj.onclick = null;
            obj.value = 'clicked';
        }
    }
    return true;
}
function confirmSubmit(msg) {
    var msg = init(msg, 'Are you sure?');
    if (confirm(msg)) {
        return true;
    } else {
        return false;
    }
}
function toggleChecked(ref) {
    var obj = getObj(ref);
    if (obj) {
        obj.click();
    }
}
function checkRadio(a) {toggleChecked(a);}
function checkBox(a) {toggleChecked(a);}
function setChecked(ref) {
    var obj = getObj(ref);
    if (obj) {
        if (obj.checked == undefined) {
            obj.click();
        }
    }
}
function toggleDisabled(ref) {
    var obj = getObj(ref);
    if (obj) {
        if (document.all || document.getElementById) {
            if (obj.disabled === true) {
                obj.disabled = false;
            } else {
                obj.disabled = true;
            }
        } else {
            if (obj.onclick !== null) {
                obj.onclick = null;
            }
        }
    }
}
function getSelected(form, NAME) {
    NAME = init(NAME, 'SELECTED');
    MULTI_SELECT = form.elements[NAME];
    if (MULTI_SELECT == undefined) {
        return false;
    } else if (MULTI_SELECT.options.length == 0) {
        return false;
    } else {
        var VALUES = '';
        for (i=0; i<MULTI_SELECT.length; i++) {
            MULTI_SELECT.options[i].selected;
            VALUES = VALUES + MULTI_SELECT.options[i].value;

            // add a comma if not at the end
            if (i != (MULTI_SELECT.length-1)) {
                VALUES = VALUES + ',';
            }
        }
        MULTI_SELECT.form.elements[NAME + '_VALUES'].value = VALUES;
    } 
}
function submitForm(INPUT) {
    var FORM = INPUT.form;
    FORM.elements['EVENTID'].value = INPUT.name;
    getSelected(FORM);
    FORM.submit();
}
function submitDMUForm(A) {submitForm(A);}
function submitFormByLink(FORM_NAME, EVENTID) {
    FORM = document.forms[FORM_NAME];
    FORM.elements['EVENTID'].value = EVENTID;
    FORM.submit();
}
function submitFormByID(ID) {
    var ELEMENT = new getObj(ID, null);
    var FORM    = ELEMENT.form;
    FORM.elements['EVENTID'].value = ELEMENT.name;
    getSelected(FORM);
    FORM.submit();
}
function submitDMUFormByID(A) {submitFormByID(A);}
function setEventID(form, event_id) {
    form.elements['EVENTID'].value = event_id;
}
function autoTab(ref, next_ref)
{
    var obj = getObj(ref);
    var len = obj.value.length;
    var max_len = obj.getAttribute('maxlength');
    if (len == max_len) {
        var next_elem = getObj(next_ref);
        next_elem.focus();
    }
}  
// string
function padNum(ref) {
    var obj = getElement(ref);
    if (obj.value.length == 1) {
        obj.value = '0' + obj.value;
    }
}  
function strUpperCase(ref, start, len) {
    var obj   = getObj(ref); 
    var start = init(start, 0);
    var len   = init(len, obj.value.length);
    var uc    = obj.value.substr(start, len);
    uc = uc.toUpperCase();
    var str   = obj.value.substr(len);
    obj.value = uc + str;
}
function strtoupper(a,b,c) { strUpperCase(a,b,c); }
// window
var popupWin = null;
function openPopup(url, width, scrollbars, height) {
    width = init(width, 500);
    height = init(height, Math.round(width * 1.618));
    scrollbars = init(scrollbars, false);
    features = ',resizeable';
    if (scrollbars) {
		features += ',scrollbars';
    }
    popupWin = window.open(url, 'PopupWindow', 'width=' + width + ',height=' + height + features);
    popupWin.focus();
}
function closePopup() {
    if (popupWin != null && popupWin.open) {
        popupWin.close();        
    }
}
function href(url) {
    window.location.href = (url);
}
// navigation / rollovers
/*
	Standards Compliant Rollover Script
	Author : Daniel Nolan
	http://www.bleedingego.co.uk/webdev.php
    usage: must include initRollovers() in body onload event.
    <body onload="initRollovers()">
*/
function initRollovers() {
	if (!document.getElementById) {
        return
	}
	var aPreLoad = new Array();
    var imgRollOver = '-o';
	var sTempSrc;
	var aImages = document.getElementsByTagName('img');
	for (var i = 0; i < aImages.length; i++) {		
		if (aImages[i].className == 'imgover') {
			var src = aImages[i].getAttribute('src');
			var ftype = src.substring(src.lastIndexOf('.'), src.length);
			var hsrc = src.replace(ftype, imgRollOver+ftype);
			aImages[i].setAttribute('hsrc', hsrc);
			aPreLoad[i] = new Image();
			aPreLoad[i].src = hsrc;
			aImages[i].onmouseover = function() {
				sTempSrc = this.getAttribute('src');
				this.setAttribute('src', this.getAttribute('hsrc'));
			}	
			aImages[i].onmouseout = function() {
				if (!sTempSrc) sTempSrc = this.getAttribute('src').replace(imgRollOver+ftype, ftype);
				this.setAttribute('src', sTempSrc);
			}
		}
	}
}

