function get_object(id) {
    var object = null;
    if (document.layers) {
        object = document.layers[id];
    } else if (document.all) {
        object = document.all[id];
    } else if (document.getElementById) {
        object = document.getElementById(id);
    }
    return object;
}

function changeWrapperZindex(val) {
    if (get_object('wrapper')) {
        get_object('wrapper').style.zIndex = val;
    }
}

function showHideOnDepencies(){
	if (typeof(dependencyArray)=="undefined"){
		return;
	}
	var dependencycheck;
	var nodepencies;
	var needlenot = "~not~";
	var needleor = "~or~";

	for (var item in dependencyArray){
		dependencycheck = false;
		nodepencies = false;

		if(!dependencyArray[item]){
			// no depenencies, so show
			var nodepencies = true;
		}else{
			var checkArray = dependencyArray[item].split(",");
			for (var i in checkArray) {

				var checkbox = checkArray[i];
				// if ~or~ only one of the inputs should be checked, else all
				if(checkbox.search(needleor) > -1){
					var checkOrArray = checkbox.split(needleor);
					var ornotfound = true;
					for (var ior in checkOrArray) {
						var checkboxor = checkOrArray[ior];
						if(get_object(checkboxor) && get_object(checkboxor).checked){
							dependencycheck = true;
							ornotfound = false;
							break;
						}
					}
					if(ornotfound){
						dependencycheck = false;
						break;
					}
				} else {
					// if |not| input should not be checked
					if(checkbox.search(needlenot) > -1){
						checkboxnot = checkbox.substr(checkbox.search(needlenot)+needlenot.length);
						if (get_object(checkboxnot) && !get_object(checkboxnot).checked) {
							dependencycheck = true;
							break;
						}
					}else{
						if(get_object(checkbox)){
							if(get_object(checkbox).checked){
								//alert("item:"+item+"__outer("+checkbox+"):"+get_object(checkbox).checked);
								dependencycheck = true;
							}else{
								dependencycheck = false;
								break;
							}
						}
					}
				}
			}
		}
	
		if(nodepencies || dependencycheck){
			showHideElement(item,true);
		}else{
			showHideElement(item,false);
		}
	}
}

function showHideElement(item,show){
	if(show){
	    if (get_object(item)) get_object(item).style.display = "";
	}else{
	    if (get_object(item)) get_object(item).style.display = "none";
	}
}

function toggletwoelementsets(show, hide) 
{
	var showArray = show.split(",");
	var hideArray2 = hide.split(",");

	for (var i in showArray) 
    {
	    get_object(showArray[i]).style.display = "";
	}
	for (var i in hideArray2) 
    {
	    get_object(hideArray2[i]).style.display = "none";
	}

	callResizing(100);
	
}

function callResizing(milisec) {
    try {
        if (milisec) {
            setTimeout('CallBodySizeChanged()', milisec);
        }
        else {
            setTimeout('CallBodySizeChanged()', 1000);
        }
    }
    catch (ex) { };
}

function togglegrayouttext(greyout,normal){
	var grayoutArray = greyout.split(",");
	var normalArray = normal.split(",");

	for (var i in grayoutArray) {
		if(get_object(grayoutArray[i])){
			get_object(grayoutArray[i]).setAttribute('class', "inactive_label");
		}
	}

	for (var i in normalArray) {
		if(get_object(normalArray[i])){
		    get_object(normalArray[i]).setAttribute('class', "");
		}
	}
}

var onlyonce=false;
function changeClass(object, toclass, id){
	// with id
	if(id){
		get_object(id).setAttribute('class', toclass);
	// or object
	}else{
		object.setAttribute('class', toclass);
	}
	if(onlyonce==false){
		//alert('prevent bubbling: http://www.quirksmode.org/js/events_mouse.html\n or\n http://mikeconley.ca/blog/2009/02/19/mouseover-mouseout-on-nested-elements/');
	}
	onlyonce=true;
}

function is_child_of(parent, child) {
	if( child != null ) {			
		while( child.parentNode ) {
			if( (child = child.parentNode) == parent ) {
				return true;
			}
		}
	}
	return false;
}

function fixOnMouseOut(element, event, JavaScript_code) {
	var current_mouse_target = null;
	if( event.toElement ) {				
		current_mouse_target 			 = event.toElement;
	} else if( event.relatedTarget ) {				
		current_mouse_target 			 = event.relatedTarget;
	}
	if( !is_child_of(element, current_mouse_target) && element != current_mouse_target ) {
		eval(JavaScript_code);
	}
}

function changeStyle(object,variable,value){
	object.style[variable] = value;
} 

function showDatePicker(arg, clientId)
{
    var dtp = document.getElementById(clientId);
    if (dtp != null)
    {
        if (arg == "1") {
            dtp.style.display = '';
        }
        else
        {
            dtp.style.display = 'none';
        }
    }

    callResizing();
}

var toggleIntervalID = 0;
var toggleTargetID = '';
var toggleClass1 = '';
var toggleClass2 = '';
function startToggle(targetID, class1, class2) {
    if (toggleIntervalID != 0) {
        stopToggle();
    }
    toggleTargetID = targetID;
    toggleClass1 = class1;
    toggleClass2 = class2;

    var trg = document.getElementById(toggleTargetID);
    if (trg) {
        if (trg.tagName == 'A') {
            //disableAnchor(toggleTargetID, true)
        }
        else {
            trg.disabled = true;
        }
    }
    toggleIntervalID = setInterval(toggleCssClass, 750);
    return true;
}

function stopToggle() {
    document.body.style.cursor = 'auto';
    clearInterval(toggleIntervalID);
    var trg = document.getElementById(toggleTargetID);
    if (trg) {
        trg.className = toggleClass1;
        if (trg.tagName == 'A') {
            //disableAnchor(toggleTargetID, false)
        }
        else {
            trg.disabled = false;
        }
    }
}

function toggleCssClass() {
    var trg = document.getElementById(toggleTargetID);
    if (trg) {
        if (trg.className == toggleClass1) {
            trg.className = toggleClass2;
        }
        else {
            trg.className = toggleClass1;
        }
    }
}

function disableAnchor(objId, disable) {
    var obj = document.getElementById(objId);
    if (obj != null) {
        if (disable) {
            var href = obj.getAttribute("href");
            var onclick = obj.getAttribute("onclick");
            //First we store previous value in a new attribute
            if (href && href != "" && href != null) {
                obj.setAttribute('href_bak', href);
            }
            if (onclick != null) {
                obj.setAttribute('onclick_back', onclick);
                obj.setAttribute('onclick', "void(0);");
            }
            obj.removeAttribute('href');
        }
        else {
            var hrefBack = obj.getAttribute("href_bak");
            var onclickBack = obj.getAttribute("onclick_back");
            if (onclickBack != null) {
                obj.setAttribute('onclick', onclickBack);
                obj.removeAttribute('onclick_back');
            }
            if (hrefBack != null) {
                obj.setAttribute('href', hrefBack);
                obj.removeAttribute('href_bak');
            }
        }
    }
}

function TextOnBlur(txtControlID) {
    var txtCtrl = get_object(txtControlID);
    if (txtCtrl != null) {
        var str = txtCtrl.value;
        str = str.replace(" ", "");
        txtCtrl.value = str.toUpperCase();
    }
}

function toggleElementsVisibility(show, hide) 
{
    var showArray = show.split(",");
    var hideArray2 = hide.split(",");

    for (var i in showArray) 
    {
        try {get_object(showArray[i]).style.display = "";} catch (e) { }
    }
    for (var i in hideArray2) 
    {
        try { get_object(hideArray2[i]).style.display = "none"; } catch (e) { }
    }

    callResizing(100);

}



function toggleElementsVisibilityByValuesHide(ctrlLstID, lstValuesForHide, hideArr) 
{
    var ctrlLst = get_object(ctrlLstID);
    if (ctrlLst != null) 
    {
        var idxValue = ctrlLst.selectedIndex;
        var selValue = ctrlLst.options[idxValue].value;

        var itemsArray = lstValuesForHide.split(",");
        var hideArray2 = hideArr.split(",");

        if (arrayContainValue(itemsArray, selValue))
        { 
            for (var i in hideArray2) 
            {
                try { get_object(hideArray2[i]).style.display = "none"; } catch (e) { }
            }
        }
        else {
            for (var i in hideArray2) {
                try { get_object(hideArray2[i]).style.display = ""; } catch (e) { }
            }
        }

        callResizing(100);
    }
}

function toggleElementsVisibilityByValuesShow(ctrlLstID, lstValuesForShow, ShowArr) 
{
    var ctrlLst = get_object(ctrlLstID);
    if (ctrlLst != null) 
    {
        var idxValue = ctrlLst.selectedIndex;
        var selValue = ctrlLst.options[idxValue].value;

        var itemsArray = lstValuesForShow.split(",");
        var hideArray2 = ShowArr.split(",");

        if (arrayContainValue(itemsArray, selValue))
        {
            for (var i in hideArray2) 
            {
                try { get_object(hideArray2[i]).style.display = ""; } catch (e) { }
            }
        }
        else {
            for (var i in hideArray2) {
                try { get_object(hideArray2[i]).style.display = "none"; } catch (e) { }
            }
        }

        callResizing(100);
    }
}

function arrayContainValue (arrayList, element) 
{
    for (var i = 0; i < arrayList.length; i++) 
    {
        if (arrayList[i] == element) 
        {
            return true;
        }
    }
    return false;
}
