var formValidate = new Class({

	Implements: [Events],
	
	initialize: function(elements,path){
		this.scriptPath = path+'reg-mail.php';
		this.srcPath = path+'img/';
		
		elements = $$(elements);		
		elements.each(this.checkfields,this);
	},

	checkfields: function(el) {
		el.addEvent('keyup', function(event) {
			switch(el.id) {
				case 'email':
					this.valEmail(el);
				break;
				case 'firstname':
				case 'lastname':
				case 'companyname':
				case 'companystreet':
				case 'companycity':
				case 'dialing':
				case 'zipcode':
					this.valAn(el);
				break;
			}
		}.bind(this));
	},
	
	valAn: function(el) {
		if(el.value == '') this.validateFalse(el);
		else this.validateTrue(el);
	},
	
	valEmail: function(el) {
		var ex = /^[\w_\-]+(\.[\w_\-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*\.[a-z]{2,4}[ ]*$/i;
		if(ex.test(el.value)) this.validateTrue(el);
		else this.validateFalse(el);
	},
	
	validateTrue: function(el) {
		var valid = $('val-'+el.id);
		el.set('styles',{'padding-left':23,'width':205});
		valid.set('styles',{'display':'block'});
		valid.set('src',this.srcPath+'valid-true.gif');
	},
	
	validateFalse: function(el) {
		var valid = $('val-'+el.id);
		el.set('styles',{'padding-left':23,'width':205,'background':'#fff'});
		valid.set('styles',{'display':'block'});
		valid.set('src',this.srcPath+'valid-false.gif');
	},
	
	checkFormFields: function(elements) {
		erfields = []
		$$(elements).each(function(el) {
			var cropPath = this.searchAndReplace($('val-'+el.id).getProperty('src'),this.srcPath);
			if($('val-'+el.id).get('src') != this.srcPath+'valid-false.gif') {
				if(erfields.indexOf(el.id)==1) {
					erfields.erase(el.id);
				}
			}else{
				erfields.push(el.id);this.validateFalse(el);
			}
		}.bind(this));
		if(erfields.length==0) {
			$('error').set('html','your registration was successful');
			$('formRegister').set('send',{
				method:'post',
				url:this.scriptPath,
				onComplete: function(responseText) {
					var successField = new Element('div',{
						'id':'registerField'
					});
					successField.set('html',responseText).inject($('formRegister').empty());

				}
			}).send();			
		}else{
			$('error').set('html','please check the <strong>red</strong> marked fields!');
		}
	},
	
	clearFields: function() {
		$$('.check').each(function(el) {
			var valid = $('val-'+el.id);
			el.value='';
			el.set('styles',{'padding-left':3,'width':225});
			valid.set('styles',{'display':'none'});
			valid.set('src','');
		}.bind(this));
	},
	
	searchAndReplace: function(srcPath,imgPath) {
	    var imgPathLength = imgPath.length;
	    var position = srcPath.indexOf(imgPath,0);
	
	    while(position >= 0) {
	        srcPath = srcPath.substring(0,position)+srcPath.substring(position+imgPathLength);
	        position = srcPath.indexOf(imgPath,position);
	    }
	    return srcPath;
	}
});
