function replaceIt(string,suchen,ersetzen) {
    ausgabe = "" + string;
    while (ausgabe.indexOf(suchen)>-1) {
        pos= ausgabe.indexOf(suchen);
        ausgabe = "" + (ausgabe.substring(0, pos) + ersetzen +
        ausgabe.substring((pos + suchen.length), ausgabe.length));
    }
    return ausgabe;
}
function chkElement(name,err,type,len)
{
    var error=false;
	var e=document.getElementsByName(name)[0];
    if (!e) e=document.getElementById(name);
	if (e) {
            var v=e.value;
                switch(type) {
                case 'checkbox':
          			if (!e.checked) error=true;
                break;
                case 'radio':
                	var x=document.getElementsByName(name);
                    error=true;
                    for (i=0;i<x.length;i++) if (x[i].checked) error=false;
                break;
                case 'email':
    				if (!(v.match(/^[a-zA-Z0-9_\.-]{2,}@[a-z0-9-]{3,}\.[a-z]{2,4}|museum$/))) error=true;
                break;
                case 'isbn':
                    if (v.length==13) {
                      if (!(v.match(/\d/))) error=true;
                    } else {
                        var v1=replaceIt(v,"-","");
                        if (v1.length==13) {
                            if (!(v.match(/\d/))) error=true;
                        } else error=true;
                    }
                break;
    			case 'date':
	    			if (!(v.match(/\d\d\.\d\d\.\d\d\d\d/))) error=true;
    			break;
    			case 'uhr':
	    			if (!(v.match(/\d\d\:\d\d/))) error=true;
    			break;
	    		case 'float_numeric':
		    		if (!( (v.match(/\d/) || (v.match(/\d.\d/) )))) error=true;
			    break;
    			case 'numeric':
	    			if (!(v.match(/\d/))) error=true;
		    	break;
    			case 'file': //len ist Filetyp
   		    		len=len.toLowerCase();
	    			v=v.toLowerCase();
    				if (v.indexOf(len)==-1 ) error=true;
    			break;
                case 'combo':
                    if (v=="x") error=true;
                break;
                case 'text':
                default:
                    if (v=="") error=true;
                    if (len) {
                        if (v.len<len) error=true;
                    }
                break;
            }   // end of switch
			if (error==true) {
                e.style.borderColor="#ff0000";
                e.style.borderStyle="solid";
                e.style.borderWidth="1px";
                e2=e.parentNode.parentNode.childNodes[1];
                if (e2) e2.innerHTML='<span style="color:#ff0000">'+e2.innerHTML+'</span>';
                else if (type=="checkbox") {
                     e2=e.parentNode.parentNode.childNodes[0];
                     e2.innerHTML='<span style="color:#ff0000">'+e2.innerHTML+'</span>';
                }
				if (err!="") alert(err);
				return false;
			}
			return true;
		} // end of if(e)
	alert("Error Getting Element "+name);
}

function chkPLZ(plzid,ortid)
{
	frame=document.getElementById("frame_plz");
    if (frame) {
        if (document.getElementById(plzid)) {
            v=document.getElementById(plzid).value;
    	    if (frame) frame.src="plz.php?dest=ort&plz="+v;
        }
    }
	return;
}

var tmpVal="**";

function getLabelObject(element)
{
    return element.parentNode.parentNode.childNodes[1];
}

function replaceClassName(className,searchName,replaceName)
{
    if (!className) return replaceName;
    var ret=className.replace(searchName,"");
    ret+=" "+replaceName;
    return ret;
}

function blurElement(elementObject)
{
    var label=getLabelObject(elementObject);
    if (label) {
        label.className=replaceClassName(label.className,"label_focus","label_blur");
    }
    elementObject.className=replaceClassName(elementObject.className,"input_focus","input_blur");
    if (tmpVal!="**") {
            if (tmpVal!=elementObject.value) {
              //  elementObject.style.background="url('fileadmin/template/img/yellowflag.gif') no-repeat";
              //  elementObject.style.backgroundPosition="right center";
            }
    }

}

function focusElement(elementObject)
{
    var label=getLabelObject(elementObject);
    tmpVal=elementObject.value;
    if (label) {
        label.className=replaceClassName(label.className,"label_blur","label_focus");
    }
    elementObject.className=replaceClassName(elementObject.className,"input_blur","input_focus");
}

function focusElementByNr(formId,nr,type)
{
    form=document.getElementById(formId);
    if (form) {
        input=form.getElementsByTagName(type);
        focusElement(input[nr]);
    }
}

function checkElement(object,p1,p2)
{
        alert("checker");
}


/*
    check_input_maxlength_5
    check_input_minlength_5
    check_password_firstFieldId_5
    check_value_empty
    check_value_email
    check_value_isbn
    check_value_date
    check_value_uhr
    check_value_float_numeric
    check_value_numeric
    check_value_checked
*/


var errTxt="";

function blurElementByNr(formId,nr,type,check)
{
    var kennzeichnung=true;
    form=document.getElementById(formId);
    if (form) {
        input=form.getElementsByTagName(type);
        blurElement(input[nr]);

        if (check==true) {
            var className=input[nr].className;
            var value=input[nr].value;
            var classes=className.split(" ");
            var error=false;
            for (var i=0;i<classes.length;i++) {
                var c=classes[i].split("_");
                if (c[0]=="check") {
                    switch(c[1]) {
                            case 'input':
                                switch(c[2]) {
                                    case 'maxlength':
                                      if (value.length>c[3]) error=true;
                                    break;
                                    case 'minlength':
                                      if (value.length<c[3]) error=true;
                                    break;
                                }
                            break;
                            case 'value':
                                switch(c[2]) {
                                    case 'empty':
                                      if (value=='') error=true;
                                    break;
                                    case 'email':
                        				if (!(value.match(/^[a-zA-Z0-9_\.-]{2,}@[a-z0-9-]{3,}\.[a-z]{2,4}|museum$/))) error=true;
                                    break;
                                    case 'isbn':
                                        if (value.length==13) {
                                          if (!(value.match(/\d/))) error=true;
                                        } else {
                                            var v1=replaceIt(value,"-","");
                                            if (v1.length==13) {
                                                if (!(value.match(/\d/))) error=true;
                                            } else error=true;
                                        }
                                    break;
                        			case 'date':
                                        error=true;
                    	    			if ((value.match(/\d\d\.\d\d\.\d\d\d\d/))) error=false;
                    	    			if ((value.match(/\d\d\.\d\.\d\d\d\d/))) error=false;
                    	    			if ((value.match(/\d\d\.\d\.\d\d/))) error=false;
                    	    			if ((value.match(/\d\d\.\d\d\.\d\d/))) error=false;
                    	    			if ((value.match(/\d\.\d\d\.\d\d\d\d/))) error=false;
                    	    			if ((value.match(/\d\.\d\.\d\d\d\d/))) error=false;
                    	    			if ((value.match(/\d\.\d\.\d\d/))) error=false;
                    	    			if ((value.match(/\d\.\d\d\.\d\d/))) error=false;
                        			break;
                        			case 'uhr':
                    	    			if (!(value.match(/\d\d\:\d\d/))) error=true;
                        			break;
                    	    		case 'float_numeric':
                    		    		if (!( (value.match(/\d/) || (value.match(/\d.\d/) )))) error=true;
                    			    break;
                        			case 'numeric':
                    	    			if (!(value.match(/\d/))) error=true;
                    		    	break;
                                    case 'checked':
                                        if (!input[nr].checked) {error=true;errTxt="";}
                                        kennzeichnung=false;
                                    break;
                                    case 'dschecked':
                                        if (!input[nr].checked) {error=true;errTxt="Bitte Stimmen Sie den Datenschutzhinweis zu";}
                                        kennzeichnung=false;
                                    break;
                                }
                            break;
                            case 'password':
                                var field=document.getElementById(c[2]);
                                if (field) {
                                    if (field.value!=value) error=true;
                                    else if(c[3]) {
                                         if (value.length<c[3]) error=true;
                                    }
                                } else error=true;
                            break;
                    }
                    if (kennzeichnung==true) {
                        input[nr].style.backgroundRepeat='no-repeat';
                        input[nr].style.backgroundPosition='right center';
                        if (error==true) {
                            input[nr].style.backgroundImage='url(fileadmin/template/img/redcross.gif)';
                        } else  {
                            input[nr].style.backgroundImage='url(fileadmin/template/img/greenhook.gif)';
                        }
                    }
                }

            }
            return error;
        }
    }
}

function checkCompleteForm(id)
{
    var error=false, submit=true;
    var types=new Array("input","textarea","select");
    form=document.getElementById(id);
    if (form) {
        for (j=0;j<types.length;j++) {
            input=form.getElementsByTagName(types[j]);
            for (var i=0;i<input.length;i++) {
                    if ((input[i].type!="hidden")&&(input[i].type!="submit")) {
                        error=blurElementByNr(id,i,types[j],true);
                        if (error==true) submit=false;
                    }
            }
        }
    }
    if (submit==true) form.submit();
    else {
        if (errTxt!="") errTxt=errTxt+"\n";
        alert(errTxt+"Bitte füllen Sie die gekennzeichneten Felder aus!");
        errTxt="";
    }
    return false;
}

function initForm(fid)
{
    form=document.getElementById(fid);
    var types=new Array("input","textarea","select");
    if (fid) {
        for (j=0;j<types.length;j++) {
            input=form.getElementsByTagName(types[j]);
            for (var i=0;i<input.length;i++) if (input[i])  {
                    if ((input[i].type!="hidden")&&(input[i].type!="submit")) {
                        blurElement(input[i]);
                        input[i].onfocus=new Function("focusElementByNr('"+fid+"','"+i+"','"+types[j]+"');");
                        input[i].onblur=new Function("blurElementByNr('"+fid+"','"+i+"','"+types[j]+"',true);");
                    }
                    if (input[i].type=="submit") {
                        input[i].onclick=new Function("return checkCompleteForm('"+fid+"');");
                    }
            }

        }
    } else alert("initForm:: Error getting form "+fid);
}

function initAll()
{
    forms=document.getElementsByTagName("form");
    for (var i=0;i<forms.length;i++) {
        if (forms[i].id) initForm(forms[i].id);
    }
}
