
/**
* @version  0.0.8
* @require  fix()
* @date     2005-01-06 16:35:15
*/

var cfBorderColor     = '#000000';

var sAllWarnings = '';
var oFirstWrong;
var bIsWarnings = false;
var bAllGood 		= true;

function checkText( obj, value ) {

	re = /\s/gi;
	sText = obj.value.replace(re, "");

	if( sText == '' ) {
		if( value )
  		sAllWarnings += value +'\n';
		if( obj.type != 'hidden' ){
  		//obj.style.borderColor = 'red';
		obj.style.backgroundColor = '#ff8080';
      if( bIsWarnings == false )
        oFirstWrong = obj;
		}
		bIsWarnings = true;
		return false;
	}
	else if( obj.type != 'hidden' )
	obj.style.backgroundColor = '#ffffff';
  	//obj.style.borderColor = cfBorderColor;
	
return true;
} // end function checkText


function checkCreditCard( obj ) {

	sCreditCard = /^[0-9() \-\+]{15,}$/i;
	
	if( obj.value.search( sCreditCard ) == -1 ) {
		sAllWarnings += 'Enter Credit Card Number' +'\n';
		if( obj.type != 'hidden' ){
  		//obj.style.borderColor = 'red';
		obj.style.backgroundColor = '#ff8080';
      if( bIsWarnings == false )
        oFirstWrong = obj;
		}
		bIsWarnings = true;
		return false;
	}
	else if( obj.type != 'hidden' )
	obj.style.backgroundColor = '#ffffff';
  	//obj.style.borderColor = cfBorderColor;
return true;
} // end function checkCreditCard

function checkCardSecurity( obj ) {

	sCardSecurity = /^[0-9() \-\+]{3,}$/i;
	
	if( obj.value.search( sCardSecurity ) == -1 ) {
		sAllWarnings += 'Enter 3/4 Digit Credit Card Security Code' +'\n';
		if( obj.type != 'hidden' ){
  		//obj.style.borderColor = 'red';
		obj.style.backgroundColor = '#ff8080';
      if( bIsWarnings == false )
        oFirstWrong = obj;
		}
		bIsWarnings = true;
		return false;
	}
	else if( obj.type != 'hidden' )
	obj.style.backgroundColor = '#ffffff';
  	//obj.style.borderColor = cfBorderColor;
return true;
} // end function checkCardSecurity

function checkTransactionID( obj ) {

	sTransactionID = /^[0-9() \-\+]{6,}$/i;
	
	if( obj.value.search( sTransactionID ) == -1 ) {
		sAllWarnings += 'Enter Payment Transaction ID' +'\n';
		if( obj.type != 'hidden' ){
  		//obj.style.borderColor = 'red';
		obj.style.backgroundColor = '#ff8080';
      if( bIsWarnings == false )
        oFirstWrong = obj;
		}
		bIsWarnings = true;
		return false;
	}
	else if( obj.type != 'hidden' )
	obj.style.backgroundColor = '#ffffff';
  	//obj.style.borderColor = cfBorderColor;
return true;
} // end function checkTransactionID


function checkTel( obj ) {

	sTelephone = /^[0-9() \-\+]{7,}$/i;
	
	if( obj.value.search( sTelephone ) == -1 ) {
		sAllWarnings += 'Enter Telephone Number' +'\n';
		if( obj.type != 'hidden' ){
  		//obj.style.borderColor = 'red';
		obj.style.backgroundColor = '#ff8080';
      if( bIsWarnings == false )
        oFirstWrong = obj;
		}
		bIsWarnings = true;
		return false;
	}
	else if( obj.type != 'hidden' )
	obj.style.backgroundColor = '#ffffff';
  	//obj.style.borderColor = cfBorderColor;
return true;
} // end function checkTel


function checkEmail( obj ) {

	re = /\s/gi;
	check = obj.value.replace( re, "" );

	sEmail = /^[a-z0-9_.-]+([_\\.-][a-z0-9]+)*@([a-z0-9_\.-]+([\.][a-z]{2,4}))+$/i;
	
	if ( check.search( sEmail ) == -1 ) {
		sAllWarnings += 'Enter Email Address' +'\n';
		if( obj.type != 'hidden' ){
  		//obj.style.borderColor = 'red';
		obj.style.backgroundColor = '#ff8080';
      if( bIsWarnings == false )
        oFirstWrong = obj;
		}
		bIsWarnings = true;
		return false;
	}
	else if( obj.type != 'hidden' )
	obj.style.backgroundColor = '#ffffff';
  	//obj.style.borderColor = cfBorderColor;
return true;
} // end function checkEmail


function checkWww( obj ) {

	re = /\s/gi;
	check = obj.value.replace( re, "" );
	
	sUrl = /^[a-z\d.\\\/\:]{1,}.[a-z]{2,}$/i;

	if( check.search( sUrl ) == -1 || check == 'http://' ) {
		sAllWarnings += 'Enter Website Address' +'\n';
		if( obj.type != 'hidden' ){
  		//obj.style.borderColor = 'red';
		obj.style.backgroundColor = '#ff8080';
      if( bIsWarnings == false )
        oFirstWrong = obj;
		}
		bIsWarnings = true;
		return false;
	}
	else if( obj.type != 'hidden' )
	obj.style.backgroundColor = '#ffffff';
  	//obj.style.borderColor = cfBorderColor;
return true;
} // end function checkWww


function checkKod( obj ) {

	sPostCode = /^[0-9]{2}-[0-9]{3}$/i;

	if ( obj.value.search( sPostCode ) == -1 ) {
		sAllWarnings += 'Enter Post Code' +'\n';
		if( obj.type != 'hidden' ){
  		//obj.style.borderColor = 'red';
		obj.style.backgroundColor = '#ff8080';
      if( bIsWarnings == false )
        oFirstWrong = obj;
		}
		bIsWarnings = true;
		return false;
	}
	else if( obj.type != 'hidden' )
	obj.style.backgroundColor = '#ffffff';
  	//obj.style.borderColor = cfBorderColor;
return true;
} // end function checkKod


function checkNip( obj ) {

	sTaxID1 = /^[0-9]{3}-[0-9]{3}-[0-9]{2}-[0-9]{2}$/i;
	sTaxID2 = /^[0-9]{3}-[0-9]{2}-[0-9]{2}-[0-9]{3}$/i;
	sTaxID3 = /^[a-zA-Z]{2}[ ]{1}/i;

	if( obj.value.search( sTaxID1 ) == -1 && obj.value.search( sTaxID2 ) == -1 && obj.value.search( sTaxID3 ) ) {
		sAllWarnings += 'Enter Tax ID Number' +'\n';
		if( obj.type != 'hidden' ){
  		//obj.style.borderColor = 'red';
		obj.style.backgroundColor = '#ff8080';
      if( bIsWarnings == false )
        oFirstWrong = obj;
		}
		bIsWarnings = true;
		return false;
	}
	else if( obj.type != 'hidden' )
	obj.style.backgroundColor = '#ffffff';
  	//obj.style.borderColor = cfBorderColor;
return true;
} // end function checkNip


function checkPesel( obj ) {

	sPesel = /^[0-9]{11}$/i;

	if( obj.value.search( sPesel ) == -1 ) {
		sAllWarnings += 'Enter PESEL' +'\n';
		if( obj.type != 'hidden' ){
  		//obj.style.borderColor = 'red';
		obj.style.backgroundColor = '#ff8080';
      if( bIsWarnings == false )
        oFirstWrong = obj;
		}
		bIsWarnings = true;
		return false;
	}
	else if( obj.type != 'hidden' )
	obj.style.backgroundColor = '#ffffff';
  	//obj.style.borderColor = cfBorderColor;
return true;
} // end function checkPesel


function checkFloat( obj, value ) {

	sFloat = /^-?[0-9]{1,}[.]{1}[0-9]{1,}$/i;
	sInt = /^-?[0-9]{1,}$/i;

	if( obj.value.search( sFloat ) == -1 && obj.value.search( sInt ) == -1 ) {
    if( value)
      sAllWarnings += value +'\n';
    else
  		sAllWarnings += 'Enter correct value' +'\n';
		if( obj.type != 'hidden' ){
  		//obj.style.borderColor = 'red';
		obj.style.backgroundColor = '#ff8080';
      if( bIsWarnings == false )
        oFirstWrong = obj;
		}
		bIsWarnings = true;
		return false;
	}
	else if( obj.type != 'hidden' )
	obj.style.backgroundColor = '#ffffff';
  	//obj.style.borderColor = cfBorderColor;
return true;
} // end function checkFloat


function checkInt( obj, value ) {

	sInt = /^-?[0-9]{1,}$/i;

	if( obj.value.search( sInt ) == -1 ) {
		if( value )
  		sAllWarnings += value +'\n';
    else
      sAllWarnings += 'Enter correct value' +'\n';
		if( obj.type != 'hidden' ){
  		//obj.style.borderColor = 'red';
		obj.style.backgroundColor = '#ff8080';
      if( bIsWarnings == false )
        oFirstWrong = obj;
		}
		bIsWarnings = true;
		return false;
	}
	else if( obj.type != 'hidden' )
	obj.style.backgroundColor = '#ffffff';
  	//obj.style.borderColor = cfBorderColor;
return true;
} // end function checkInt


function checkFloatValue( obj, minFloat, value ) {

	if( +obj.value <= +minFloat ) {
		if( value )
  		sAllWarnings += value +'\n';
    else
      sAllWarnings += 'Value is too small' +'\n';
		if( obj.type != 'hidden' ){
  		//obj.style.borderColor = 'red';
		obj.style.backgroundColor = '#ff8080';
      if( bIsWarnings == false )
        oFirstWrong = obj;
		}
		bIsWarnings = true;
		return false;
	}
	else if( obj.type != 'hidden' )
	obj.style.backgroundColor = '#ffffff';
  	//obj.style.borderColor = cfBorderColor;
return true;
} // end function checkFloatValue

function checkIntValue( obj, minInt, sign, value ) {
  if( !minInt )
    minInt = 0;
  if( !sign )
    sign = '==';

	eval ( 'good = ( '+ +obj.value +' '+ sign +' '+ +minInt +' );' );

  if( good == true ){
    if( obj.type != 'hidden' )
    	obj.style.borderColor = cfBorderColor;
  }
  else {
		if( value )
  		sAllWarnings += value +'\n';
    else
      sAllWarnings += 'Enter correct value' +'\n';
		if( obj.type != 'hidden' ){
  		//obj.style.borderColor = 'red';
		obj.style.backgroundColor = '#ff8080';
      if( bIsWarnings == false )
        oFirstWrong = obj;
		}
		bIsWarnings = true;
		return false;
	}
return true;
} // end function checkIntValue

function checkDate( obj, format, separator ) {
	if( !format )
		format = "ymd";
	if( !separator )
		separator = "-";

	var d = 2;
	var m = 2;
	var y = 4;

	eval( 'var I = '+ format.charAt( 0 ) +';' );
	eval( 'var II = '+ format.charAt( 1 ) +';' );
	eval( 'var III = '+ format.charAt( 2 ) +';' );

  eval( 'var er = /^[0-9]{'+ I +'}['+ separator +']{1}[0-9]{'+ II +'}['+ separator +']{1}[0-9]{'+ III +'}$/i;' );

	if( obj.value.search( er ) == -1 ) {
    sAllWarnings += 'Wrong Date format' +'\n';
		if( obj.type != 'hidden' ){
  		//obj.style.borderColor = 'red';
		obj.style.backgroundColor = '#ff8080';
      if( bIsWarnings == false )
        oFirstWrong = obj;
		}
		bIsWarnings = true;
		return false;
	}
  else if( obj.type != 'hidden' )
    obj.style.backgroundColor = '#ffffff';
  	//obj.style.borderColor = cfBorderColor;
return true;
} // end function checkDate


function checkTxt( obj, min, value ) {
	if( !min )
		min = 6;

	var re = /\s/gi;
	var check = obj.value.replace( re, "" );

	if( check.length < min ) {
		if( value )
      sAllWarnings += value +'\n';
    else
      sAllWarnings += 'Text is too short' +'\n';
		if( obj.type != 'hidden' ){
  		//obj.style.borderColor = 'red';
		obj.style.backgroundColor = '#ff8080';
      if( bIsWarnings == false )
        oFirstWrong = obj;
		}
		bIsWarnings = true;
		return false;
	}
  else if( obj.type != 'hidden' )
    obj.style.backgroundColor = '#ffffff';
  	//obj.style.borderColor = cfBorderColor;
return true;
} // end function checkTxt


function checkCheck( obj, check, sign, value, option ) {
  if( sign == '=' )
    sign = '==';

  if( option == 'string' )
    // For data of type string
  	eval ( 'good = ( "'+ obj.value +'" '+ sign +' "'+ check.value +'" );' );
  else
    // For numerical data
  	eval ( 'good = ( '+ +obj.value +' '+ sign +' '+ +check.value +' );' );



	if( good == true ) {
    if( obj.type != 'hidden' )
     obj.style.borderColor = cfBorderColor;
  }
  else{
		if( value )
      sAllWarnings += value +'\n';
    else
      sAllWarnings += 'Enter correct value' +'\n';
		if( obj.type != 'hidden' ){
  		//obj.style.borderColor = 'red';
		obj.style.backgroundColor = '#ff8080';
      if( bIsWarnings == false )
        oFirstWrong = obj;
		}
		bIsWarnings = true;
		return false;
	}
return true;
} // end function checkTxt

function compareDates( obj, check, sign, value ) {

  return checkCheck( obj, check, sign, value, 'string' );

} // end function compareDates


function checkCheckbox( inputName, formName, min, value ) {

  var oForm	= document.getElementById( formName );
  var inputy		= oForm.getElementsByTagName( 'input' );
  var n			= 0;

  for( var lp in inputy ) {
    if( inputy[lp].type == 'checkbox' && inputy[lp].name.search( inputName ) != -1 ) {
      if( inputy[lp].checked )
        n++;
    }
  }

  if ( n < +min ) {
		if( value )
      sAllWarnings += value +'\n';
    else
      sAllWarnings += 'Min' + " " + min + " " + 'must be checked' +'\n';

    for( var lp in inputy ) {
      if( inputy[lp].type == 'checkbox' && inputy[lp].name.search( inputName ) != -1 )
        //inputy[lp].style.borderColor = 'red';
		inputy[lp].style.backgroundColor = '#ff8080';
    }

    bIsWarnings = true;
		return false;
	}
  else{
    for( var lp in inputy ) {
      if( inputy[lp].type == 'checkbox' && inputy[lp].name.search( inputName ) != -1 )
	    inputy[lp].style.backgroundColor = '#ffffff';
        //inputy[lp].style.borderColor = cfBorderColor;
    }
  }

return true;
} // end function checkCheckbox

function checkRegexp( obj, sRegexp, sFlags, value ) {

  oRegexp = new RegExp( sRegexp );

	if ( obj.value.search( oRegexp ) == -1 ) {
		if( value )
  		sAllWarnings += value +'\n';
		if( obj.type != 'hidden' ){
  		//obj.style.borderColor = 'red';
		obj.style.backgroundColor = '#ff8080';
      if( bIsWarnings == false )
        oFirstWrong = obj;
		}
		bIsWarnings = true;
		return false;
	}
	else if( obj.type != 'hidden' )
	obj.style.backgroundColor = '#ffffff';
  	//obj.style.borderColor = cfBorderColor;

return true;
} // end function checkRegexp


function checkExt( obj, sExtensions, value ){

  var aFileExt    = obj.value.split( "." );
  var sFileExt    = aFileExt[aFileExt.length - 1];

  var aGoodExt    = sExtensions.split( "|" );
  var iGoodCount  = aGoodExt.length;

  var bCheckExt = false;
  for( var i = 0; i < iGoodCount; i++ ){
   if( sFileExt == aGoodExt[i] ){
     bCheckExt = true;
     break;
   }
  } // end for

	if( bCheckExt != true ) {
		if( value )
      sAllWarnings += value +'\n';
    else
      sAllWarnings += 'Wrong extension' +'\n';
		if( obj.type != 'hidden' ){
  		//obj.style.borderColor = 'red';
		obj.style.backgroundColor = '#ff8080';
      if( bIsWarnings == false )
        oFirstWrong = obj;
		}
		bIsWarnings = true;
		return false;
	}
  else if( obj.type != 'hidden' )
    obj.style.backgroundColor = '#ffffff';
  	//obj.style.borderColor = cfBorderColor;
return true;
} // end function checkExt

function kropka( pole ){

	re = /\,/gi;
	zKropka = pole.value.replace(re, "\.");

return zKropka;
}  // end function kropka

function checkForm( form, table ) {

  sAllWarnings 	= '';
  bIsWarnings 	= false;
  bAllGood			= true;
	oFirstWrong 	= '';

  for( i in table ) {

		if( !table[i][1] || table[i][1] == 'simple' ) {
			bAllGood = checkText( form[table[i][0]], table[i][2] );
		}
		else if( ( table[i][1] == 'tel' ) && ( ( table[i][2] == 'false' && form[table[i][0]].value ) || !table[i][2] ) ) {
			bAllGood = checkTel( form[table[i][0]] );
		}
		else if( ( table[i][1] == 'creditcard' ) && ( ( table[i][2] == 'false' && form[table[i][0]].value ) || !table[i][2] ) ) {
			bAllGood = checkCreditCard( form[table[i][0]] );
		}
		else if( ( table[i][1] == 'cardsecurity' ) && ( ( table[i][2] == 'false' && form[table[i][0]].value ) || !table[i][2] ) ) {
			bAllGood = checkCardSecurity( form[table[i][0]] );
		}
		else if( ( table[i][1] == 'transactionid' ) && ( ( table[i][2] == 'false' && form[table[i][0]].value ) || !table[i][2] ) ) {
			bAllGood = checkTransactionID( form[table[i][0]] );
		}
		else if( ( table[i][1] == 'email' ) && ( ( table[i][2] == 'false' && form[table[i][0]].value ) || !table[i][2] ) ) {
			bAllGood = checkEmail( form[table[i][0]] );
		}
		else if( ( table[i][1] == 'www' ) && ( ( table[i][2] == 'false' && form[table[i][0]].value ) || !table[i][2] ) ) {
			bAllGood = checkWww( form[table[i][0]] );
		}
		else if( ( table[i][1] == 'kod' ) && ( ( table[i][2] == 'false' && form[table[i][0]].value ) || !table[i][2] ) ) {
			bAllGood = checkKod( form[table[i][0]] );
		}
		else if( ( table[i][1] == 'nip' ) && ( ( table[i][2] == 'false' && form[table[i][0]].value ) || !table[i][2] ) ) {
			bAllGood = checkNip( form[table[i][0]] );
		}
		else if( ( table[i][1] == 'pesel' ) && ( ( table[i][2] == 'false' && form[table[i][0]].value ) || !table[i][2] ) ) {
			bAllGood = checkPesel( form[table[i][0]] );
		}
		else if( ( table[i][1] == 'float' ) && ( ( table[i][3] == 'false' && form[table[i][0]].value ) || !table[i][3] ) ) {
			form[table[i][0]].value = kropka( form[table[i][0]] );
			bAllGood = checkFloat( form[table[i][0]] );
			if( bAllGood ){
				form[table[i][0]].value = fix( form[table[i][0]].value );
				if(	table[i][2] != '' )
					bAllGood = checkFloatValue( form[table[i][0]], table[i][2] );
			}
		}
		else if( table[i][1] == 'checkbox' ) {
       bAllGood = checkCheckbox( table[i][0], table[i][3], table[i][2], table[i][4] );
		}
		else if( table[i][1] == 'date' && ( ( table[i][2] == 'false' && form[table[i][0]].value) || !table[i][2] ) ) { 		// data
			bAllGood = checkDate( form[table[i][0]], table[i][3], table[i][4] );
		}
		else if( ( table[i][1] == 'txt' ) && ( ( table[i][4] == 'false' && form[table[i][0]].value ) || !table[i][4] ) ) { 		// opis
			bAllGood = checkTxt( form[table[i][0]], table[i][2], table[i][3] );
		}
		else if( ( table[i][1] == 'check' ) && ( ( table[i][4] == 'false' && ( form[table[i][0][0]].value && form[table[i][0][1]].value ) ) || !table[i][4] ) ) { 		// sprawdzanie rownosci itp
			bAllGood = checkCheck( form[table[i][0][0]], form[table[i][0][1]], table[i][2], table[i][3] );
		}
		else if( ( table[i][1] == 'compareDates' ) && ( ( table[i][4] == 'false' && ( form[table[i][0][0]].value && form[table[i][0][1]].value ) ) || !table[i][4] ) ) {
			bAllGood = compareDates( form[table[i][0][0]], form[table[i][0][1]], table[i][2], table[i][3] );
		}
		else if( ( table[i][1] == 'int' ) && ( ( table[i][5] == 'false' && form[table[i][0]].value ) || !table[i][5] ) ) { 		// int - np. ilosc
			bAllGood = checkInt( form[table[i][0]], table[i][3] );
			if( table[i][2] && bAllGood ) {
				if( table[i][4] ) {
					bAllGood = checkIntValue( form[table[i][0]], table[i][2], table[i][4], table[i][3] );
				}
				else
					bAllGood = checkFloatValue( form[table[i][0]], table[i][2], table[i][3] );
			}
		}
		else if( ( table[i][1] == 'regexp' ) && ( ( table[i][5] == 'false' && ( form[table[i][0]].value ) ) || !table[i][5] ) ) {
			bAllGood = checkRegexp( form[table[i][0]], table[i][2], table[i][3], table[i][4] );
		}
		else if( ( table[i][1] == 'extension' ) && ( ( table[i][4] == 'false' && ( form[table[i][0]].value ) ) || !table[i][4] ) ) {
			bAllGood = checkExt( form[table[i][0]], table[i][2], table[i][3] );
		}

	} // end for

  if( bIsWarnings == true ) {
		sAllWarnings = 'Please fill in all required fields' + '\n' + sAllWarnings;
    alert ( sAllWarnings );
    if( oFirstWrong )
      oFirstWrong.focus();
    return false;
	}
return true;
} // end function checkForm

