var specialFieldCheckError = '';
var strFormLanguage = 'GER';

function ReplaceSpecialChars(str)
{
	return str.replace(/_hex20_/g, " ");
}

function SetCookie(strName, strValue, strExpires, strPath, strDomain, strSecure)
{
  document.cookie = strName + "=" + escape(strValue) +
    ( (strExpires) ? ";expires=" + strExpires.toGMTString() : "") +
    ( (strPath)    ? ";path="    + strPath                  : "") +
    ( (strDomain)  ? ";domain="  + strDomain                : "") +
    ( (strSecure)  ? ";secure"                              : "");
}

function GetCookie(strName)
{
  var iStart = document.cookie.indexOf(strName + "=");
  var iLen   = iStart + strName.length + 1;
  if ((!iStart) && (strName != document.cookie.substring(0, strName.length))) { return null; }
  if (iStart == -1) { return null; }
  var iEnd = document.cookie.indexOf(";", iLen);
  if (iEnd == -1) { iEnd = document.cookie.length; }
  return(unescape(document.cookie.substring(iLen, iEnd)));
}

function saveFormValues(objForm)
{	
	var strValPrefix = 'ocmsformval_' + objForm.GUID.value + '_';
	
	var arRadiosHandled = new Array();
	
	for(var iElem = 0; iElem < objForm.elements.length; iElem++)
	{
		var objElem = objForm.elements[iElem];
		
		switch(objElem.type)
		{
			case 'text':
			case 'textarea':
				{
					SetCookie(strValPrefix + objElem.name, objElem.value);
				}
			break;
			case 'select-one':
				{
					for(var i = 0; i < objElem.options.length; i++)
					{
						if(objElem.options[i].selected)
						{
							SetCookie(strValPrefix + objElem.name, objElem.options[i].text);
							break;
						}
					}				
				}
			break;
			case 'radio':
				{
					var bRadioHandled = false;
					for(var i = 0; i < arRadiosHandled.length; i++)
					{
						if(arRadiosHandled[i] == objElem.name)
						{
							bRadioHandled = true;
							break;
						}
					}
					
					if(!bRadioHandled)
					{
						arRadiosHandled.push(objElem.name);
						if(!objElem.checked)
						{
							SetCookie(strValPrefix + objElem.name, '');
						}
					}
					
					if(objElem.checked)
					{
						SetCookie(strValPrefix + objElem.name, objElem.value);
					}
				}
			break;
			case 'checkbox':
				{
					SetCookie(strValPrefix + objElem.name + '_' + objElem.value, objElem.checked ? '1' : '0');
				}
			break;
		}
	}
}

function restoreFormValues(objForm)
{	
	var strValPrefix = 'ocmsformval_' + objForm.GUID.value + '_';
		
	for(var iElem = 0; iElem < objForm.elements.length; iElem++)
	{
		var objElem = objForm.elements[iElem];
		
		if(objElem.type == 'checkbox')
		{
			var strVal = GetCookie(strValPrefix + objElem.name + '_' + objElem.value);
			if(strVal != null)
			{
				objElem.checked = (strVal == '1');
			}
		}
		else
		{
			var strVal = GetCookie(strValPrefix + objElem.name);
			if(strVal != null)
			{		
				switch(objElem.type)
				{
					case 'text':
					case 'textarea':
						{
							objElem.value = strVal;
						}
					break;
					case 'select-one':
						{
							for(var i = 0; i < objElem.options.length; i++)
							{
								if(objElem.options[i].text == strVal)
								{
									objElem.options[i].selected = true;
									break;
								}
							}				
						}
					break;
					case 'radio':
						{
							objElem.checked = (objElem.value == strVal);
						}
					break;
				}
			}
		}
	}
}

function onFormSubmit(objForm, bRememberFormValues)
{
	var bRet = checkFormFields(objForm);
	if(bRet && bRememberFormValues)
	{
		saveFormValues(objForm);
	}
}

function checkFormFields(actForm)
{
    var iNumFields = actForm.elements.length - 1;
    for(var i = 0; i < iNumFields; i++)
    {
        var objField =  actForm.elements[i];
        if(isMandatoryField(objField.name))
        {
            // Prüfung besonderer Felder 0...kein "Special-Field", 1...Check ok, -1...check nok
            iCheckSpecialField = checkSpecialField(objField);

            if (iCheckSpecialField == -1)
            {
                if (specialFieldCheckError.length > 0)
                {
                    alert(ReplaceSpecialChars(specialFieldCheckError));
                }
                objField.focus();
                return false;
            }
            else if (iCheckSpecialField == 0)
            {
                //check Textboxes
                if(objField.type == 'text' || objField.type == 'textarea')
                {
                    objField.value = objField.value.trim();

                    if(objField.value == '')
                    {
                        if (strFormLanguage == 'ENG')
                        {
                            alert(ReplaceSpecialChars(getFieldName(objField.name)) + " must not be empty!");
                        }
                        else
                        {
                            alert(ReplaceSpecialChars(getFieldName(objField.name)) + " darf nicht leer sein!");
                        }
                        objField.focus();
                        return false;
                    }
                }

                //check Checkboxes and Radiobuttons
                if((objField.type == 'checkbox')||(objField.type == 'radio'))
                {
                    var isChecked = false;
                    var j = i;
                    while(j < iNumFields)
                    {
                        if(actForm.elements[j].name == objField.name)
                        {
                            if(actForm.elements[j].checked)
                            {
                                 isChecked = true;
                            }
                        }
                        else
                            break;
                        j++;
                    }

                    i = j-1;

                    if(!isChecked)
                    {
                        if (strFormLanguage == 'ENG')
                        {
                            alert(ReplaceSpecialChars(getFieldName(objField.name)) + " must be selected!");
                        }
                        else
                        {
                            alert(ReplaceSpecialChars(getFieldName(objField.name)) + " muss ausgewählt werden!");
                        }
                        objField.focus();
                        return false;
                    }
                }

                //check Selectboxes
                if(objField.type == 'select-one')
                {
                    if(objField.options[objField.selectedIndex].text == "")
                    {
                        if (strFormLanguage == 'ENG')
                        {
                            alert(ReplaceSpecialChars(getFieldName(objField.name)) + " must be selected!");
                        }
                        else
                        {
                            alert(ReplaceSpecialChars(getFieldName(objField.name)) + " muss ausgewählt werden!");
                        }
                        objField.focus();
                        return false;
                    }
                }
            }
        }
    }
    return true;
}

function isMandatoryField(strFieldName)
{
    var strSub = strFieldName.substr(4,2);
    if(strSub.indexOf("m") != -1)
        return true;
    else
        return false;
}

function getFieldName(strFieldName)
{
    var first = strFieldName.indexOf("_") + 1;
    return strFieldName.substring(first, strFieldName.length);
}

function handleEnter (field, event) {
    var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
    if (keyCode == 13)
    {
        if (field.type != 'textarea')
        {
            var i;
            for (i = 0; i < field.form.elements.length; i++)
                if (field == field.form.elements[i])
                    break;
            while(field.form.elements[i+1].type == "hidden"){
                i = i + 1;
             }
            i = i + 1 % field.form.elements.length;
            field.form.elements[i].focus();
            return false;
        }
    }

    return true;
}

var objButtonTmp;

function onSubmitClick(objButton)
{
	if(checkFormFields(document.forms[0]))
	{
		objButtonTmp = objButton;
		window.setTimeout('objButtonTmp.disabled = true;', 250);
		return true;
	}
	
	return false;
}
