/*
checkInputs 1.0 @ argent_hun@hotmail.com

req,reqType,reqMessage: tömbök, azonos hosszúságúak
---
req: vizsgálandó elemek ID-je
reqType: 'text','email','numeric','date','radio','checkbox' vagy Regexp. Ha nincs megadva akkor 'text' szerint ellenőrzi
reqMessage: 'Mi jelenjen meg'. Ha hash(#) karakter közé rakod, csak az jelenik meg.
pl:
function checkCallbackForm() {
  var req = new Array('name','phone','email','prefer','message');
  var reqType = new Array('text','text','email','text','text');
  var reqMessage = new Array('Name','Phone Number','E-mail','Prefered time to get contacted','Message');
  return checkInputs(req,reqType,reqMessage);
}
*/
function checkInputs(req, reqType, reqMessage) {
    for (var i = 0; i < req.length; i++) {
        if (document.getElementById(req[i]) || ((reqType[i]=='radio' || reqType[i]=='checkbox') && document.getElementsByName(req[i]).length>0)) {
            switch (reqType[i]) {
            case 'email':
                if (!(/[^@]+@[^.]+.[a-zA-Z0-9]{1,}/.test(document.getElementById(req[i]).value))) {
                    if (/#(.*?)#/.test(reqMessage[i])) alert(reqMessage[i].replace(/#(.*?)#/, '$1'));
                    else alert('The `' + reqMessage[i] + '` is no valid e-mail!');
                    document.getElementById(req[i]).focus();
                    return false;
                }
                break;
            case 'numeric':
                if (!(/[0-9]/.test(document.getElementById(req[i]).value))) {
                    if (/#(.*?)#/.test(reqMessage[i])) alert(reqMessage[i].replace(/#(.*?)#/, '$1'));
                    else alert('The `' + reqMessage[i] + '` is no numeric!');
                    document.getElementById(req[i]).focus();
                    return false;
                }
                break;
            case 'date':
                if (!(/[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}/.test(document.getElementById(req[i]).value))) {
                    if (/#(.*?)#/.test(reqMessage[i])) alert(reqMessage[i].replace(/#(.*?)#/, '$1'));
                    else alert('The `' + reqMessage[i] + '` is not date format(YYYY-MM-DD)!');
                    document.getElementById(req[i]).focus();
                    return false;
                }
                break;
			case 'checkbox':
			case 'radio':
                var cbs = document.getElementsByName(req[i]);
				for(var j=0;j<cbs.length;j++) if(cbs[j].checked) return true;
		        if (/#(.*?)#/.test(reqMessage[i])) alert(reqMessage[i].replace(/#(.*?)#/, '$1'));
                 else 
				 	if(reqType[i]=='checkbox') alert('Please checked up the `' + reqMessage[i] + '` field!');
                 	else alert('Please choose one from `' + reqMessage[i] + '` fields!');
				 return false;
                break;
            default:
                if (typeof reqType[i] == 'object') { // regexp
                    if (!(reqType[i].test(document.getElementById(req[i]).value))) {
                        if (/#(.*?)#/.test(reqMessage[i])) alert(reqMessage[i].replace(/#(.*?)#/, '$1'));
                        else alert('The `' + reqMessage[i] + '` is not valid!');
                        document.getElementById(req[i]).focus();
                        return false;
                    }
                }
                else {
                    if (document.getElementById(req[i]).value.replace(/ /gi, '') == '') {
                        if (/#(.*?)#/.test(reqMessage[i])) alert(reqMessage[i].replace(/#(.*?)#/, '$1'));
                        else alert('The `' + reqMessage[i] + '`  field is mandatory!');
                        document.getElementById(req[i]).focus();
                        return false;
                    }
                }
            }
        }
    }
    return true;
}
