<!--

/**
* SoftCOM Spółka jawna - http://www.softcom.wroc.pl
* @author SoftCOM Spółka jawna <biuro@softcom.wroc.pl>
* @copyright Copyright (c) 2007-2008, SoftCOM Spółka jawna
* class Form - Klasa do tworzenia formularza
* @version 1.1 2008-03-11
*  Historia wersji:
* 1.1		- Dodano obsługę walidacji adresu IP [zgodna z Form od 1.4]
*			- Uzupełniono funkcje goodInt, goodFloat zwracają true jeżeli wartość pole jest pusta (za sprawdzenie podania wartości odpowiada reguła require))
*/

/* definicje wyrażeń regularnych */
var reNonBlank = /[\S]/;
var reInt = /^\d+$/;
var reFloat = /^\d+(\.\d+)?$/;
var reEMail = /^\w[\w\-\.]+\@\w[\w\-]+(\.\w[\w\-]+)+$/;
var reChar = /^[\w\-]+$/;
var reURL = /^www\.\w[\w\-]+(\.\w[\w\-]+)+([\/\%\?\&\+\#\.\w\-\=]+)*$/;
var reIP = /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/;


/* funkcja tworzy zapytanie regularne z formatu daty */
function reDate(f) {
  var df = f;
  df = df.replace(/dd/gi, '\\d\\d');
  df = df.replace(/mm/gi, '\\d\\d');
  df = df.replace(/yyyy/gi, '\\d\\d\\d\\d');
  return new RegExp('^' + df + '$');
}

function _showError(field, msg) {
 var n='divError_'+field.id;
 var div = document.createElement('div');
 var text = document.createTextNode(msg);
 div.appendChild(text);
 $(n).appendChild(div);
 Element.show(n);
}

function _checkIt(re, field, msg) {
  if (!re.test(field.value)) {
    _showError(field, msg);
    return false;
  }
  return true;
}

function nonBlank(field, msg) {
  if (field.type)  {
    if (/file|text|password/.test(field.type))
    { return _checkIt(reNonBlank, field, msg); }
	 else
	 if (/select/.test(field.type))
	 {	
	 	//Jeżeli wartość pola select wynosi 0 to tak jakby nie było nic wybrane
	 	if (field.value == 0) { _showError(field, msg); return false; }
		else { return _checkIt(reNonBlank, field, msg); }
	 }
    else
    if (/radio|checkbox/.test(field.type)) {
      if (field.checked)
      { return true; }
      else
      {
        _showError(field, msg);
        return false;
      }
    }
    else {
      alert('Invalid field for nonBlank() checking');
      return false;
    }
  }
  else
  if (field.length && field[0].type && /radio|checkbox/.test(field[0].type)) {
    for (var i = 0; i < field.length; i++)  {
      if (field[i].checked)
      { return true; }
    }

    _showError(field, msg);
    return false;
  }
  else {
    alert('Invalid field for nonBlank() checking!');
    return false;
  }
}


function nonBlankTinyMCE(field, msg) {
  if (!reNonBlank.test(tinyMCE.getContent(field.id))) {
    _showError(field, msg);
    return false;
  }
  return true;	
}

function goodInt(field, msg) {
  if (field.value=='') return true;
  return _checkIt(reInt, field, msg);
}


function goodFloat(field, msg) {
  if (field.value=='') return true;
  return _checkIt(reFloat, field, msg);
}


function goodEMail(field, msg) {
  if (field.value=='') return true;
  return _checkIt(reEMail, field, msg);
}


function goodURL(field, msg) {
  if (field.value=='') return true;
  return _checkIt(reURL, field, msg);
}


function goodCharLen(n, m, field, msg) {
  if (field.value=='') return true;
  if ((field.value.length < n) || (field.value.length > m)) {
    _showError(field, msg);
    return false;
  }
  return true;

}


function goodChar(field, msg) {
  return _checkIt(reChar, field, msg);
}


function goodPasswords(field1, field2, msg) {
	if (field1.value == field2.value) {
      return true;
   }
   else {
      _showError(field2,msg);
	   return false;		
   }
}


function goodDate(df, field, msg) {
  if (field.value=='') return true;
  if (_checkIt(reDate(df), field, msg))
  {
    var di = field.value;
    var y4 = df.search(/yyyy/i), y = di.substring(y4, y4 + 4) - 0;
    var m2 = df.search(/mm/i), m = di.substring(m2, m2 + 2) - 1;
    var d2 = df.search(/dd/i), d = di.substring(d2, d2 + 2) - 0;

    var dd = new Date(y, m, d);
    if (y == dd.getFullYear() && m == dd.getMonth() && d == dd.getDate())
    {
      return true;
    }
    else
    {
      _showError(field, msg);
    }
  }
  return false;
}

function goodIP(field, msg) {
  if (field.value=='') return true;
  return _checkIt(reIP, field, msg);
}


-->
