
var setUploadDone=function(upload_id,func){$$('form').each(function(form){if(form.uploadId&&form.uploadId==upload_id){form.upload_done();if(func)func();closeCenterBox();return;}});}
var setValidationError=function(upload_id,valid_id){$$('form').each(function(form){if(form.uploadId&&form.uploadId==upload_id){for(var h=0;h<form.FISFV.fields.length;h++){var field=form.FISFV.fields[h];for(var i=0;i<field.validations.length;i++){for(var j=0;j<field.validations[i].length;j++){if(field.validations[i][j].id==valid_id){field.validations[i][j].showError(false);return;}}}}
return;}});}
var resetErrorMessages=function(upload_id){$$('form').each(function(form){if(form.uploadId&&form.uploadId==upload_id){var errorField=$(form.id+'_errorfield');if(!errorField)return;var ul=errorField.getChildren('ul')[0];ul.getChildren().each(function(c){c.remove();});errorField.setStyle('display','none');}});}
var setErrorMessage=function(upload_id,message){$$('form').each(function(form){if(form.uploadId&&form.uploadId==upload_id){var errorField=$(form.id+'_errorfield');if(!errorField)alert(message);errorField.setStyle('display','block');var ul=errorField.getChildren('ul')[0];new Element('li').setHTML(message).inject(ul);}
return;});}
var setSuccessfulUpload=function(upload_id,form_name,html){$$('form').each(function(form){if(form.uploadId&&form.uploadId==upload_id){for(var h=0;h<form.FISFV.fields.length;h++){var field=form.FISFV.fields[h];if(field.name==form_name){for(var i=0;i<field.validations.length;i++){for(var j=0;j<field.validations[i].length;j++){field.validations[i][j].showError(true);}}
var div=new Element('div').setHTML(html).injectAfter(field);if(!field.removed)field.remove();field.removed=true;break;}}}});}
var FISFViframecounter=0;var FISFV=new Class({Implements:[Options],options:{},form:null,fields:null,validations:null,initialize:function(formId,options){this.setOptions(options);this.fields=new Array();this.validations=new Array();this.form=$(formId);this.form.FISFV=this;this.form.addEvent('submit',function(e){var status=true;for(var i=0;i<this.fields.length;i++){status=this.fields[i].validate()&&status;}
if(status){var use_controlled=false;if(use_controlled){new Event(e).stop();this.form.sendControlled();}
return true;}
new Event(e).stop();}.bind(this));FISFViframecounter++;this.form.sendControlled=function(){var debug=false;var iframecounter=0;var status=new Element('div',{id:'progressbar'});var progressUrl='/ajax/uploadprogress.php';this.form.setAttribute('action','/upload_receaver.php?anticache='+Math.round(Math.random()*10000000));var div=new Element('div');var span=new Element('div',{'class':"uploadprogress_caption"}).setHTML('Uploadvorgang wird durchgeführt');span.inject(div);status.inject(div);if(!debug)showCenterBox(div,500,60,true);var started=0;var start=new Date().getTime()/1000;var waitUntil=-1;var upload_speed=0;this.form.uploadId=Math.round(Math.random()*10000000);this.form.percent=0;if(!status.sd){status.sd=new Element('div',{'class':'progressbar_percent','styles':{position:'absolute',left:0,top:0}});status.sd.inject(status);}
status.sd.setStyle('color','green');status.sd.setHTML('...initialisiere Upload...');if(!status.si){status.si=new Element('div',{'class':'progressbar_bar','styles':{width:0}});status.si.inject(status);}
status.si.setStyle('width',"0%");status.setStyle('display','block');if(!this.form.uploadIframe){this.form.uploadIframe=new Element('iframe',{'name':"upload_iframe_"+FISFViframecounter,'styles':{'width':300,'height':200,'display':(!debug?'none':'')},'src':''});this.form.uploadIframe.injectBefore(this.form);this.form.target=this.form.uploadIframe.name;}
if(!this.form.uploadField){this.form.uploadField=new Element('input',{'name':'UPLOAD_IDENTIFIER','type':'hidden'});this.form.uploadField.injectBefore(this.form.getChildren()[0]);}
this.form.uploadField.value=this.form.uploadId;this.form.upload_done=function(){status.si.setTo(100);status.setStyle('display','none');}
var ajaxCounter=0;var last_percent=0;status.si.setTo=function(percent,init){var now=new Date().getTime()/1000;upload_speed=(percent-last_percent)/(now-start);start=now;last_percent=percent;if(percent<this.form.percent&&!init){if(upload_speed!=0)waitUntil=now+((this.form.percent-percent)/upload_speed);}
else if(init){$('status').setStyle('display','block');}
else{waitUntil=-1;this.form.percent=percent;}}.bind(this)
this.form.readAjaxStatus=function(){if(this.form.percent==100)return;new Ajax(progressUrl+'?id='+this.form.uploadId+'&started='+started+'&anticache='+ajaxCounter,{method:'get',evalScripts:false,onSuccess:function(response){var now=new Date();if(response=='DONE'){status.sd.setHTML('... Verarbeitung, bitte warten ...');status.sd.setStyle('text-decoration','blink');return;}
else if(response=='FNE'){status.sd.setHTML('... bitte warten ...');status.sd.setStyle('text-decoration','blink');}
else{started=1;var f=parseFloat(response);status.si.setTo(f);}
var timeout=(ajaxCounter++)/10*1000+1000;window.setTimeout(this.form.readAjaxStatus,timeout);}.bind(this)}).request();}.bind(this);status.si.interval=window.setInterval(function(){var now=new Date().getTime()/1000;if(upload_speed>0&&now>=waitUntil){var speed=upload_speed;this.form.percent=this.form.percent+speed/10;if(this.form.percent>=100){status.sd.setHTML('... Verarbeitung, bitte warten ...');status.sd.setStyle('text-decoration','blink');window.clearInterval(status.si.interval);}
status.si.setStyle('width',this.form.percent+"%");status.sd.setStyle('color',this.form.percent<50?'green':'white');status.sd.setHTML(Math.round(this.form.percent)+" %");}}.bind(this),100);window.setTimeout(function(){this.form.submit();}.bind(this),100);window.setTimeout(this.form.readAjaxStatus,300);}.bind(this);},registerField:function(id){var field=$(id);field.validations=new Array();field.addValidations=function(validationsArray){field.validations[field.validations.length]=validationsArray;}
field.validate=function(){if(!field.setEvents){var tag=field.tagName.toString().toLowerCase().trim();if(tag=='input'&&(field.type=='radio'||field.type=='checkbox')){field.addEvent('click',function(){field.validate();});field.addEvent('change',function(){field.validate();});}
else{field.addEvent('keyup',function(){field.validate();});field.addEvent('change',function(){field.validate();});}
field.setEvents=true;}
var error=false;var or_sub_res=false;for(var i=0;i<field.validations.length;i++){var or_res=false;for(var j=0;j<field.validations[i].length;j++){if(!or_res&&!error){or_sub_res=field.validations[i][j].validate(field);}
else{or_sub_res=true;}
field.validations[i][j].showError(or_sub_res);if(or_sub_res){or_res=true;}}
error=(error|!or_res);}
return!error;}.bind(this);field.errorDiv=false;field.pendingErrors=new Array();field.setMessage=function(validation,valid){if(valid){if(this.errorDiv&&this.errorDiv.validatorId==validation.id){this.errorDiv.remove();this.errorDiv=false;if(this.pendingErrors.length>0){var tmp=this.pendingErrors;var err=this.pendingErrors[0];this.pendingErrors=new Array();for(var i=1;i<tmp.length;i++){this.pendingErrors[i-1]=tmp[i];}
this.setMessage(err,false);}}
return;}
if(!this.errorDiv){var behind=field;var tag=field.tagName.toString().toLowerCase().trim();if(tag=='input'&&(field.type=='checkbox'||field.type=='radio')){$$('label').each(function(label){if(label.getAttribute('for')==field.id){behind=label;}});}
var pos=behind.getPosition();this.errorDiv=new Element('div',{'class':'FV_error_display_top','styles':{position:'absolute',left:pos.x+behind.offsetWidth+5,top:pos.y}});this.errorDiv.validatorId=validation.id;var inner=new Element('div',{'class':'FV_error_display','styles':{overflow:'hidden'}});inner.setHTML(validation.errorMsg).inject(this.errorDiv);this.errorDiv.injectAfter(behind);return;}
else if(this.errorDiv.validatorId!=validation.id){for(var i=0;i<this.pendingErrors.length;i++){if(this.pendingErrors[i]==validation){return;}}
this.pendingErrors[this.pendingErrors.length]=validation;}}
this.fields[this.fields.length]=field;},addValidation:function(id,validationArray){var field=$(id);field.addValidations(validationArray);}});var FISFValidation=new Class({id:0,errorMsg:null,expects:null,option:null,displayAt:null,field:null,initialize:function(id,field_id,expects,option,errorMsg,displayAt){this.field=$(field_id);this.id=id;this.expects=expects;this.option=option;this.errorMsg=errorMsg;if(this.errorMsg.trim()=='')this.errorMsg='expects '+expects
this.displayAt=displayAt;if(expects=='zip'){if($(option)){var setZipLength=function(){var state=$(option).getValue();var maxLength=5;if(false)maxLength=5;else if(state=="A")maxLength=4;else if(state=="B")maxLength=4;else if(state=="CH")maxLength=4;else if(state=="CZ")maxLength=5;else if(state=="D")maxLength=5;else if(state=="DK")maxLength=4;else if(state=="F")maxLength=5;else if(state=="I")maxLength=5;else if(state=="GB")maxLength=8;else if(state=="L")maxLength=4;else if(state=="NL")maxLength=7;else if(state=="PL")maxLength=6;else if(state=="SK")maxLength=5;this.field.maxLength=maxLength;this.field.value=this.field.value.substr(0,maxLength);}.bind(this);$(option).addEvent('change',function(){setZipLength();});setZipLength();}
else{this.field.maxLength=5;}}},showError:function(valid){var obj=this.displayAt?this.displayAt:this.field;obj.setMessage(this,valid);},validate:function(){var field=this.field;var tag=field.tagName.toString().toLowerCase().trim();var value=field.getValue().toString().trim();if(tag=='input'&&field.type=='file'){value=field.value.trim();}
if(tag=='input'&&field.type=='checkbox'){if(this.expects!='checked'){return false;}
else{return field.checked;}}
else if(tag=='input'&&field.type=='radio'){value=field.value.trim();if(this.expects=='value'&&value==this.option){return field.checked;}
else{return false;}}
switch(this.expects){case'url':return value.test(/^((https?|ftp):\/\/|www\.)[a-z0-9_\.������-]+\.[a-z]{2,4}$/i);case'email':return value.test(/^[\d\w\.\-]+@[\d\w\.\-]+\.[a-z]{2,4}$/i);case'integer':return value.test(/^\d+$/);case'float':return value.test(/^(-?)\d+([\.,]\d+)?$/);case'notnull':return value.test(/./);case'null':return value.test(/^$/);case'preg':return value.test(this.option);case'zip':var state=$(this.option);if(state)state=state.getValue();if(!state||state=='D'||state=='CZ'||state=='F'||state=='SK'||state=='I'){return value.test(/^\d{5}$/);}
else if(state=='A'||state=='B'||state=='CH'||state=='DK'||state=='L'){return value.test(/^\d{4}$/);}
else if(state=='PL'){return value.test(/^\d{2}\-\d{3}$/);}
else if(state=='NL'){return value.test(/^\d{4} [A-Z]{2}$/g);}
else if(state=='GB'){return value.test(/^[A-Z](\d|\d{2}|\d[A-Z]|[A-Z]\d{1,2}|[A-Z]\d[A-Z]) \d[A-Z]{2}$/g);}
else{return true;}
case'same':var other=$(this.option);if(!other)return true;if(other.validate&&!other.validate())return true;var otherValue=other.getValue().toString().trim();return(value==otherValue);case'greater':if(!_FISFVvalidate(value,'float',null))return false;return(value>this.option);case'greater_equal':if(!_FISFVvalidate(value,'float',null))return false;return(value>=this.option);case'smaller':if(!_FISFVvalidate(value,'float',null))return false;return(value<this.option);case'smaller_equal':if(!_FISFVvalidate(value,'float',null))return false;return(value<this.option);case'minlength':return(value.length>=this.option);case'maxlength':return(value.length<=this.option);case'value':return(value==this.option);case'file':return value.test(/./);case'image':return value.test(/\.(jpe?g|png|gif)$/i);case'pdf':return value.test(/\.(pdf)$/i);case'filesizemax':return true;case'germandate':var s=value.split(/\./);if(s.length!=3)return false;var d=s[0];var m=s[1];var y=s[2];if(!d.test(/^\d+$/))return false;if(!m.test(/^\d+$/))return false;if(!y.test(/^\d+$/))return false;if(y<1000)return false;var date=new Date();date.setFullYear(y);date.setMonth(m-1);date.setDate(d);var d2=parseInt(date.getDate());var m2=parseInt(date.getMonth()+1);var y2=parseInt(date.getYear());if(y2<200)y2+=1900;return(d2==d&&m2==m&&y2==y);case'function':if(this.option){return this.option(value,this);}
alert("FNF");return false;}
return false;}});