/*
*
* @ Base Validation.
*
*/
var Validate = {
	Version: '2.0.1',
	hasVal : function(the_field) {
		if(the_field)
			return true;
		return false;	
	},
	isChecked : function(radio_array) {
		inputs = document.getElementsByTagName('input');
		for(var i = 0; i < inputs.length; i++) {
			if(inputs[i].name == radio_array) {
				if(inputs[i].checked) {
					return true;
				}
			}
		}
		return false;
	},
	email : function(email) {
		if(Validate.hasVal(email)) {
			if (email.match(/\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/i)) 
				return true;
			return false;
		}
		return false;
	},
	zipcode : function(zip) {
		if(Validate.hasVal(zip)) {
			if (zip.length == 5 && Validate.isDigit(zip))
				return true;
			return false;
		} 
		return false;
	},
	isDigit : function(val) {
	    var val = val.toString();
		if(Validate.hasVal(val)) {
			if (val.match(/^\d+$/))
				return true;
			return false;
		}
		return false;
	},
	isLength : function(val, str_length) {
	    
	    var val = val.toString();
	    
		if(Validate.hasVal(val) && str_length) {
			if(val.length == str_length)
					return true;
			return false;
		}
		return false;
	},
	$ : function( selector ) {
		return document.getElementById(selector);
	}
}

/* * */
function validationTest()
{
    
    Wiggum.active = true;

    this.testEmailValidation = function()
    {
        
        Wiggum.start("email() Validation");
        
        //#valid and invalid emails
        emails = [{'valid':true, 'email':'test@test.com'},
                  {'valid':true, 'email':'t@q.com'},
                  {'valid':false, 'email':'testtest.com'},
                  {'valid':false, 'email':'testtestcom'},
                  {'valid':false, 'email':'test@testcom'}]
        
        for(i in emails)
        {
            var result = Validate.email(emails[i]["email"]);
            Wiggum.equals(result, emails[i]["valid"], "Test Valid Email ->  "+emails[i]["email"]);
        }
    }


    this.testZipValidation = function()
    {
        
        Wiggum.start("zipcode() Validation")
        
        //#valid and invalid zipcodes
        zipcodes = [{'valid':true, 'zip':'84095','message':'Test Valid Zip Code'},
                    {'valid':false, 'zip':'840','message':'Test Too Short Zip Code'},
                    {'valid':false, 'zip':'840867565','message':'Test Too Long Zip Code'},
                    {'valid':false, 'zip':'84a98','message':'Proper length, but a letter'},
                    {'valid':false, 'zip':'zacha','message':'Pure letters'}]
                    
        for(i in zipcodes)
        {
            var result = Validate.zipcode(zipcodes[i]["zip"]);
            Wiggum.equals(result, zipcodes[i]["valid"], zipcodes[i]["message"]+" -> "+zipcodes[i]["zip"]);
        }
    }
    
    this.testisDigitValidation = function()
    {
        
        Wiggum.start("isDigit() Validation")

        //#valid and invalid digits
        digits = [{'valid':true, 'digit': 75,'message':'75 as an Int'},
                    {'valid':true, 'digit':'75','message':'75 as a String'},
                    {'valid':false, 'digit':'7a5','message':'Test if Letter'},
                    {'valid':false, 'digit':'Zachary','message':'Test if a String.'}]

        for(i in digits)
        {
            var result = Validate.isDigit(digits[i]["zip"]);
            Wiggum.equals(result, digits[i]["valid"], digits[i]["message"]+" -> "+digits[i]["digit"]);
        }

    }
    
    this.testLengthValidation = function()
    {
                
        Wiggum.start("isLength() Validation")
        
        //#proper length of string.
        var result = Validate.isLength("Zachary", 7);
        Wiggum.equals(result, true, "Zachary is 7 Characters");
        
        //#improper length of string.
        var result = Validate.isLength("Zachary", 5);
        Wiggum.equals(result, false, "Zachary is NOT 5 Characters");
        
        //#proper length of int
        var result = Validate.isLength(84095, 5);
        Wiggum.equals(result, true, "84095 is 5 Characters");
        
        //#proper length of int
        var result = Validate.isLength(84095, 3);
        Wiggum.equals(result, false, "84095 is NOT 3 Characters");
        
    }
}

/* test for validation 	*/
/*
	var validTest = new validationTest()
	var method;  
    for (method in validTest) {  
        if (method.substring(0, 4) == 'test')
			validTest[method]();
	}
*/
