/**
 * Checks whether an object is valid or not (not null, not undefined, etc)
 *
 * @param obj the object to be checked
 * @return true if is valid, false otherwise
 */
function objIsValid(obj) {
    return !(!obj || obj == null || typeof(obj) == "undefined" || obj == "null");
}

function createOption(selectElem, id, name) {
    var optionNode = document.createElement("option");
    optionNode.appendChild(document.createTextNode(name));
    optionNode.value = id;
    selectElem.appendChild(optionNode);
}

function clearSelectOptions(selectElem) {
    var len = selectElem.options.length;
    for (var i = 0; i < len; i++) {
        selectElem.remove(0);
    }
}

function showErrorMessage(msg) {
    dojo.byId("errorMessage").innerHTML = msg;
    showDialog(dojo.widget.byId('ErrorHandler'));
    dojo.byId("errorDialogOKButton").focus();
}

function showInfoMessage(msg) {
    dojo.byId("infoMessage").innerHTML = msg;
    showDialog(dojo.widget.byId('InfoHandler'));
    dojo.byId("infoDialogOKButton").focus();
}

function showWidgetById(widgetId) {
    var widget = dojo.widget.getWidgetById(widgetId);
    widget.show();
}

function hideWidgetById(widgetId) {
    var widget = dojo.widget.getWidgetById(widgetId);
    widget.hide();
}

function showDialogById(dlgId) {
    showDialog(dojo.widget.getWidgetById(dlgId));
}

function showDialog(dlg) {
    //    if(windows.length > 0) {
    //        windows[windows.length - 1].hide();
    //    }
    //    windows.push(dlg);
    dlg.show();
}

function hideDialogById(dlgId) {
    hideDialog(dojo.widget.getWidgetById(dlgId));
}

function hideDialog(dlg) {
    if(objIsValid(dlg)) {
        dlg.hide();
    }
    //    if(windows.length > 0) {
    //        var edlg = windows.pop();
    //        if(objIsValid(edlg)) {
    //            edlg.hide();
    //        }
    //    }
    //
    //    if(windows.length > 0) {
    //        windows[windows.length - 1].show();
    //    }
}

function parseIntWithPx(str) {
    var strArray = str.split("p");
    return parseInt(strArray[0]);
}

function getSelectedRadioButton(radioButtonsArray) {
    if (radioButtonsArray == null) {
        return null;
    }
    for (var i=0; i<radioButtonsArray.length; i++) {
        if (radioButtonsArray[i].checked) {
            return radioButtonsArray[i].value;
        }
    }
    return null;
}

function setSelectedRadioButton(radioButtonsArray, radioButtonValue) {
    if (radioButtonsArray == null) {
        return null;
    }
    var oldSelectedValue = null;
    for (var i=0; i<radioButtonsArray.length; i++) {
        if (radioButtonsArray[i].checked) {
            oldSelectedValue = radioButtonsArray[i].value;
        } else if (radioButtonsArray[i].value == radioButtonValue) {
            radioButtonsArray[i].checked = true;
        }
    }
    return oldSelectedValue;
}

function splitHtmlIntoParagraphs(html) {
    var finished = false;
    var globalPos = 0;
    var posToInsertTo = [];
    var tmp = html;
    while(!finished) {
        if(tmp.length <= numCharsToBreakAfter) {
            finished = true;
            break;
        }
        tmp = tmp.substring(numCharsToBreakAfter);
        globalPos += numCharsToBreakAfter;
        var dotFound = false;
        var idx = 0;
        while(!dotFound) {
            if(tmp.length <= idx) {
                finished = true;
                break;
            }
            var c = tmp.charAt(idx ++);
            if(("" + c) == ".") {
                dotFound = true;
            }
        }
        var brStart = tmp.substring(idx - 1).toLowerCase().indexOf("<br");
        if(brStart < 2 && brStart > 0) {
            var brClose = tmp.substring(idx - 1).indexOf(">", brStart);
            tmp = tmp.substring(idx - 1);
            if(brClose != -1) {
                tmp = tmp.substring(brClose);
            }
        } else {
            posToInsertTo[posToInsertTo.length] = globalPos + idx;
            globalPos += idx - 1;
            tmp = tmp.substring(idx - 1);
        }
    }
    for(var i = posToInsertTo.length - 1; i >= 0; i--) {
        html = html.substring(0, posToInsertTo[i]) + "<br/><br/>" + html.substring(posToInsertTo[i]);
    }
    return html;
}
