// [BL] v0.1 07.02.2006
// standardowe funkcje wykorzystywane przez stdform.lib
// check_field check_form check_date 
// funkcje dzialaja do spóły z calendar.js i vice versa
// oraz DoFocus
 function check_field ( o, params ) {
    var errtext = '';
    if (typeof(allowempty[o.name]) == 'number') {
      if (allowempty[o.name] == 0)
        if (o.value.length == 0)
	      errtext = 'Wypełnij pole';
	    else
		  if (o.getAttribute('schange')=='1' && o.onchange != '')
		    if (!o.onchange())
		      errtext = 'Zła wartość';
	    
	}
	if (typeof(params) == 'object' && errtext == '') {
      if (typeof(check_date) != 'function') {
        alert('[funcs.js check_field] Brak funkcji check_date w pliku funcs.js... ;P');
        return false;
      } else
        if (o.value != '')
          errtext = check_date(o.value, params);
	}
	
	if (typeof(params) == 'string' && errtext == '') {
	  if (params == 'mail') {
        errtext = check_email(o.value, false);
	  }
	}	
	
	
    if (o.parentNode.lastChild.nodeType != 3 && o.parentNode.lastChild.className == 'err')
      if (errtext != '') {
        o.parentNode.lastChild.innerHTML = errtext;
        o.parentNode.lastChild.style.visibility = 'visible';
	    return false;
	  } else {
        o.parentNode.lastChild.innerHTML = '';
        o.parentNode.lastChild.style.visibility = 'hidden';
	    return true;
      }
 }
 function check_form(tf) {
    var errc = 0;
    var t = 0;
    for (var i = 0; i < tf.length; i++ ) {
      if (typeof(tf[ i ].onblur) == 'function') {
        if (tf[ i ].onblur() == false) {
          t = i;
          errc++;
        }
      }
    }
    if ( errc > 0 ) {
        tf[ t ].focus();
        alert ('Popraw dane formularza');
        return false;
    } else {
      tf['submit_'+tf.name].value = '1';  
      return true;
    }
 }
 // standardowa funckja sprawdzająca poprawnosc wpisanej daty
 // wykorzystuje klase Calendar
 function check_date(str, params) {
    if (typeof(Calendar) != 'function') {
      alert('[funcs.js check_date] Brak dołączonego skryptu calendar.js z klasą Calendar...;P');
      return false;
    }
    if (str == '') {
      alert('[funcs.js check_date] Puste pole daty ;P');
      return false;
    }
  	var errtext = '';
    var y = 0;
	var m = -1;
	var d = 0;
	var a = str.split(/\W+/);
	var b = params.ifFormat.match(/%./g);
	var i = 0, j = 0;
	if (a.length != 3)
	  errtext = 'Błędny format daty';
	for (i = 0; i < a.length; ++i) {
		if (!a[i])
			continue;
		switch (b[i]) {
		  case "%d":
			d = parseInt(a[i], 10);
			break;
		  case "%m":
			m = parseInt(a[i], 10) - 1;
			break;	
		  case "%Y":
		  case "%y":
			y = parseInt(a[i], 10);
			(y < 100) && (y += (y > 29) ? 1900 : 2000);
			break;
		  default:
		    alert("[funcs.js check_date] Błędny lub nieobsługiwany format daty\n podany w Calendar.setup dla pola typu date ;P");
		    return false;
		    break;
		}
	}
	if ((m < 0 || m > 11) && errtext == '')
	  errtext = 'Błędny numer miesiąca ' + (m+1);
	if ((y < params.range[0] || y > params.range[1]) && errtext == '')
	  errtext = 'Podany rok jest poza zakersem ' + params.range[0] + ' - ' + params.range[1];
    var tmpDat = new Date(y,m,d,0,0,0);
    if (errtext == '')
	  if (d > tmpDat.getMonthDays(m))
	    errtext = Calendar._MN[m] + ' ma ' + tmpDat.getMonthDays(m) + ' dni.';
	
	return errtext; 
 }
 
 // funkcja DoFocus wywolywana po wybraniu elementu formularza
 var SelectedElementOld = null;
 function DoFocus(o) {
//    if (SelectedElementOld != null ) {
//      SelectedElementOld.style.border = '2px inset #ccc';
//      SelectedElementOld.style.backgroundColor = '';
//    }
//    SelectedElementOld = null;
//	SelectedElementOld = o;
//	o.style.border = '2px inset red';
//	o.style.backgroundColor = '#e7f3ff';
 }
 
 // // 16.03.2006 [MS] - funkcja sprawdza poprawnosc wpisanego maila
//mial - dany mail,
// b_alert - czy jesli bledny mail wyswietlac komunikat
function check_email(mail, b_alert) {
  var email;
  var invalid;
  var bad;
  var period;
  var errtext1 = 'Wypełnij pole.';
  var errtext2 = 'Adres e-mail jest niepoprawny.';
  var errtext = '';
  
  email = mail;
  invalid = " /:,;";
  
  if(email == "") { 
    errtext = errtext1;
  }

  if (errtext == '') {
    for(i=0; i < invalid.length; i++) {
    bad = invalid.charAt(i);
   	  if (email.indexOf(bad, 0) != -1) {    
        errtext = errtext2;    
      }
    }
  }
  
  at = email.indexOf("@", 0);
  if( ((at == -1) || (at == 0)) && errtext == '') {
    errtext = errtext2; 
  }
  
  if ((email.indexOf("@", at+1) != -1) && errtext == '') { 
    errtext = errtext2; 
  }
  
  period = email.indexOf(".", at);
  if ( ((period == -1) || (period == at+1)) && errtext == '') { 
    errtext = errtext2; 
  }
  if ( (period+3 > email.length == -1) && errtext == '') { 
    errtext = errtext2; 
  }
  
  if (b_alert && errtext != '') {
    alert('Adres e-mail jest niepoprawny.');
  	if (b_alert)
  	  return errtext;
  	else
  	  return '';
  }
  else
    return errtext;
}
 