function UrlEncode(Input)
{
    // The Javascript escape and unescape functions do not correspond
    // with what browsers actually do...
    var SAFECHARS = "0123456789" +                  // Numeric
                    "ABCDEFGHIJKLMNOPQRSTUVWXYZ" +  // Alphabetic
                    "abcdefghijklmnopqrstuvwxyz" +
                    "-_.!~*'()";                    // RFC2396 Mark characters
    var HEX = "0123456789ABCDEF";

    var plaintext = Input;
    var encoded = "";
    for (var i = 0; i < plaintext.length; i++)
    {
        var ch = plaintext.charAt(i);
        if (ch == " ")
        {
            encoded += "+"; 			// x-www-urlencoded, rather than %20
        }
        else if (SAFECHARS.indexOf(ch) != -1)
        {
            encoded += ch;
        }
        else
        {
            var charCode = ch.charCodeAt(0);
            if (charCode > 255)
            {
                alert("Unicode Character '"
                        + ch
                        + "' cannot be encoded using standard URL encoding.\n" +
                        "(URL encoding only supports 8-bit characters.)\n" +
                        "A space (+) will be substituted.");
                encoded += "+";
            }
            else
            {
                encoded += "%";
                encoded += HEX.charAt((charCode >> 4) & 0xF);
                encoded += HEX.charAt(charCode & 0xF);
            }
        }
    } // for

    return encoded;
}

function findPosX(obj) 
{
    var curleft = 0;
    if (obj != null)
    {
        if (obj.offsetParent) 
        {
            while (1) 
            {
                curleft += obj.offsetLeft;
                if (!obj.offsetParent) 
                    break;
                obj = obj.offsetParent;
            }
        } else if (obj.x) {
            curleft += obj.x;
        }
    }
    return curleft;
}

function findPosY(obj) 
{
    var curtop = 0;
    if (obj != null)
    {
        if (obj.offsetParent) 
        {
            while (1) 
            {
                curtop += obj.offsetTop;
                if (!obj.offsetParent) 
                    break;
                obj = obj.offsetParent;
            }
        } else if (obj.y) {
            curtop += obj.y;
        }
    }
    return curtop;
}

function GetElement(ElementName)
{
    if (document.all)
        return document.all[ElementName];
    else
        return document.getElementById(ElementName);
}

function GetDropDownValueFromObject(DropDown, DefaultValue)
{
    var Value = DefaultValue;
    if (DropDown != null)
    {
	    for (i = 0; i < DropDown.length; i++)
	        if (DropDown[i].selected)
		        Value = DropDown[i].value;
    }
    return Value;
}

function GetDropDownValue(DropDownName, DefaultValue)
{
    var Value = DefaultValue;
    var valuedropdown = GetElement(DropDownName);
    if (valuedropdown != null)
    {
	    for (i = 0; i < valuedropdown.length; i++)
	        if (valuedropdown[i].selected)
		        Value = valuedropdown[i].value;
    }
    return Value;
}

function GetInputValue(InputName)
{
    var InputValue = '';
    var input = GetElement(InputName);
    if (input != null)
        InputValue = input.value;
    return InputValue;
}

function GetCheckboxValue(CheckboxName)
{
    var CheckValue = '0';
    var checkbox = GetElement(CheckboxName);
    if (checkbox != null)
    {
        if (checkbox.checked)
            CheckValue = '1';
    }
    return CheckValue;
}

function GetListControlValues(ListName)
{
    var t = 0;
    var j = 0;
    var i = 0;
    var c = 0;
    var v = 0;
    var tableBody;
    var currentTd;
    var valueControl;
    var checkControl;
    var listValue = '';
    var table = GetElement(ListName);
    if (table != null)
    {
        for (j = 0; j < table.childNodes.length; j++)
        {
            tableBody = table.childNodes[j];
            for (i = 0; i < tableBody.childNodes.length; i++)
            {
                for (t = 0; t < tableBody.childNodes[i].childNodes.length; t++)
                {
                    currentTd = tableBody.childNodes[i].childNodes[t];
                    for (c = 0; c < currentTd.childNodes.length; c++)
                    {
                        valueControl = currentTd.childNodes[c];
                        for (v = 0; v < valueControl.childNodes.length; v++)
                        {
                            checkControl = valueControl.childNodes[v];
                            if (checkControl.id != '' && checkControl.checked)
                            {
                                if (listValue != '')
                                    listValue += '~';
                                listValue += valueControl.id.replace(ListName + '_Value_', '');
                            }
                        }
                    }
                }
            }
        }
    }
    
    return listValue;
}

function SendProfileMessage(SEOName)
{
    if (SEOName != '')
    {
        var SEONameOut = GetElement('Value1');
        SEONameOut.value = SEOName;
        var CreateTypeOut = GetElement('Value4');
        CreateTypeOut.value = 'sendmessage';
        document.SecondForm.action = '/CreateMessage';
        document.SecondForm.submit();
    }
}

function SelectLanguage(LangID, ReturnUrl)
{
    if (LangID != 0)
    {
        var LangIDOut = GetElement('Value1');
        LangIDOut.value = LangID;
        var UrlOut = GetElement('Value2');
        UrlOut.value = ReturnUrl;
        document.SecondForm.action = '/Language';
        document.SecondForm.submit();
    }
}

function FocusElement(ElementName)
{
    var browserVer = 0;
    var IsIE = navigator.appVersion.indexOf("MSIE") != -1;
    if (IsIE)
        browserVer = parseFloat(navigator.appVersion.split('MSIE')[1]);
    if (!IsIE || browserVer > 6) 
    {
        var Element = GetElement(ElementName);
        if (Element != null)
        {
            Element.focus();
            Element.focus();
        }
    }
}

function CountCharacters(TextBox, TextArea, MaxLength)
{
    var Input = TextBox.value;
    var Count = MaxLength - Input.length;
    var TextOut = GetElement(TextArea);
    if (Input.length > MaxLength)
    {
        Count = 0;
        TextBox.value = Input.substr(0, MaxLength);
    }
    TextOut.innerHTML = Count;
}

function ShowHideObject(ObjectName, Style)
{
    var ShowObject = GetElement(ObjectName);
    if (ShowObject != null)
        ShowObject.style.display = Style;
}

function HandleInviteAFriend(SenderMailField, SenderNameField, MailField, NameField, AdressbookMailField, AdressbookPasswordField, TextField)
{
    var SenderMailInput = GetElement(SenderMailField);
    var SenderNameInput = GetElement(SenderNameField);
    var SenderMail = GetInputValue(SenderMailField);
    var SenderName = GetInputValue(SenderNameField);
    var EMail = GetInputValue(MailField);
    var Name = GetInputValue(NameField);
    var AdressbookMail = GetInputValue(AdressbookMailField);
    var AdressbookPassword = GetInputValue(AdressbookPasswordField);
    var Invite = GetInputValue(TextField);

    // Felder pruefen
    var ErrorObject = '';
    ShowHideObject('RequiredSenderEMail', 'none');
    ShowHideObject('RequiredSenderName', 'none');
    ShowHideObject('RequiredFriendEMail', 'none');
    ShowHideObject('RequiredFriendName', 'none');
    ShowHideObject('RequiredFriendAdressbookEMail', 'none');
    ShowHideObject('RequiredAdressbookPassword', 'none');
    ShowHideObject('RequiredInviteText', 'none');
    if (Invite == '')
        ErrorObject = 'RequiredInviteText';
    if (AdressbookMail == '' && (EMail == '' || Name == ''))
        ErrorObject = 'RequiredFriendAdressbookEMail';
    if (AdressbookPassword == '' && (EMail == '' || Name == ''))
        ErrorObject = 'RequiredAdressbookPassword';
    if (Name == '' && (AdressbookMail == '' || AdressbookPassword == ''))
        ErrorObject = 'RequiredFriendName';
    if (EMail == '' && (AdressbookMail == '' || AdressbookPassword == ''))
        ErrorObject = 'RequiredFriendEMail';
    if (SenderNameInput && SenderName == '')
        ErrorObject = 'RequiredSenderName';
    if (SenderMailInput && SenderMail == '')
        ErrorObject = 'RequiredSenderEMail';

    // Wenn Fehler dann anzeigen, sonst abschicken
    if (ErrorObject == '')
        ExecuteInfoPopup('sendinviteafriend', SenderMail, SenderName, EMail, Name, AdressbookMail, AdressbookPassword, Invite);
    else
        ShowHideObject(ErrorObject, 'block');
}

function LoadTopFrameAndOpenMessenger(Url, AutoOpen)
{
    if (parent.frames.length != 0 && parent.frames[0].name == 'MainFrame')
    {
        if (AutoOpen)
            parent.Chat_OpenMessenger();
    }
    else
    {
        document.SecondForm.action = '/Main';
        document.SecondForm.Value1.value = Url;
        document.SecondForm.submit();
    }
}

function handleEnter(field, event)
{
    var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
    if (keyCode == 13)
    {
        var i;
        for (i = 0; i < field.form.elements.length; i++)
            if (field == field.form.elements[i])
            break;
        i = (i + 1) % field.form.elements.length;
        field.form.elements[i].focus();
        return false;
    }
    else
        return true;
}      

function SearchGlobal(What)
{
    if (What != null && What != '')
    {
        document.SecondForm.action = '/OverallSearch?searchtext=' + UrlEncode(What);
        document.SecondForm.Value1.value = What;
        document.SecondForm.submit();
    }
}