/* --------------------------------------------------------------------------------
	file:		CrossBrowserFunctions.js
	purpose:	cross browser DOM access and modify functions, used mostly for UI stuff.
	created by:	Brandon Kelly / FauxTel, Inc.
	date:		August 24, 2004
   -------------------------------------------------------------------------------- */

var isW3C = (document.getElementById != null);
var isNN4 = (document.layers != null);
var isIE4 = (document.all != null);

function filterInput(filterType, evt, allowDecimal, allowCustom){ 
    var keyCode, Char, inputField, filter = ''; 
    var alpha = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; 
    var num   = '0123456789'; 
    // Get the Key Code of the Key pressed if possible else - allow 
    if(window.event){ 
        keyCode = window.event.keyCode; 
        evt = window.event; 
    }else if (evt)keyCode = evt.which; 
    else return true; 
    // Setup the allowed Character Set 
    if(filterType == 0) filter = alpha; 
    else if(filterType == 1) filter = num; 
    else if(filterType == 2) filter = alpha + num; 
    if(allowCustom) filter += allowCustom; 
    if(filter == '')return true; 
    // Get the Element that triggered the Event 
    inputField = evt.srcElement ? evt.srcElement : evt.target || evt.currentTarget; 
    // If the Key Pressed is a CTRL key like Esc, Enter etc - allow 
    if((keyCode==null) || (keyCode==0) || (keyCode==8) || (keyCode==9) || (keyCode==13) || (keyCode==27) )return true; 
    // Get the Pressed Character 
    Char = String.fromCharCode(keyCode); 
    // If the Character is a number - allow 
    if((filter.indexOf(Char) > -1)) return true; 
    // Else if Decimal Point is allowed and the Character is '.' - allow 
    else if(filterType == 1 && allowDecimal && (Char == '.') && inputField.value.indexOf('.') == -1)return true; 
    else return false; 
}

function DupChar(srcCtl, dstCtl) {
    getObj(dstCtl).value = getObj(srcCtl).value;
    return true;
}

function toggleObjectDisplay(obj1, obj2){
	try{
		if (getObj(obj1).style.display == 'none'){
			getObj(obj1).style.display = '';
			if(obj2 != null){
				getObj(obj2).style.display = 'none';
			}
		}
		else{
			getObj(obj1).style.display = 'none';
			if(obj2 != null){
				getObj(obj2).style.display = '';
			}
		}
	}
	catch(ex){
		
	}
}

function toggleLayer(name) {
	if (isW3C) {
		if (document.getElementById(name).style.display == 'none')
			document.getElementById(name).style.display = 'inline';
		else
			document.getElementById(name).style.display = 'none';
	} else if (isNN4) {
		// alert('NN4 toggle '+name+'('+document.layers[name].visibility +')');
		if (document.layers[name].visibility == 'hide')
			document.layers[name].visibility = 'visible';
		else
			document.layers[name].visibility = 'hidden';
	} else if (isIE4) {
		if (document.all.name.style.visibility == 'hidden')
			document.all.name.style.visibility = 'visible';
		else
			document.all.name.style.visibility = 'hidden';
	}
}
function getHandlerName(functionText)
{
        var nameStartToEnd=functionText.replace("function","");
        functionName=nameStartToEnd.substring(1,nameStartToEnd.indexOf("("));
        /*
        var nameEndChar=nameStartToEnd.indexOf("(");
        var functionName=nameStartToEnd.substring(1,nameEndChar);
        */
        return(functionName);
}
function showLayer(name) {
	if (isW3C) {
		document.getElementById(name).style.display = 'inline';
	} else if (isNN4) {
		document.layers[name].visibility = 'visible';
	} else if (isIE4) {
		document.all.name.style.visibility = 'visible';
	}
}
	
function hideLayer(name) {
	if (isW3C) {
		document.getElementById(name).style.display = 'none';
	} else if (isNN4) {
		document.layers[name].visibility = 'hidden';
	} else if (isIE4) {
		document.all.name.style.visibility = 'hidden';
	}
}
	
function getObj(id) {
	if (isW3C) {
		return document.getElementById(id);
	} else if (isIE4) {
		return document.all[id];
	} else if (isNN4) {
		return document.layers[id];
	}
}

function getStyle(id) {
	if (isW3C) {
		return document.getElementById(id).style;
	} else if (isIE4) {
		return document.all[id].style;
	} else if (isNN4) {
		return document.layers[id];
	}
}

function selectOption(element, value) {
	var i;
	for (i=0;i<element.options.length;i++) {
		if (element.options[i].value.toLowerCase() == value.toLowerCase()) {
			element.selectedIndex = i;
		}
	}
}

function setAllOptionsByControlType(id, value, type) {
	var i=0;
	var e;
	while ((e = getObj(type+id+'_'+i++)) != null ) {
		e.checked = ( value ? true : false );
	}
}

function setAllOptions(id, value) {
	var i=0;
	var e;
	while ( (e = getObj(id+'_'+i++)) != null ) {
		e.checked = ( value ? true : false );
	}
}

function selectedValue(element) {
	return element.options[element.selectedIndex].value
}

function getSelectedOption(id) {
	var a=null;
	var i=0;
	var e;
	while ( (e = getObj(id+'_'+i++)) != null ) {
		if ( e.checked ) {
			a = e.value;
			break;
		}
	}
	
	return a;
}
