
function submitFormToAction(form, toAction) {
	form.action=toAction;
	form.submit();
}

function confirmRedirect(url, question) {
	if(confirm(question)) {
		this.location.href=url;
	}
	else {
		return 0;
	}
}

function confirmSubmit(question, form) {
	if(confirm(question)) {
		form.submit();
	}
	else {
		return 0;
	}
}

function redirectToUrl(url) {this.location.href=url;}

function set(target,form) { form.dispatch.value=target;}

function openWindowOrRedirect(url, redirectValue) {
    if (redirectValue != null && redirectValue == true) {
        redirectToUrl(url);
    }
    else {
        window.open(url);
    }
}

function openPopup(url, extraWinProps) {
    var baseProps = "toolbar=no,location=no,directories=no,status=no,menu=no,copyhistory=no,resizable=yes"
    var winProps = baseProps + "," + extraWinProps;
	window.open(url, "popup", winProps);
}

function getElementById(id) {
    var element = null;
	if (document.getElementById) {
	    element = document.getElementById(id);
	}
	else if (document.layers) {
	    element = document.layers[id];
	}
	else if (document.all) {
	    element = document.all[id];
	}
	
	return element;
}
function getObject(form, property) {
	return form[property];
}

function getValue(form, property) {
	return getObject(form, property).value;
}

function setValue(form, property, targetValue) {
	return getObject(form, property).value = targetValue;
}

function addValue(form, property, targetValue, atStart, separator) {
    var previousValue = getValue(form, property);
    var newValue;

    if (previousValue == null || previousValue.length == 0) {
        newValue = targetValue;
    } else if (atStart) {
        newValue = targetValue + separator + previousValue;
    } else {
        newValue = previousValue + separator + targetValue;
    }

    setValue(form, property, newValue);
}

function getValueSelect(form, property) {
    return getSelectedOption(form, property).value;
}

function getSelectedOption(form, property) {
    var select = getObject(form, property);
    return select.options[select.selectedIndex];
}

function getCheckedElement(form, property) {
    var elements = getObject(form, property);
    var checkedElement = null;
    for (i=0;i<elements.length;i++) {
		if (elements[i].checked) {
			checkedElement = elements[i];
			break;
		}
	}
    return checkedElement;
}

function setFocus(fieldId) {
    var fieldObj = getElementById(fieldId);
	if (fieldObj != null) {
	    fieldObj.focus();
	}
}

function setFirstFieldFocus() { setFocus("firstField"); }

function closeWindow() {
    document.window.close();
}

function checkRegexp(form, regexp, check) {
    var re = new RegExp(regexp);
    var elements = form.elements;
    for (i=0; i<elements.length; i++) {
        var element = elements[i];
        if (element.name != null && re.exec(element.name) != null && element.checked != null) {
            element.checked = (check == null || check) ? true : false;
        }
    }
}

function checkRegexpDebug(form, regexp, check) {
    var re = new RegExp(regexp);
    var elements = form.elements;
    
    for (i=0; i<elements.length; i++) {
        var element = elements[i];
        var name = element.name;
        if (name != null) {
            var m = re.exec(name);
            if (m != null) {
                var val = (check == null || check) ? true : false;
                if (element.checked != null) {
                    element.checked = val;
                }
            }
        }
    }
}

function countCheckedElementsRegexp(form, regexp) {
    var re = new RegExp(regexp);
    var elements = form.elements;
    var allChecked = false;
    var items = 0;
    var checkedItems = 0;

    for (i=0; i<elements.length; i++) {
        var element = elements[i];
        var name = element.name;
        if (name != null) {
            var m = re.exec(name);
            if (m != null) {
                allChecked = true;
                items++;
                if (element.checked != null && element.checked == true) {
	                checkedItems++;
                }
            }
        }
    }

    return checkedItems;
}

function countElementsRegexp(form, regexp) {
    var re = new RegExp(regexp);
    var elements = form.elements;
    var allChecked = false;
    var items = 0;

    for (i=0; i<elements.length; i++) {
        var element = elements[i];
        var name = element.name;
        if (name != null) {
            var m = re.exec(name);
            if (m != null) {
                items++;
            }
        }
    }

    return items;
}

function isAllCheckedRegexp(form, regexp, min) {
    var checkedElementsCount = countCheckedElementsRegexp(form, regexp);
    var elementsCount = countElementsRegexp(form, regexp);

    return (elementsCount == checkedElementsCount && (min == null || checkedElementsCount > min));
}
function getFirstCheckedElementRegexp(form, regexp) {
    var re = new RegExp(regexp);
    var elements = form.elements;

    for (i=0; i<elements.length; i++) {
        var element = elements[i];
        var name = element.name;
        if (name != null) {
            var m = re.exec(name);
            if (m != null) {
                if (element.checked != null && element.checked == true) {
                	return element;
                }
            }
        }
    }

    return null;
}

function debugElementNames(form) {
    var elements = form.elements;
    var elementsString = "";
    for (i=0; i<elements.length; i++)
    {
        var element = elements[i];
        elementsString += "[" + element.name + ":" + element.value + "]" + ",";
    }
    
    return elementsString;
}
