Type.registerNamespace('redcmsAjax');

redcmsAjax.WebRequest = function(url, body, requestMethod, onComleted, onInvoke) {
    if (requestMethod == null || requestMethod.length <= 0) {
        requestMethod = "GET";
    }
    if (arguments.length > 5) {
        if (typeof (arguments[5]) == 'object') {
            tempArgs = arguments[5];
        } else {
            tempArgs = eval('(' + arguments[5] + ')');
        }
    } else {
        tempArgs = null;
    }
    if (onInvoke != false && onInvoke != null) {
        if (typeof (eval(onInvoke)) == 'function') {
            eval(onInvoke + '(tempArgs)');
        } else {
            redcmsAjax.WebRequestInvokeDefault(tempArgs);
        }
    }

    if (typeof (debugModeXml) == 'boolean') {
        if (debugModeXml == true) {
            if (url.indexOf("?") < 0) {
                url = url + '?debug_xml=true'
            } else {
                url = url + '&debug_xml=true'
            }
        }
    }
    if (typeof (debugModeXsl) == 'boolean') {
        if (debugModeXsl == true) {
            if (ajaxURLtemp.indexOf("?") < 0) {
                ajaxURLtemp = ajaxURLtemp + '?debug_xsl=true'
            } else {
                ajaxURLtemp = ajaxURLtemp + '&debug_xsl=true'
            }
        }
    }

    // Instantiate the WebRequest object.
    var wRequest = new Sys.Net.WebRequest();
    // Set the request Url.  
    wRequest.set_url(url);
    // Set the request verb.
    wRequest.set_httpVerb(requestMethod);
    if (body != false && body != null && body.length > 0) {
        wRequest.set_body(body);
        wRequest.get_headers()["Content-Length"] = body.length;
    }
    // Set the web request completed event handler,
    // for processing return data.
    if (onComleted != false && onComleted != null) {
        wRequest.add_completed(redcmsAjax.CompletedFirstStep);
        if (typeof (eval(onComleted)) == 'function') {
            wRequest.add_completed(eval(onComleted));
        } else {
            wRequest.add_completed(redcmsAjax.WebRequestCompletedDefault);
        }
    }
    wRequest.get_headers()["X-redcms-ajax"] = true;
    wRequest.get_headers()["X-redcms-ajaxpara"] = tempArgs;

    if (tempArgs != null && tempArgs.headerParameter) {
        for (para in tempArgs.headerParameter) {
            wRequest.get_headers()[para] = tempArgs.headerParameter[para];
        }
    }

    // Execute the request.
    wRequest.invoke();

    return wRequest;
}

redcmsAjax.CompletedFirstStep = function(executor, eventArgs) {
    if (executor.get_responseAvailable()) {
        wr = executor.get_webRequest();
        var isNewSession = wr.get_headers()["x-redcms-isNewSession"];
        if (!!isNewSession) {
            //alert('isNewSession');
            //console.log('isNewSession');
            window.location.reload();
        }

    }
}

redcmsAjax.WebRequestCompletedDefault = function(executor, eventArgs) {
    if (executor.get_responseAvailable()) {
        wr = executor.get_webRequest();
        tempPara = wr.get_headers()["X-redcms-ajaxpara"];

        targetElement = $get(tempPara.targetElementId);

        if (executor.get_statusCode() != 200) {
            redcmsAjax.WebRequestError(executor, tempPara);
        } else {
            if (tempPara.displayType == 'append') {
                // Display Web request body.
                targetElement.innerHTML += executor.get_responseData();
                //}else if(tempPara.displayType == 'swap'){
            } else {
                // Clear the previous results. 
                targetElement.innerHTML = "";
                // Display Web request body.
                targetElement.innerHTML += executor.get_responseData();
            }
        }
    }
}

redcmsAjax.WebRequestInvokeDefault = function(tempArgs) {
    redcmsAjax.WebRequestErrorClear(tempArgs);
    targetElement = $get(tempArgs.targetElementId);
    if (targetElement) {
        if (tempArgs.InvokeDefaultHTML) {
            targetElement.innerHTML = tempArgs.InvokeDefaultHTML;
        } else {
            targetElement.innerHTML = "loading...";
        }
    }
}

redcmsAjax.WebRequestError = function(executor, tempArgs) {
    if (tempArgs == null) {
        if (typeof (eval(tempArgs.onWebRequestError)) == 'function') {
            eval(tempArgs.onWebRequestError + '(executor, tempArgs)');
        } else if (typeof (OnWebRequestError) == 'function') {
            OnWebRequestError(executor, tempArgs);
        } else {
            if ($get(tempArgs.errorMessageBox)) {
                errorMessageBox = $get(tempArgs.errorMessageBox);
            } else if ($get('errorMessageBox')) {
                errorMessageBox = $get('errorMessageBox');
            } else {
                errorMessageBox = null;
            }
            if (errorMessageBox) {
                errorMessageBox.innerHTML = 'error: ' + executor.get_statusCode();
                errorMessageBox.style.visibility = 'visible';
            }
        }
    }
}

redcmsAjax.WebRequestErrorClear = function(tempArgs) {
    if (typeof (eval(tempArgs.onWebRequestErrorClear)) == 'function') {
        eval(tempArgs.onWebRequestErrorClear + '(tempArgs)');
    } else if (typeof (OnWebRequestError) != 'function' && typeof (eval(tempArgs.onWebRequestError)) != 'function') {
        if ($get(tempArgs.errorMessageBox)) {
            errorMessageBox = $get(tempArgs.errorMessageBox);
        } else if ($get('errorMessageBox')) {
            errorMessageBox = $get('errorMessageBox');
        } else {
            errorMessageBox = null;
        }
        if (errorMessageBox) {
            errorMessageBox.innerHTML = '';
            errorMessageBox.style.visibility = 'hidden';
        }
    }
}


redcmsAjax.S4 = function() {
    {
        return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
    }
}

redcmsAjax.guid = function() {
    return (redcmsAjax.S4() + redcmsAjax.S4() + "-" + redcmsAjax.S4() + "-" + redcmsAjax.S4() + "-" + redcmsAjax.S4() + "-" + redcmsAjax.S4() + redcmsAjax.S4() + redcmsAjax.S4());
}



redcmsAjax.isGuid = function(expression) {
    if (expression != null) {
        regex = /^(\{{0,1}([0-9a-fA-F]){8}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){12}\}{0,1})$/;
        return regex.test(expression);
    }
    return false;
}

redcmsAjax.WebRequest.registerClass('redcmsAjax.WebRequest', Sys.Net);
redcmsAjax.WebRequestCompletedDefault.registerClass('redcmsAjax.WebRequestCompletedDefault', Sys.Net);
redcmsAjax.WebRequestInvokeDefault.registerClass('redcmsAjax.WebRequestCompletedDefault', Sys.Net);
redcmsAjax.WebRequestError.registerClass('redcmsAjax.WebRequestError', Sys.Net);
redcmsAjax.WebRequestErrorClear.registerClass('redcmsAjax.WebRequestErrorClear', Sys.Net);


if (typeof (Sys) !== 'undefined') Sys.Application.notifyScriptLoaded();

/*
Parameter redcmsAjax.WebRequest:
url:
Pfad zur Ziel-Datei
        
body:
Inhalt im Body (Parameter bei POST)
        
requestMethod:
'GET'[default] oder 'POST'
        
onComleted:
false oder null - es wird keine funktion nach beendigung des Requests ausgeführt
true            - default funktion 'WebRequestCompletedDefault' wird aufgerufen
'funktionname'  - Name einer personalisierten Funktion
es wird übergeben (executor, eventArgs)
zusätzliche Parameter stehen zur verfügung über:
wr = executor.get_webRequest();
tempPara = wr.get_headers()["X-redcms-ajaxpara"];
        
onInvoke:
false oder null - es wird keine funktion vor aschicken des Requests ausgeführt
true            - default funktion 'WebRequestInvokeDefault' wird aufgerufen
'funktionname'  - Name einer personalisierten Funktion
es wird übergeben (X-redcms-ajaxpara)
zusätzliche Parameter stehen direkt zur verfügung
                            
[X-redcms-ajaxpara]:
JSON-Objekt oder String (wird al zusätzlicher Parameter bei redcmsAjax.WebRequest übergeben)

Standart Parameter im JSON-Parameter:

targetElementId:
ID des Ziel-Elements

displayType:
'swap'[default] - Inhalt des Ziel-Elements wird Andwort-Content ausgetauscht
'append' - Andwort-Content wird im Ziel-Element angehängt
            
onWebRequestError:
Name einer personalisierten Funktion zur Fehlerbehandlung, 
wird über 'WebRequestError' aufgerufen wenn nicht Stauscode 200 zurückgeliefert wird (in WebRequestCompletedDefault)
es wird übergeben (executor, X-redcms-ajaxpara)
zusätzliche Parameter stehen direkt zur verfügung
                
onWebRequestErrorClear:
Name einer personalisierten Funktion zum zurücksetzen der Fehlerbehandlung, 
wird nur in 'WebRequestInvokeDefault' über 'WebRequestErrorClear' aufgerufen
es wird übergeben (X-redcms-ajaxpara)
zusätzliche Parameter stehen direkt zur verfügung

errorMessageBox:
ID des Elements zur Fehlerausgabe in 'WebRequestError' wenn keine personalisierte Funktion angegeben wurde
            
InvokeDefaultHTML:
HTML-Code der in 'WebRequestInvokeDefault' ins Ziel-Element geschrieben wird
            
        
es könne beliebige Parameter hinzugefügt werden um sie in den personalisierten Funktionen zuverarbeiten
        

    
    
Beispiel Aufruf:
    
redcmsAjax.WebRequest('getTarget.htm', false, 'GET', true, true, {targetElementId : 'contentBox1'});
    
redcmsAjax.WebRequest('getTarget.htm', false, 'GET', 'OnCompletedCustomer', 'OnInvokeCustomer', {targetElementId : 'contentBox1', displayType : 'append', wert1 : 1, wert2 : 'abc'});
    

*/


Type.registerNamespace('redcmsForm');

redcmsForm.fillAndShowFormByJsonValue = function(formObj, JsonField) {
    for (var item = 0; item < formObj.FormItems.length; item++) {
        redcmsForm.fillFieldByJsonValue(formObj.FormItems[item], JsonField);
        redcmsForm.showFieldByJsonValue(formObj.FormItems[item]);

        if (formObj.FormItems[item].HeaderResponse && $get(formObj.FormItems[item].HeaderResponse.Advice)) {
            $get(formObj.FormItems[item].HeaderResponse.Advice).innerHTML = '';
        }
        if (formObj.FormItems[item].HeaderResponse && $get(formObj.FormItems[item].HeaderResponse.iCal)) {
            $get(formObj.FormItems[item].HeaderResponse.iCal).style.visibility = 'hidden';
        }

    }

}

redcmsForm.fillFormByJsonValue = function(formObj, JsonField) {
    for (var item = 0; item < formObj.FormItems.length; item++) {
        redcmsForm.fillFieldByJsonValue(formObj.FormItems[item], JsonField);
    }

}

redcmsForm.showFieldByJsonValue = function(fieldItem) {
    if ($get(fieldItem.DisplayBoxId)) {
        Sys.UI.DomElement.setVisible($get(fieldItem.DisplayBoxId), false);
    }
    if ($get(fieldItem.InputBoxId)) {
        Sys.UI.DomElement.setVisible($get(fieldItem.InputBoxId), true);
    }
    if (fieldItem.InputType == 'autocomplete' && typeof (AutoCompleteInit) == 'function') {
        AutoCompleteInit(fieldItem.InputId);
    }

    if (fieldItem.InputType == 'contact') {

    }

}

redcmsForm.hideField = function(fieldItem) {
    if ($get(fieldItem.DisplayBoxId)) {
        Sys.UI.DomElement.setVisible($get(fieldItem.DisplayBoxId), true);
    }
    if ($get(fieldItem.InputBoxId)) {
        Sys.UI.DomElement.setVisible($get(fieldItem.InputBoxId), false);
    }
}

redcmsForm.restoreHeaderResponse = function(fieldItem) {
    if (fieldItem.HeaderResponse && $get(fieldItem.HeaderResponse.Advice)) {
        var tempValue = fieldItem.HeaderResponse.Value;
        if (tempValue.length > 0) {
            if (fieldItem.HeaderResponse.Prefix) {
                tempValue = fieldItem.HeaderResponse.Prefix + ' ' + tempValue;
            }
            if (fieldItem.HeaderResponse.Sufix) {
                tempValue = tempValue + ' ' + fieldItem.HeaderResponse.Sufix;
            }
        }
        $get(fieldItem.HeaderResponse.Advice).innerHTML = tempValue;
    }

    if (fieldItem.HeaderResponse && $get(fieldItem.HeaderResponse.iCal)) {
        var tempValue = fieldItem.HeaderResponse.Value;
        if (tempValue != null && tempValue.length > 0) {
            $get(fieldItem.HeaderResponse.iCal).style.visibility = 'visible';
        }
    }

}

redcmsForm.fillJsonItemValueByField = function(fieldItem, fieldValue) {
    fieldValue = fieldValue || redcmsForm.getParameterValue(fieldItem);
    fieldItem.ItemValue = fieldValue;
    if (fieldItem.InputType == 'autocomplete') {
        fieldItem.ItemValueText = $get(fieldItem.InputId).value;
    }
    if (fieldItem.InputType == 'contact') {
        fieldItem.ItemValueText = $get(fieldItem.InputId).value;
    }
}

redcmsForm.fillFieldByJsonValue = function(fieldItem, JsonField) {
    if (fieldItem.InputType == 'text' || fieldItem.InputType == 'date' || fieldItem.InputType == 'hidden') {
        if ($get(fieldItem.InputId)) {
            $get(fieldItem.InputId).value = fieldItem[JsonField];
        }
    }
    else if (fieldItem.InputType == 'textarea') {
        if ($get(fieldItem.InputId)) {
            var ItemValue = fieldItem[JsonField];
            ItemValue = ItemValue.replace(/<br \/>/g, '\n');
            ItemValue = ItemValue.replace(/<br\/>/g, '\n');
            ItemValue = ItemValue.replace(/<br>/g, '\n');
            $get(fieldItem.InputId).value = ItemValue;
        }
    }
    else if (fieldItem.InputType == 'selectbox') {
        if ($get(fieldItem.InputId)) {
            for (var i = 1; i < $get(fieldItem.InputId).length; i++) {
                if ($get(fieldItem.InputId)[i].value == fieldItem[JsonField]) {
                    $get(fieldItem.InputId)[i].selected = true;
                }
            }
        }
    }
    else if (fieldItem.InputType == 'radio') {
        radioButtons = document.getElementsByName(fieldItem.InputId);
        for (var u = 0; u < radioButtons.length; u++) {
            if (radioButtons[u].value == fieldItem.ItemValue) {
                radioButtons[u].checked = true;
            }
            else {
                radioButtons[u].checked = false;
            }
        }
    }
    else if (fieldItem.InputType == 'checkbox') {
        if (fieldItem[JsonField] == fieldItem.ItemOptions.trueValue) {
            if ($get(fieldItem.InputId)) {
                $get(fieldItem.InputId).checked = true;
            }
            if ($get(fieldItem.InputId + '_ckeckboxlabel')) {
                $get(fieldItem.InputId + '_ckeckboxlabel').innerHTML = fieldItem.ItemOptions.trueText;
            }
        }
        else if (fieldItem[JsonField] == fieldItem.ItemOptions.falseValue) {
            if ($get(fieldItem.InputId)) {
                $get(fieldItem.InputId).checked = false;
            }
            if ($get(fieldItem.InputId + '_ckeckboxlabel')) {
                $get(fieldItem.InputId + '_ckeckboxlabel').innerHTML = fieldItem.ItemOptions.falseText;
            }
        }
    }
    else if (fieldItem.InputType == 'autocomplete') {
        if ($get(fieldItem.InputId + '_id')) {
            $get(fieldItem.InputId + '_id').value = fieldItem[JsonField];
        }
        if ($get(fieldItem.InputId)) {
            $get(fieldItem.InputId).value = fieldItem[JsonField + 'Text'];
        }
    }
    else if (fieldItem.InputType == 'contact') {
        if ($get(fieldItem.InputId + '_id')) {
            $get(fieldItem.InputId + '_id').value = fieldItem[JsonField];
        }
        if ($get(fieldItem.InputId)) {
            $get(fieldItem.InputId).value = fieldItem[JsonField + 'Text'];
        }
    }
}


redcmsForm.fillFormByValueField = function(formObj, ValueFieldSuffix) {
    ValueFieldSuffix = ValueFieldSuffix || '';
    for (var item = 0; item < formObj.FormItems.length; item++) {
        redcmsForm.fillFieldByValueField(formObj.FormItems[item], ValueFieldSuffix);
    }

}

redcmsForm.fillFieldByValueField = function(fieldItem, ValueFieldSuffix) {
    ValueFieldSuffix = ValueFieldSuffix || '';

    if (fieldItem.InputType == 'text' || fieldItem.InputType == 'textarea' || fieldItem.InputType == 'date' || fieldItem.InputType == 'hidden') {
        if ($get(fieldItem.InputId) && $get(fieldItem.valueId + ValueFieldSuffix)) {
            $get(fieldItem.InputId).value = $get(fieldItem.valueId + ValueFieldSuffix).value;
        }
    }
    else if (fieldItem.InputType == 'autocomplete') {
        if ($get(fieldItem.InputId + '_id') && $get(fieldItem.valueId + ValueFieldSuffix + '_id')) {
            $get(fieldItem.InputId + '_id').value = $get(fieldItem.valueId + ValueFieldSuffix + '_id').value;

            $get(fieldItem.InputId).value = $get(fieldItem.valueId + ValueFieldSuffix).defaultValue;

        }
    }
    else if (fieldItem.InputType == 'contact') {
        if ($get(fieldItem.InputId + '_id') && $get(fieldItem.valueId + ValueFieldSuffix + '_id')) {
            $get(fieldItem.InputId + '_id').value = $get(fieldItem.valueId + ValueFieldSuffix + '_id').value;

            $get(fieldItem.InputId).value = $get(fieldItem.valueId + ValueFieldSuffix).defaultValue;

        }
    }
    else if (fieldItem.InputType == 'selectbox') {
        if ($get(fieldItem.InputId) && $get(fieldItem.valueId + ValueFieldSuffix)) {
            for (var i = 1; i < $get(fieldItem.InputId).length; i++) {
                if ($get(fieldItem.InputId)[i].value == $get(fieldItem.valueId + ValueFieldSuffix).value) {
                    $get(fieldItem.InputId)[i].selected = true;
                }
            }
        }
    }

}


redcmsForm.clearField = function(fieldItem) {
    if (fieldItem.InputType == 'text' || fieldItem.InputType == 'textarea' || fieldItem.InputType == 'date' || fieldItem.InputType == 'hidden') {
        if ($get(fieldItem.InputId)) {
            $get(fieldItem.InputId).value = '';
        }
    }
    else if (fieldItem.InputType == 'selectbox') {
        if ($get(fieldItem.InputId)) {
            $get(fieldItem.InputId).selectedIndex = 0;
        }
    }
    else if (fieldItem.InputType == 'autocomplete') {
        if ($get(fieldItem.InputId)) {
            $get(fieldItem.InputId).value = '';
        }
        if ($get(fieldItem.InputId + '_id')) {
            $get(fieldItem.InputId + '_id').value = '';
        }
    }
    else if (fieldItem.InputType == 'contact') {
        if ($get(fieldItem.InputId)) {
            $get(fieldItem.InputId).value = '';
        }
        if ($get(fieldItem.InputId + '_id')) {
            $get(fieldItem.InputId + '_id').value = '';
        }
    }
}


redcmsForm.clearAdviceMessage = function(fieldItem) {
    if ($get(fieldItem.InputId)) {
        Sys.UI.DomElement.removeCssClass($get(fieldItem.InputId), 'messageInputHighlight');
    }
    if ($get(fieldItem.adviceId)) {
        $get(fieldItem.adviceId).innerHTML = '';
    }
}

redcmsForm.showAdviceMessage = function(fieldItem) {
    if ($get(fieldItem.InputId)) {
        Sys.UI.DomElement.addCssClass($get(fieldItem.InputId), 'messageInputHighlight');
    }
    if ($get(fieldItem.adviceId)) {
        $get(fieldItem.adviceId).style.display = 'block';
    }
}
redcmsForm.hideAdviceMessage = function(fieldItem) {
    if ($get(fieldItem.InputId)) {
        Sys.UI.DomElement.removeCssClass($get(fieldItem.InputId), 'messageInputHighlight');
    }
    if ($get(fieldItem.adviceId)) {
        $get(fieldItem.adviceId).style.display = 'none';
    }
}

redcmsForm.findObject = function(itemsArray, name) {
    for (var item = 0; item < itemsArray.length; item++) {
        if (itemsArray[item].ParameterName == name) return itemsArray[item];
    }

    return null;
}

redcmsForm.getRequestArray = function(formObj, post, get, dataIdPrefix, dataIdContent) {
    var postArray = post.split(",");
    var getArray = get.split(",");
    var prefArray = dataIdPrefix.split(",");

    var requestVariable = new Array();
    for (var item = 0; item < postArray.length; item++) {
        var name = postArray[item];

        var formObjItem = redcmsForm.findObject(formObj.FormItems, name);
        if (formObjItem != null) {
            var formItem = new Object();
            formItem["ParameterType"] = 'post';
            formItem["ParameterName"] = formObjItem["ParameterName"];
            formItem["ParameterValue"] = redcmsForm.getParameterValue(formObjItem);
            requestVariable.push(formItem);
        }
        formObjItem = null;
    }

    for (var item = 0; item < getArray.length; item++) {
        var name = getArray[item];

        var formObjItem = redcmsForm.findObject(formObj.FormItems, name);
        if (formObjItem != null) {
            var formItem = new Object();
            formItem["ParameterType"] = 'get';
            formItem["ParameterName"] = name;
            formItem["ParameterValue"] = redcmsForm.getParameterValue(formObjItem);
            requestVariable.push(formItem);
        }
    }

    //prefArray
    for (var item = 0; item < prefArray.length; item++) {
        var name = prefArray[item];
        var formObjItemTemp = redcmsForm.findObject(requestVariable, name);
        formObjItemTemp["ParameterName"] = dataIdContent + ':' + name;
    }

    return requestVariable;
}

redcmsForm.getURL = function(url, requestVariable, dataIdContent) {
    var urlTemp = url + '?ContentDataId=' + dataIdContent;
    for (var item = 0; item < requestVariable.length; item++) {
        if (requestVariable[item].ParameterType == 'get') {
            urlTemp += '&' + requestVariable[item].ParameterName + '=' + encodeURIComponent(requestVariable[item].ParameterValue);
        }
    }
    return urlTemp;
}

redcmsForm.getBodyText = function(requestVariable) {
    var bodyText = '';
    for (var item = 0; item < requestVariable.length; item++) {
        if (requestVariable[item].ParameterType == 'post') {
            bodyText += requestVariable[item].ParameterName + '=' + encodeURIComponent(requestVariable[item].ParameterValue) + '&';
        }
    }
    return bodyText;
}

redcmsForm.getParameterName = function(fieldItem, ContentDataId) {
    var parameterName = ''
    if (fieldItem.ParameterName) {
        parameterName = ContentDataId + ':' + fieldItem.ParameterName;
    }
    else {
        parameterName = ContentDataId + ':NoParameterName';
    }
    return parameterName;
}

redcmsForm.getParameterValue = function(fieldItem) {
    var parameterValue = '';
    if (fieldItem.InputType == 'text' || fieldItem.InputType == 'textarea' || fieldItem.InputType == 'date' || fieldItem.InputType == 'hidden') {
        parameterValue = $get(fieldItem.InputId).value;
    }
    else if (fieldItem.InputType == 'selectbox') {
        parameterValue = $get(fieldItem.InputId)[$get(fieldItem.InputId).selectedIndex].value;
    }
    else if (fieldItem.InputType == 'autocomplete') {
        if ($get(fieldItem.InputId)) {
            if ($get(fieldItem.InputId).value.length <= 0) {
                parameterValue = '-1';
            }
            else {
                parameterValue = $get(fieldItem.InputId + '_id').value;
            }
        }
    }
    else if (fieldItem.InputType == 'contact') {
        if ($get(fieldItem.InputId)) {
            if ($get(fieldItem.InputId).value.length <= 0) {
                parameterValue = '-1';
            }
            else {
                parameterValue = $get(fieldItem.InputId + '_id').value;
            }
        }
    }
    else if (fieldItem.InputType == 'radio') {
        radioButtons = document.getElementsByName(fieldItem.InputId);
        for (var i = 0; i < radioButtons.length; i++) {
            if (radioButtons[i].checked) {
                parameterValue = radioButtons[i].value;
            }
        }
    }
    else if (fieldItem.InputType == 'checkbox') {
        if (!!fieldItem.ItemOptions) {
            if ($get(fieldItem.InputId).checked) {
                parameterValue = fieldItem.ItemOptions.trueValue;
            }
            else {
                parameterValue = fieldItem.ItemOptions.falseValue;
            }

        }
    } else if (fieldItem.InputType == 'none') {
        parameterValue = fieldItem.InputId;
    }

    //var parameterValueURI = encodeURIComponent(parameterValue);
    //alert(parameterValueURI);
    return parameterValue;
}

redcmsForm.getParameterDefaultValue = function(fieldItem) {
    return $get(fieldItem.InputId).getAttribute('defaultValue'); ;
}


redcmsForm.checkValueChanged = function(fieldItem) {
    var valueChanged = false;
    if (fieldItem.InputType == 'text' || fieldItem.InputType == 'textarea' || fieldItem.InputType == 'date') {
        if ($get(fieldItem.InputId) && $get(fieldItem.InputId).value != fieldItem.ItemValue) {
            valueChanged = true;
        }
    }
    else if (fieldItem.InputType == 'autocomplete') {
        if ($get(fieldItem.InputId + '_id') && $get(fieldItem.InputId + '_id').value != fieldItem.ItemValue) {
            valueChanged = true;
        }

    }
    else if (fieldItem.InputType == 'contact') {
        if ($get(fieldItem.InputId + '_id') && $get(fieldItem.InputId + '_id').value != fieldItem.ItemValue) {
            valueChanged = true;
        }

    }
    else if (fieldItem.InputType == 'selectbox') {
        if ($get(fieldItem.InputId) && $get(fieldItem.InputId)[$get(fieldItem.InputId).selectedIndex].value != fieldItem.ItemValue) {
            valueChanged = true;
        }
    }
    else if (fieldItem.InputType == 'radio') {

    }
    else if (fieldItem.InputType == 'checkbox') {
        var valueTemp = '';
        if ($get(fieldItem.InputId).checked) {
            valueTemp = fieldItem.ItemOptions.trueValue;
        }
        else {
            valueTemp = fieldItem.ItemOptions.falseValue;
        }

        if ($get(fieldItem.InputId) && valueTemp != fieldItem.ItemValue) {
            valueChanged = true;
        }
    }


    return valueChanged;
}

redcmsForm.checkRequiredField = function(fieldItem) {
    var fieldCheckOK = true;
    if (!!fieldItem.RequiredField && eval(fieldItem.RequiredField) == true) {
        if (fieldItem.InputType == 'text' || fieldItem.InputType == 'textarea' || fieldItem.InputType == 'date' || fieldItem.InputType == 'autocomplete' || fieldItem.InputType == 'contact') {
            var RegExpTerm = /[^\s*$]/;
            var fieldValue = redcmsForm.getParameterValue(fieldItem);
            if (RegExpTerm.test(fieldValue) == false) {
                fieldCheckOK = false;
            }
        }
        else if (fieldItem.InputType == 'selectbox') {
            if (!!$get(fieldItem.InputId) && $get(fieldItem.InputId).selectedIndex <= 0) {
                fieldCheckOK = false;
            }
        }
        else if (fieldItem.InputType == 'radio') {
            //fieldCheckOK = false;
        }
        else if (fieldItem.InputType == 'checkbox') {
            if (!!$get(fieldItem.InputId) && $get(fieldItem.InputId).checked == false) {
                fieldCheckOK = false;
            }
        }
    }
    return fieldCheckOK;
}

redcmsForm.checkRequiredFieldWidthMessage = function(fieldItem) {
    var fieldCheckOK = redcmsForm.checkRequiredField(fieldItem);
    if (fieldCheckOK == false) {
        if ($get(fieldItem.adviceId) && !!fieldItem.RequiredMessage && fieldItem.RequiredMessage.length > 0) {
            $get(fieldItem.adviceId).innerHTML = fieldItem.RequiredMessage;
        }
        if ($get(fieldItem.InputId)) {
            Sys.UI.DomElement.addCssClass($get(fieldItem.InputId), 'messageInputHighlight');
        }
    }
    else {
        if ($get(fieldItem.adviceId) && !!fieldItem.RequiredMessage && fieldItem.RequiredMessage.length > 0) {
            $get(fieldItem.adviceId).innerHTML = '&#160;';
        }
        if ($get(fieldItem.InputId)) {
            Sys.UI.DomElement.removeCssClass($get(fieldItem.InputId), 'messageInputHighlight');
        }

    }
    return fieldCheckOK;
}


redcmsForm.checkValidatedFiled = function(fieldItem, fieldValue) {
    fieldValue = fieldValue || redcmsForm.getParameterValue(fieldItem);
    var fieldCheckOK = true;
    if (!!fieldItem.RegExp && fieldItem.RegExp.length > 0) {
        if (fieldItem.RegExp == 'currency') {
            if (fieldValue.length > 0) {
                var numberVar = Number.parseLocale(fieldValue);
                if (isNaN(numberVar)) {
                    fieldCheckOK = false;
                    if ($get(fieldItem.adviceId) && !!fieldItem.ErrorMessage && fieldItem.ErrorMessage.length > 0) {
                        $get(fieldItem.adviceId).innerHTML = fieldItem.ErrorMessage;
                    }
                    if ($get(fieldItem.InputId)) {
                        Sys.UI.DomElement.addCssClass($get(fieldItem.InputId), 'messageInputHighlight');
                    }
                }
            }
        }
        else if (fieldItem.RegExp == 'int') {
            if (fieldValue.length > 0) {
                var numberVar = Number.parseLocale(fieldValue);
                var numberVarInt = parseInt(fieldValue);
                if (isNaN(numberVar) || numberVar != numberVarInt) {
                    fieldCheckOK = false;
                    if ($get(fieldItem.adviceId) && !!fieldItem.ErrorMessage && fieldItem.ErrorMessage.length > 0) {
                        $get(fieldItem.adviceId).innerHTML = fieldItem.ErrorMessage;
                    }
                    if ($get(fieldItem.InputId)) {
                        Sys.UI.DomElement.addCssClass($get(fieldItem.InputId), 'messageInputHighlight');
                    }
                }
            }
        }
        else {
            RegExpTerm = eval(fieldItem.RegExp);
            if (RegExpTerm.test(fieldValue) == false) {
                fieldCheckOK = false;
                if ($get(fieldItem.adviceId) && !!fieldItem.ErrorMessage && fieldItem.ErrorMessage.length > 0) {
                    $get(fieldItem.adviceId).innerHTML = fieldItem.ErrorMessage;
                }
                if ($get(fieldItem.InputId)) {
                    Sys.UI.DomElement.addCssClass($get(fieldItem.InputId), 'messageInputHighlight');
                }
            }
        }

    }
    return fieldCheckOK;
}

redcmsForm.checkRequiredGroup = function(fieldGroup, FormItems) {
    var RegExpTerm = /[^\s*$]/;
    var groupCheckOK = true;

    for (var u = 0; u < fieldGroup.length; u++) {
        for (var i = 0; i < FormItems.length; i++) {
            if (fieldGroup[u] == FormItems[i].InputId) {
                groupCheckOK = redcmsForm.checkRequiredField(FormItems[i]);
            }
        }
    }

    if (groupCheckOK == false) {
        for (var u = 0; u < fieldGroup.length; u++) {
            for (var i = 0; i < FormItems.length; i++) {
                if (fieldGroup[u] == FormItems[i].InputId) {
                    if ($get(FormItems[i].adviceId) && !!FormItems[i].RequiredMessage && FormItems[i].RequiredMessage.length > 0) {
                        $get(FormItems[i].adviceId).innerHTML = FormItems[i].RequiredMessage;
                    }
                }
            }
        }
    }
    return groupCheckOK;
}


redcmsForm.refreshListFormAfterSave = function(formObj, ValueFieldSuffix) {
    ValueFieldSuffix = ValueFieldSuffix || '';
    for (var item = 0; item < formObj.FormItems.length; item++) {
        redcmsForm.refreshListItemAfterSave(formObj.FormItems[item], ValueFieldSuffix);
    }

}

redcmsForm.refreshListItemAfterSave = function(fieldItem, ValueFieldSuffix) {
    ValueFieldSuffix = ValueFieldSuffix || '';

    if (fieldItem.InputType == 'text' || fieldItem.InputType == 'date' || fieldItem.InputType == 'hidden') {
        $get(fieldItem.valueId + ValueFieldSuffix).value = $get(fieldItem.InputId).value;

        $get(fieldItem.listId + ValueFieldSuffix).innerHTML = $get(fieldItem.InputId).value;
    }
    else if (fieldItem.InputType == 'textarea') {
        $get(fieldItem.valueId + ValueFieldSuffix).value = $get(fieldItem.InputId).value;

        $get(fieldItem.listId + ValueFieldSuffix).innerHTML = $get(fieldItem.InputId).value.replace(/\n/g, '<br />');
    }
    else if (fieldItem.InputType == 'selectbox') {

        $get(fieldItem.valueId + ValueFieldSuffix).value = $get(fieldItem.InputId).value;

        $get(fieldItem.listId + ValueFieldSuffix).innerHTML = $get(fieldItem.InputId)[$get(fieldItem.InputId).selectedIndex].innerHTML;
    }
    else if (fieldItem.InputType == 'autocomplete') {
        $get(fieldItem.valueId + ValueFieldSuffix + '_id').value = $get(fieldItem.InputId + '_id').value;

        $get(fieldItem.listId + ValueFieldSuffix).innerHTML = $get(fieldItem.InputId).value.replace(/\n/g, '<br />');
    }
    else if (fieldItem.InputType == 'contact') {
        $get(fieldItem.valueId + ValueFieldSuffix + '_id').value = $get(fieldItem.InputId + '_id').value;

        $get(fieldItem.listId + ValueFieldSuffix).innerHTML = $get(fieldItem.InputId).value.replace(/\n/g, '<br />');
    }


}





redcmsForm.fillFormForDelete = function(formObj, ValueFieldSuffix) {
    ValueFieldSuffix = ValueFieldSuffix || '';
    for (var item = 0; item < formObj.FormItems.length; item++) {
        redcmsForm.fillFieldForDelete(formObj.FormItems[item], ValueFieldSuffix);
    }

}

redcmsForm.fillFieldForDelete = function(fieldItem, ValueFieldSuffix) {
    ValueFieldSuffix = ValueFieldSuffix || '';

    if ($get(fieldItem.deleteId) && $get(fieldItem.listId + ValueFieldSuffix)) {
        $get(fieldItem.deleteId).innerHTML = $get(fieldItem.listId + ValueFieldSuffix).innerHTML;
    }
}




redcmsForm.refreshView = function(formObj) {
    for (var item = 0; item < formObj.FormItems.length; item++) {
        redcmsForm.fillFieldByValueField(formObj.FormItems[item]);
    }

}

/*
redcmsForm.refreshAndAndHideFields = function(formObj)
{
for(var item = 0; item < formObj.FormItems.length; item++)
{
redcmsForm.clearAdviceMessage(formObj.FormItems[item]);
redcmsForm.hideField(formObj.FormItems[item]);
redcmsForm.refreshViewItem(formObj.FormItems[item])
}
}
*/

redcmsForm.refreshViewItem = function(fieldItem) {

    if ($get(fieldItem.DisplayBoxId) && $get(fieldItem.InputId)) {
        if (fieldItem.InputType == 'text') {
            $get(fieldItem.DisplayBoxId).innerHTML = fieldItem.ItemValue;
        }
        else if (fieldItem.InputType == 'textarea') {
            $get(fieldItem.DisplayBoxId).innerHTML = fieldItem.ItemValue.replace(/\n/g, '<br />');
        }
        else if (fieldItem.InputType == 'selectbox') {
            if ($get(fieldItem.DisplayBoxId)) {
                if ($get(fieldItem.InputId)) {
                    selObj = $get(fieldItem.InputId);
                    for (var u = 0; u < selObj.length; u++) {
                        if (selObj[u].value == fieldItem.ItemValue) {
                            $get(fieldItem.DisplayBoxId).innerHTML = selObj[u].text;
                        }
                    }
                }
                else {
                    $get(fieldItem.DisplayBoxId).innerHTML = '';
                }
            }
        }
        else if (fieldItem.InputType == 'radio') {
            if ($get(fieldItem.DisplayBoxId)) {
                radioButtons = document.getElementsByName(fieldItem.InputId);
                for (var u = 0; u < radioButtons.length; u++) {
                    if (radioButtons[u].value == fieldItem.ItemValue) {
                        $get(fieldItem.DisplayBoxId).innerHTML = radioButtons[u].value;
                    }
                }
            }
        }
        else if (fieldItem.InputType == 'autocomplete') {

            if (typeof (AutoCompleteDestroy) == 'function') {

                AutoCompleteDestroy(fieldItem.InputId);
            }

            if ($get(fieldItem.DisplayBoxId).innerHTML != fieldItem.ItemValueText) {
                if ($get(fieldItem.InputId + '_swap')) {
                    if (fieldItem.ItemValue > 0) {
                        $get(fieldItem.InputId + '_swap').style.textDecoration = 'underline';
                    }
                    else {
                        $get(fieldItem.InputId + '_swap').style.textDecoration = 'none';
                    }
                }
                if ($get(fieldItem.DisplayBoxId)) {
                    $get(fieldItem.DisplayBoxId).innerHTML = fieldItem.ItemValueText;
                }

                if (typeof (appendContactDetail) == 'function') {
                    if ($get(fieldItem.DisplayBoxId + '_Box')) {
                        $get(fieldItem.DisplayBoxId + '_Box').innerHTML = '<img src="/projects/templates/redCMS_Main2/b8230c8f-7e85-4c01-862e-1654390c33e9/images/indubis-loader-big.gif" width="32" height="32" vspace="10" hspace="10" border="0" />';
                    }
                    ajaxURLtemp = ajaxURL + '?ContentDataId=' + ContentDataIdContact + '&OuputItemId=' + fieldItem.ModuleType + ':' + fieldItem.ItemValue + '&OutputIncludeChilds=false&OutputDetailed=true&OutputGetChilds=false&' + ContentDataIdContact + ':SetupId=' + fieldItem.SetupId + '&AutoCompleterId=' + fieldItem.InputId;
                    if (fieldItem.ItemValue != -1) {
                        redcmsAjax.WebRequest(ajaxURLtemp, null, 'GET', 'appendContactDetail', null, fieldItem);
                    }
                    else {
                        if ($get(fieldItem.DisplayBoxId + '_Box')) {
                            $get(fieldItem.DisplayBoxId + '_Box').innerHTML = '';
                        }
                    }
                }
                else {
                    $get(fieldItem.DisplayBoxId + '_Box').innerHTML = '';
                }
            }


        }

        else if (fieldItem.InputType == 'contact') {
            /*
            if (typeof (AutoCompleteDestroy) == 'function') {

                AutoCompleteDestroy(fieldItem.InputId);
            }
            */
            if ($get(fieldItem.DisplayBoxId).innerHTML != fieldItem.ItemValueText) {
                if ($get(fieldItem.InputId + '_swap')) {
                    if (fieldItem.ItemValue > 0) {
                        $get(fieldItem.InputId + '_swap').style.textDecoration = 'underline';
                    }
                    else {
                        $get(fieldItem.InputId + '_swap').style.textDecoration = 'none';
                    }
                }
                if ($get(fieldItem.DisplayBoxId)) {
                    $get(fieldItem.DisplayBoxId).innerHTML = fieldItem.ItemValueText;
                }

                if (typeof (appendContactDetail) == 'function') {
                    if ($get(fieldItem.DisplayBoxId + '_Box')) {
                        $get(fieldItem.DisplayBoxId + '_Box').innerHTML = '<img src="/projects/templates/redCMS_Main2/b8230c8f-7e85-4c01-862e-1654390c33e9/images/indubis-loader-big.gif" width="32" height="32" vspace="10" hspace="10" border="0" />';
                    }
                    ajaxURLtemp = ajaxURL + '?ContentDataId=' + ContentDataIdContact + '&OuputItemId=' + fieldItem.ModuleType + ':' + fieldItem.ItemValue + '&OutputIncludeChilds=false&OutputDetailed=true&OutputGetChilds=false&' + ContentDataIdContact + ':SetupId=' + fieldItem.SetupId + '&AutoCompleterId=' + fieldItem.InputId;
                    if (fieldItem.ItemValue != -1) {
                        redcmsAjax.WebRequest(ajaxURLtemp, null, 'GET', 'appendContactDetail', null, fieldItem);
                    }
                    else {
                        if ($get(fieldItem.DisplayBoxId + '_Box')) {
                            $get(fieldItem.DisplayBoxId + '_Box').innerHTML = '';
                        }
                    }
                }
                else {
                    $get(fieldItem.DisplayBoxId + '_Box').innerHTML = '';
                }
            }

        }
        
        else if (fieldItem.InputType == 'checkbox') {
            if (fieldItem.ItemOptions.trueValue == fieldItem.ItemValue) {
                $get(fieldItem.DisplayBoxId).innerHTML = fieldItem.ItemOptions.trueText;
            }
            else {
                $get(fieldItem.DisplayBoxId).innerHTML = fieldItem.ItemOptions.falseText;
            }

        }
    }

}


Type.registerNamespace('induBIS');

induBIS.returnHeaderJSON = function(executor) {
    var wr = executor.get_webRequest();
    return wr.get_headers()["X-redcms-ajaxpara"];
}

induBIS.returnAnswerJSON = function (executor) {
    var bodyTemp = executor.get_xml();
    
    


    var answerJSON = null;
    if (bodyTemp != null) {
        //console.log(bodyTemp.firstChild.tagName);
        if (bodyTemp.firstChild.tagName == 'json') {
            //answerJSON = eval('(' + bodyTemp.firstChild.firstChild.nodeValue + ')');
            //console.log(bodyTemp.firstChild.firstChild.nodeValue);
            answerJSON = Sys.Serialization.JavaScriptSerializer.deserialize(bodyTemp.firstChild.firstChild.nodeValue);
            //console.log(answerJSON);
        }
    }
    return answerJSON;
}





induBIS.returnLockedStatus = function(answerJSON) {
    var LockedStatus = null;
    if (!!answerJSON && !!answerJSON.LockedStatus[0]) {
        LockedStatus = answerJSON.LockedStatus[0].LockedTypus;
    }
    return LockedStatus;
}


induBIS.GeneralOutputMessage = function(message, messagetype, timer) {
    message = message || null;
    messagetype = messagetype || 'neutral';
    timer = timer || null;
    if (message == 'NULL') {
        message = null;
    }

    if (messagetype == 'neutral' && timer == null) {
        timer = 5000;
    }
    if ($get('GeneralMessageBox') && message != null) {
        Sys.UI.DomElement.setVisible($get('GeneralMessageBox'), true);
        if (message != null && $get('GeneralMessage')) {
            if ($('#GeneralMessage li:contains('+message+')').length == 0)
            {
                var messageLi = document.createElement("li");
                messageLi.id = redcmsAjax.guid();
                var attr = document.createAttribute("class");
                if (messagetype == 'error') {
                    attr.nodeValue = "errorMessage";
                }
                else {
                    attr.nodeValue = "neutralMessage";
                }
                messageLi.setAttributeNode(attr);
                messageLi.innerHTML = message;
                $get('GeneralMessage').appendChild(messageLi);
            
                if (timer != null) {
                    window.setTimeout("induBIS.GeneralOutputMessageRemoveLi('" + messageLi.id + "')", timer);
                }
            }
        }
    }
}


induBIS.GeneralOutputMessageRemoveLi = function(guid) {
    if ($get(guid)) {
        $get(guid).parentNode.removeChild($get(guid));
    }
    if ($get('GeneralMessage').childNodes.length == 0) {
        Sys.UI.DomElement.setVisible($get('GeneralMessageBox'), false);
    }
}

induBIS.GeneralOutputMessageRemove = function() {
    if ($get('GeneralMessageBox')) {
        if ($get('GeneralMessage')) {
            $get('GeneralMessage').innerHTML = ''
        }
        Sys.UI.DomElement.setVisible($get('GeneralMessageBox'), false);
    }
}


induBIS.SpecialOutputMessage = function(message, messagetype, timer, posElementId, addX, addY) {

    message = message || null;
    messagetype = messagetype || 'neutral';
    timer = timer || true;
    posElementId = posElementId || null;
    addX = addX || 0;
    addY = addY || 0;

    if (timer == true) {
        timer = 2000;
    }

    var sm = document.createElement("div");
    sm.id = redcmsAjax.guid();
    Sys.UI.DomElement.addCssClass(sm, 'specialOutputMessage');

    if (messagetype == 'error') {
        Sys.UI.DomElement.addCssClass(sm, 'errorMessage');
    } else {
        Sys.UI.DomElement.addCssClass(sm, 'neutralMessage');
    }

    if (message != null) {
        sm.innerHTML = message;
    }

    document.body.appendChild(sm);

    if (posElementId != null && $get(posElementId)) {
        var elementBounds = induBIS.getBounds($get(posElementId));
        sm.style.left = (elementBounds.x + addX) + 'px';
        sm.style.top = (elementBounds.y + addY) + 'px';
    }
    if (timer != null && timer != false) {
        window.setTimeout("SpecialOutputMessageRemove('" + sm.id + "')", timer);
    }
}

induBIS.SpecialOutputMessageRemove = function(guid) {
    if ($get(guid)) {
        $get(guid).parentNode.removeChild($get(guid));
    }
}



/*

GeneralOutputMessage(message, messagetype, timer)
-----------------------------------
message
text der angezeigt werden soll wirt in der ul angehäng

messagetype
error, neutral -> bestimmt erscheinung(css)

timer[OPTIONAL]
millisecunden bis meldung verschwindet

  
SpecialOutputMessage(message, messagetype, timer, posElementId, addX, addY)
----------------------------------------------------------------------------
-alle optional

message
text der angezeigt werden soll wirt in der ul angehäng

messagetype
error, neutral -> bestimmt erscheinung(css)
  
timer
millisecunden bis meldung verschwindet
  
posElementId
element an dessen position Meldung erscheinen soll
  
addX
versatz zu posElementId
  
addY
versatz zu posElementId


*/


induBIS.blockingScreen = function(SwapType) {
    SwapType = SwapType || false;
    if ($get('MainBlockingLayer')) {
        Sys.UI.DomElement.setVisible($get('MainBlockingLayer'), SwapType);
    }
}

induBIS.ShowAnswerMessages = function(answerJSON) {
    if (answerJSON != null && !!answerJSON.Messages && answerJSON.Messages.length > 0) {
        for (var i = 0; i < answerJSON.Messages.length; i++) {
            induBIS.GeneralOutputMessage(answerJSON.Messages[i].Message, answerJSON.Messages[i].MessageType);
        }
    }
    else {
        if (!!redcmsMessages && !!redcmsMessages.GeneralErrorMessage) {
            induBIS.GeneralOutputMessage(redcmsMessages.GeneralErrorMessage, 'error');
        }
    }
    induBIS.blockingScreen(false);
}



induBIS.ShowStatusErrorMessage = function(statusCode, statusText) {
    if (!!redcmsMessages && !!redcmsMessages.GeneralErrorMessage) {
        errorText = redcmsMessages.GeneralErrorMessage + '<br/>';
    }
    errorText += 'Status: <strong>[' + statusCode + ']</strong> ' + statusText;
    induBIS.GeneralOutputMessage(errorText, 'error');
    induBIS.blockingScreen(false);
}



induBIS.getLocation = function(element) {
    var position = Sys.UI.DomElement.getLocation(element);
    if (Sys.Browser.agent == Sys.Browser.Safari) {
        var doc = element && element.ownerDocument ? element.ownerDocument : document;
        var pageScrollTop = Math.max(doc.documentElement.scrollTop, doc.body.scrollTop);
        var pageScrollLeft = Math.max(doc.documentElement.scrollLeft, doc.body.scrollLeft);
        if (pageScrollTop > 0 || pageScrollLeft > 0) {
            var forms = doc.documentElement.getElementsByTagName("form");
            if (forms && forms.length > 0) {
                var formPos = Sys.UI.DomElement.getLocation(forms[0]);
                if (formPos.y && formPos.y < 0) {
                    position.y += pageScrollTop;
                }
                if (formPos.x && formPos.x < 0) {
                    position.x += pageScrollLeft;
                }
            }
        }
    }
    return position;
}

induBIS.getBounds = function(element) {
    var position = Sys.UI.DomElement.getBounds(element);
    if (Sys.Browser.agent == Sys.Browser.Safari) {
        var doc = element && element.ownerDocument ? element.ownerDocument : document;
        var pageScrollTop = Math.max(doc.documentElement.scrollTop, doc.body.scrollTop);
        var pageScrollLeft = Math.max(doc.documentElement.scrollLeft, doc.body.scrollLeft);
        if (pageScrollTop > 0 || pageScrollLeft > 0) {
            var forms = doc.documentElement.getElementsByTagName("form");
            if (forms && forms.length > 0) {
                var formPos = Sys.UI.DomElement.getBounds(forms[0]);
                if (formPos.y && formPos.y < 0) {
                    position.y += pageScrollTop;
                }
                if (formPos.x && formPos.x < 0) {
                    position.x += pageScrollLeft;
                }
            }
        }
    }
    return position;
}
