<!--

/**
* 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.4 2008-10-19
*  Historia wersji:
* 1.5		- Zmodyfikowano definicję wyrażenia regularnego reFloat tak aby akceptowany byłseparator dzisiętny . lub ,
* 1.4		- Zmodyfikowano funkcję _showError (ustalenie nazwy warstwy wyświetlania błądu dla przycisków radio)
* 1.3		- Dodatkowe funkcje_stringIt i goodDateRange (sprawdzanie zakresu dat)
* 1.2		- Dopasowano walidację TinyMce do nowej wersji TINYMCE 3.x
* 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) {
 if (field.id) {
   var n='divError_'+field.id;
 }
 else
   if (field.length && field[0].type && /radio|checkbox/.test(field[0].type)) {
	   var n='divError_'+field[0].name;
	}
 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.get(field.id).getContent())) {
    _showError(field, msg);
    return false;
  }
  return true;	
}

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

function IntBetween(field, value1, value2, msg) {
  if (value1)
    if (parseInt(field.value)<value1) {
	  	 _showError(field, msg);	
		 return false; 
	 }

  if (value2)
    if (parseInt(field.value)>value2) {
	  	 _showError(field, msg);	 
		 return false;
	 }

  return true;
}



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 _stringIt(df, d) {
  var y4=df.search(/yyyy/i), m2=df.search(/mm/i), d2=df.search(/dd/i);
  return d.substring(y4, y4+4)+d.substring(m2, m2+2)+d.substring(d2, d2+2);
}


function goodDateRange(df, field1, field2, field_msg, msg) {
  if ((field1.value=='') || (field2.value=='')) return true;
  if (_stringIt(df, field1.value)>_stringIt(df, field2.value)) {
  	 _showError(field_msg, msg);
  }
  else {
    return true;
  }
  return false;
}


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


-->