// JavaScript Document

var InputValidation = {

		initialize: function(options){			

			this.options = Object.extend({
				id:                   null,
				valid:                null,
				numericExp:           /^[0-9]+$/,
				alphaExp:             /^[a-zA-Z]+$/,
				spCharExp:            /[@#$%&!*)(-+=^]/,
				lowercaseExp:         /[a-z]/,
				uppercaseExp:         /[A-Z]/,
				numericExpPassword:   /[0-9]/,
				
				idFeedback:           "feedback",
				idLabel:              "label",
				idExample:            "example",
				idFieldContainer:     "field",
				idErrorContent:       "fieldError",
				errorMesageMainId:     null,
				
				isAlert:               null,
				isMain:                null,
				isAlert:               null,

				strongPassLength:     6,
				weekPassLength:       1,
				defaultIframeHeight:  300
				
			}, options || {});
				
			
				
			this.inputs = [];
			
			form = $(options);
			
			$each(form.getElements('input'), function(el){
																								
				if(el.type == "text" || el.type == "password") {

					if(el.id  && el.className) {
						if((el.className.contains('required', ' ')) == true)  {
						 el.onblur = this.onblur.pass(el, this);	
						 this.inputs.push(el);
						}
					}
				}		
								
				if((el.type == "image" || el.type == "submit" || el.type == "button")  &&  (el.className.contains('validate') == true )) {
					el.onclick = this.onclick.pass(el, this);					
				}				
			}, this);
			
			if(form.className.contains("img") && form.className.contains("mb")) {

				//document.Login_Form.Button.value = 'Login';
 				//document.Login_Form.Login_Page.value = '/pages/account/login.html?ErrorMsg=';
  			//document.Login_Form.Action.value = '/pages/account/edit.html';
				
				$('img-submit').onclick = this.onclick.pass($('img-submit'), this);	
  			//document.Login_Form.submit();
							
			}
			
			if(Browser.getQueryStringValue("ErrorMsg") !== null) {
					$('formError').removeClass('none');
					$('formError').addClass('block');
			}
			
			/* 
			-- STEVE (6/17/09): URL HOSED UP THE URL --- SO URL CHANGED THE CODE BELOW TO THE CODE ABOVE
			if(URL.qString != null) {
				if(URL.qString[0][0] == "ErrorMsg") {
					$('formError').removeClass('none');
					$('formError').addClass('block');
				}
			}	
			*/
		},
		
	
		onblur: function(input) { 	
			this.validate(input)
		},
		
		onclick: function(input) { 
			var tempStr = true;

			
			for (i=0;i<this.inputs.length;i++) {		
	
				this.validate(this.inputs[i]);
	
				if(this.inputs[i].state == false) {
					var tempStr = false;
				}							
			}
			
			
			
			
			if(tempStr == true) {


			} else {
				if($('formError')) {
					
					$('formError').removeClass('none');
					$('formError').addClass('block');
				}
				return false;
			}
			
			
			if(document.Login_Form.className.contains("img") && document.Login_Form.className.contains("mb")) {
				document.Login_Form.Button.value = 'Login';
				document.Login_Form.Login_Page.value = '/support/index.php?ErrorMsg=';
				document.Login_Form.Action.value = '/support/index.php';				
  			document.Login_Form.submit();
			}
		},
		
		
		validate: function(input) { 
		
			var tempValidate = true;
			var tempValue;
			var tempClass;
			
			if(input.value.trim() == "" || input.value.trim()  == " " || input.value.length == 0) { 
				this.inputs[this.inputs.indexOf(input)].state = false; 
			} else {
			
				if((input.className.contains('email', ' ') == true))  {				
					if(input.value.contains('@') == false) {	this.inputs[this.inputs.indexOf(input)].state = false; 	}  else {this.inputs[this.inputs.indexOf(input)].state = true; }
					if(input.value.contains('.') == false) {	this.inputs[this.inputs.indexOf(input)].state = false;	}  else {this.inputs[this.inputs.indexOf(input)].state = true; }			
				}
				
				if((input.className.contains('number', ' ') == true))  {
					tempValue  = input.value.trim();
					if(!tempValue.match(this.options.numericExp)) { this.inputs[this.inputs.indexOf(input)].state = false; }	 else {this.inputs[this.inputs.indexOf(input)].state = true; }				
				}
				
				if((input.className.contains('letters', ' ') == true))  {
					tempValue  = input.value.trim();
					if(!tempValue.match(this.options.alphaExp)) { this.inputs[this.inputs.indexOf(input)].state = false; }	 else {this.inputs[this.inputs.indexOf(input)].state = true; }				
				}
				
				if((input.className.contains('phone', ' ') == true))   {  	}	
				
				/*
				if(input.type == 'password'&& (input.className.contains('password', ' ') == true) && (input.className.contains('strong', ' ') == false) && (input.className.contains('week', ' ') == false) && (input.className.contains('medium', ' ') == false)  )  {
					if (input.value.length < this.options.strongPassLength)  {	this.inputs[this.inputs.indexOf(input)].state = false; 	}  else {this.inputs[this.inputs.indexOf(input)].state = true; }
					if (!input.value.match(this.options.lowercaseExp))       {	this.inputs[this.inputs.indexOf(input)].state = false; 	}  else {this.inputs[this.inputs.indexOf(input)].state = true; }
					if (!input.value.match(this.options.uppercaseExp))       {	this.inputs[this.inputs.indexOf(input)].state = false; 	}  else {this.inputs[this.inputs.indexOf(input)].state = true; }
					if (!input.value.match(this.options.spCharExp))          {	this.inputs[this.inputs.indexOf(input)].state = false; 	}  else {this.inputs[this.inputs.indexOf(input)].state = true; } 
					alert(0)
				}
				if(input.type == 'password' || input.type == 'text'  && (input.className.contains('strong', ' ') == true) && (input.className.contains('password', ' ') == true) )  {
					if (input.value.length < this.options.strongPassLength)   {	this.inputs[this.inputs.indexOf(input)].state = false; 	}  else {this.inputs[this.inputs.indexOf(input)].state = true; }
					if (!input.value.match(this.options.lowercaseExp))       {	this.inputs[this.inputs.indexOf(input)].state = false; 	}  else {this.inputs[this.inputs.indexOf(input)].state = true; }
					if (!input.value.match(this.options.uppercaseExp))       {	this.inputs[this.inputs.indexOf(input)].state = false; 	}  else {this.inputs[this.inputs.indexOf(input)].state = true; }
					if (!input.value.match(this.options.spCharExp))          {	this.inputs[this.inputs.indexOf(input)].state = false; 	}  else {this.inputs[this.inputs.indexOf(input)].state = true; }
					if (!input.value.match(this.options.numericExpPassword)) {	this.inputs[this.inputs.indexOf(input)].state = false; 	}  else {this.inputs[this.inputs.indexOf(input)].state = true; } 
					alert(1  + input.className.contains('strong') + "test")
				}
				if(input.type == 'password' || input.type == 'text'  && (input.className.contains('medium', ' ') == true) && (input.className.contains('password', ' ') == true) )  {	
					if (input.value.length < this.options.strongPassLength)   {	this.inputs[this.inputs.indexOf(input)].state = false; 	}  else {this.inputs[this.inputs.indexOf(input)].state = true; }
					if (!input.value.match(this.options.lowercaseExp))        {	this.inputs[this.inputs.indexOf(input)].state = false; 	}  else {this.inputs[this.inputs.indexOf(input)].state = true; }
					if (!input.value.match(this.options.uppercaseExp))        {	this.inputs[this.inputs.indexOf(input)].state = false; 	}  else {this.inputs[this.inputs.indexOf(input)].state = true; }
					if (!input.value.match(this.options.numericExpPassword))  {	this.inputs[this.inputs.indexOf(input)].state = false; 	}  else {this.inputs[this.inputs.indexOf(input)].state = true; }
					alert(2)
				}
				*/
				if(input.type == 'password' && (input.className.contains('week', ' ') == true) && (input.className.contains('password', ' ') == true) )  {	
					if (input.value.length.toInt() < this.options.weekPassLength.toInt() == true)  {	this.inputs[this.inputs.indexOf(input)].state = false; 	}  else {this.inputs[this.inputs.indexOf(input)].state = true; }
				}
				
				if((input.className.contains('letters', ' ') == true)) {		
				
				}
				if((input.className.contains('url', ' ') == true))     {
					if(input.value.contains('/') == false) {	this.inputs[this.inputs.indexOf(input)].state = false; 	}  else {this.inputs[this.inputs.indexOf(input)].state = true; }
					if(input.value.contains('.') == false)  {	this.inputs[this.inputs.indexOf(input)].state = false; 	}  else {this.inputs[this.inputs.indexOf(input)].state = true; }			
				}	
				
				if((input.className.contains('length') == true)) {
					
					tempClass = input.className.split(" ");
					
					for (j=0;j<=tempClass.length;j++) {
						if(tempClass[j].contains('length')) {
							tempClass = input.className.split("-");										
							if(input.value.length.toInt() > tempClass[1].toInt()) 		{ this.inputs[this.inputs.indexOf(input)].state = false;	}	
							else {		this.inputs[this.inputs.indexOf(input)].state = true; 	}
							break;					
							
						}		
					}
					
					j = null;
					tempClass = null;
				}		
			}	
			
			
			if(this.inputs[this.inputs.indexOf(input)].state == null || this.inputs[this.inputs.indexOf(input)].state == true ) 
			{ 
				if($(input.id).hasClass('error'))	{		
					$(input.id).removeClass('error');
					$(input.id + "-" + this.options.idFeedback).removeClass('block');
				}
				$(input.id + "-" + this.options.idFeedback).setStyle('display', 'none');
				$(input.id).addClass('valid');
				//alert($(input.id + "-" + this.options.idFeedback).innerHTML)
				
			} else {	

				//alert('bad ' + $(input.id + "-" + this.options.idFeedback).innerHTML)
				$(input.id).addClass('error');
				

				if($(input.id + "-" + this.options.idLabel) && $(input.id + "-" + this.options.idFeedback) && $(input.id + "-" + this.options.idExample) && $(input.id + "-" + this.options.idFieldContainer) && $(this.options.idErrorContent)) 
				{
					if($(input.id + "-" + this.options.idLabel).innerHTML.indexOf(":") > -1) {
					 	var tempStr = $(input.id + "-" + this.options.idLabel).innerHTML.split(":");
						tempStr     =  tempStr[0];
					} else {
						tempStr     =  $(input.id + "-" + this.options.idLabel).innerHTML
					}
					

					$(input.id + "-" + this.options.idFeedback).innerHTML = $(this.options.idErrorContent).innerHTML +  tempStr;
					$(input.id + "-" + this.options.idFeedback).setStyle('display', 'block');
				}
				
			}	

		tempValue = null;
		tempClass = null;
		tempValidate = null;
		
		}
	}
	
	
