// Patterns
formValidationMasks['imie'] = /^\[a-zA-Z±ćęłńó¶ĽżˇĆĘŁŃÓ¦¬Ż]{1,20}$/gi;
var formElementArray = new Array();
function addEvent( obj, type, fn )
{
if ( obj.attachEvent )
{
obj['e'+type+fn] = fn;
obj[type+fn] = function(){obj['e'+type+fn]( window.event );
}
obj.attachEvent( 'on'+type, obj[type+fn] );
}
else
obj.addEventListener( type, fn, false );
}
function removeEvent( obj, type, fn )
{
if ( obj.detachEvent )
{
obj.detachEvent( 'on'+type, obj[type+fn] );
obj[type+fn] = null;
}
else
obj.removeEventListener( type, fn, false );
}
function validateInput(e,inputObj)
{
if(!inputObj)inputObj = this;
var inputValidates = true;
if(formElementArray[inputObj.name]['required'] && inputObj.tagName=='INPUT' && inputObj.value.length==0)inputValidates = false;
if(formElementArray[inputObj.name]['required'] && inputObj.tagName=='SELECT' && inputObj.selectedIndex==0)
{
inputValidates = false;
}
if(formElementArray[inputObj.name]['mask'] && !inputObj.value.match(formValidationMasks[formElementArray[inputObj.name]['mask']]))inputValidates = false;
if(formElementArray[inputObj.name]['freemask'])
{
var tmpMask = formElementArray[inputObj.name]['freemask'];
tmpMask = tmpMask.replace(/-/g,'\\-');
tmpMask = tmpMask.replace(/S/g,'[A-Z]');
tmpMask = tmpMask.replace(/N/g,'[0-9]');
tmpMask = eval("/^" + tmpMask + "$/gi");
if(!inputObj.value.match(tmpMask))inputValidates = false
}
if(formElementArray[inputObj.name]['regexpPattern']){
var tmpMask = eval(formElementArray[inputObj.name]['regexpPattern']);
if(!inputObj.value.match(tmpMask))inputValidates = false
}
if(!formElementArray[inputObj.name]['required'] && inputObj.value.length==0 && inputObj.tagName=='INPUT')inputValidates = true;
if(inputValidates){
inputObj.parentNode.className='validInput';
}else{
inputObj.parentNode.className='invalidInput'
}
}
function isFormValid()
{
var divs = document.getElementsByTagName('DIV');
for(var no=0;no<divs.length;no++){
if(divs[no].className=='invalidInput')return false;
}
return true;
}
function initFormValidation()
{
var inputFields = document.getElementsByTagName('INPUT');
var selectBoxes = document.getElementsByTagName('SELECT');
var inputs = new Array();
for(var no=0;no<inputFields.length;no++)
{
inputs[inputs.length] = inputFields[no];
}
for(var no=0;no<selectBoxes.length;no++)
{
inputs[inputs.length] = selectBoxes[no];
}
for(var no=0;no<inputs.length;no++)
{
if ((inputs[no].type!="checkbox") && (inputs[no].type!="select") && (inputs[no].type!="submit"))
{
var required = inputs[no].getAttribute('required');
if(!required)required = inputs[no].required;
var mask = inputs[no].getAttribute('mask');
if(!mask)mask = inputs[no].mask;
var freemask = inputs[no].getAttribute('freemask');
if(!freemask)freemask = inputs[no].freemask;
var regexpPattern = inputs[no].getAttribute('regexpPattern');
if(!regexpPattern)regexpPattern = inputs[no].regexpPattern;
var div = document.createElement('DIV');
div.className = 'invalidInput';
inputs[no].parentNode.insertBefore(div,inputs[no]);
div.appendChild(inputs[no]);
div.style.width = inputs[no].offsetWidth + 'px';
addEvent(inputs[no],'blur',validateInput);
addEvent(inputs[no],'change',validateInput);
addEvent(inputs[no],'paste',validateInput);
addEvent(inputs[no],'keyup',validateInput);
formElementArray[inputs[no].name] = new Array();
formElementArray[inputs[no].name]['mask'] = mask;
formElementArray[inputs[no].name]['freemask'] = freemask;
formElementArray[inputs[no].name]['required'] = required;
formElementArray[inputs[no].name]['regexpPattern'] = regexpPattern;
validateInput(false,inputs[no]);
}
}
}
window.onload = initFormValidation;