Element.implement({
	inputHint : function(val){
		switch(this.get('tag')){
			case 'form':
				this.getElements('input[type="text"],textarea').inputHint(val);
				return this;
			case 'input':
			case 'textarea':
				this.store('default',(val||this.get('value')));
				this.addEvents({
					'focus':function(){
						if(this.get('value') == this.retrieve('default')){
							this.set('value', '');
						}
					},
					'blur':function(){
						if(this.get('value').clean() == '') {
							this.set('value', this.retrieve('default'));
						}
					}
				}).fireEvent('blur');
			default: return this;
		}
	}
});
	var validator = new Class({

		setNumberOnly: function(element){
			element.addEvent('keydown',function(event){
				/*
				 if( (event.code < 48) || (event.code > 57)){   
				   if( event.code !=8 && event.code!=190 && event.code!=9){      
				   return false;
				  }   
				  return false;
				 } 
				 */

		
		/*
		 if( event.code<48||(event.code>57&&event.code<96)||event.code>110){   
		   if( event.code !=8 && event.code!=190 && event.code!=9){      
			 return false;
			}   
		 }
		 */

			});		
		},

		required: function(prefix){
			if( typeof(prefix) == 'undefined' ) prefix = '';
			var search = '.required';
			firstElement = null;

			if(prefix!='') search = "."+prefix+"Required"; 
			$(document.body).getElements(search).each(function(el){
				if( el.value == '' || el.value == 'Required'){
					if(firstElement == null) firstElement = el;

					el.setStyle("border","2px solid red");
					el.inputHint("Required");
			
					el.addEvent("blur",function(){
						if(el.value!='' && el.value!='Required') el.setStyle('border','');
					});

				}

			});
			
			if(firstElement!=null){
				firstElement.focus();
				return false

			}else{ return true}

		}
	});


	window.addEvent("domready",function(){
		
		var objValid = new validator();
		
		$(document.body).getElements("input").each(function(el){
		
			var classes = el.get("class");


			if(classes.test("numberOnly")){
				objValid.setNumberOnly(el);
			}else if(classes.test("textOnly")){
				objValid.setTextOnly(el);
			}

		});
	
	});


/**
* @Brif: Displays waiting div box for ajax request
**/

var waiting = new Hash({

	show: function(message){
		/*
		if( $("waiting") ){
			waiting.delayDispose();
		}
		*/

		if(!message){ 
			message = "<span style='font-weight:bold'>";
			message += "Processing your request......"
			message += "</span>";
		}

		var boxPos = (document.body.getSize().x / 2) - 80;
		var box = new Element('div',{
			'id': 'waiting'
			,'html': message
			,'styles': {
				width: 160
				,height: 20
				,border: '1px solid black'
				,borderTop: '0px'
				,position: 'absolute'
				,top: 0
				,left: boxPos
				,backgroundColor: 'white'
				,padding: 10
			}
		});

		document.body.appendChild(box);

	},

	delayDispose: function(){
		$("waiting").dispose();
	},
	hide: function(wait,message){

		if(message=='' || typeof(message) == 'undefined') message = 'Loaded!';
		if(wait=='' || typeof(wait) == 'undefined') wait = 1000;
		else wait = wait * 1000;
		
		$("waiting").innerHTML = "<span style='font-weight:bold'>"+message+"</span>";
		waiting.delayDispose.delay(wait);
		

		
		
	}
});





function setNumberOnly(el){
	$(el).addEvent('keydown',function(event){
     if( (event.code < 48) || (event.code > 57)){   
       if( event.code !=8 && event.code!=190 && event.code!=9){      
  
       return false;   
      }   
     } 		
	});
}

function isEmail (email){	return /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/.test(email);}