/**
* @author remik
*/
var tClass = new Array();
// czysczenie wartosci pola po wejsciu do niego
// e - id elementu
function czyscWartosc(e){
	$(e).value = '';
}
function clearOnFocus(e){
	czyscWartosc(e);
}
// zmiana css dla aktywnego pola
// e - id elementu
function classFocus(e, n, cssClass){
	tClass[e] = $(e).className;
	if(n==1){ $(e).className=cssClass+'OnFocus';}
	if(n==2){$(e).className=cssClass+'OnFocus';}
	clearOnFocus(e);
}
// css dla pola nieaktywnego
// e - id elementu
function classBlur(e, n, testData){
	if (n == 1) {
		$(e).className = tClass[e];
	}
	if (n == 2) {
		$(e).className = tClass[e];
	}
	delete tClass[e];
}
// sprawdzanie jaki zank (klawisz) zostal nacisniety oraz maskowanie wprowadzanych danych
// e - event, f - element (object), ac - rodzaj maski pola lub - funkcja do wykonania dla klawiszy specjalnych
// p - parametry dla funkcji ac
function tCN(e, f, ac, p) 
{
    var keynum
    var keychar
    var numcheck
    if(window.event) // IE
    {
	    keynum = e.keyCode
    }
    else if(e.which) // Netscape/Firefox/Opera
    {
	    keynum = e.which
    }
	keychar = String.fromCharCode(keynum);

	// detekcja niektorych klawiszy
	if (keynum == 13) {
        return afc(ac,p,f);  // tylko enter
    }
	if(keynum < 32){
		return specKey(ac,f,p); // znaki sterujace wlacznie z enterem
	}
	// maskowanie danych - pole maska wstawia dozwolone znaki w polu
	switch (ac){
			case 'tel':
				return testTelephone(f, keychar);
				break;
			case 'nip':
				break;
			case 'float':
				break;
			case 'int':
				return testChar(keychar, "N");
				break;
			case 'alpha':
				return testChar(keychar, "A");
				break;
			case 'ualpha':
				return testChar(keychar, "U");
				break;
			case 'all':
				return true;
				break;
	}
}
// test dlka numeru telefoniczneogo oraz formatowanie numeru telefonu
// po wpisaniu go w pole
function testTelephone(f,c){
	var tc, fValue, iAtom, wLen, wTmp;
	tc = false;	
	tc = testChar(c, 'N');
	wTmp='(###) ### ## ###';
	wLen = wTmp.length;
	if(tc){	
		fValue = f.value;
		iAtom = /(\d{3})(\d{3})(\d{2})(\d{1,3})/g;
		f.value = fValue.replace(iAtom, function(str, p1, p2, p3, p4, ofset, s){
				return ('(' + p1 + ') ' + p2 + ' ' + p3 + ' ' + p4);
			});
		if(f.value.length>=wLen){
			// (aaa) aaa aa aaa
			tc = false;
		}
	}
	return tc;
}
// testowanie czy podany (z klawiatury) znak jest liczba czy znakiem
// c - znak, t - oczekiwany typ zanku
function testChar(c, t){
	var numcheck = /\d/;
	if (t == 'A') {
		return !numcheck.test(c);
	}
	if (t == 'N') {
		return numcheck.test(c);
	}
	if( t == 'U'){
		numcheck = /[a-zA-Z????????????????0-9\ \-]/;
		return numcheck.test(c);
	}
}
// wefyfikacja adresu email
// fMail - adres mail
function verifyMail(fMail){
	var atomEmail=/^[^@]+@([a-z0-9\-]+\.)+[a-z]{2,4}$/i;
	if (atomEmail.test($(fMail).value)){
		return true;
	}
	else 
	{
		return false;
	}
}
/*#########*/
// akcja po nacisnieciu entera w polu - przejscie do wskazanego elementu
// ac - nazwa akcji, p - parametry lub nazwa pola, objekt wysylajacy kl. enter lub parametry dodatkowe
function afc(ac,p,f){
	switch (ac){
		case 'nextField':
			f.blur();
			$(p).focus();
			$(p).select();
			senderType=false;
			return false;
		break;
		case 'send':
			$('submitButton').name = p;
			$(f).submit();
		break;
	}
}

function specKey(ac,p,f){
	return true;
}

/*########*/
// operacja na lancuchach
String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g,"");
}

String.prototype.unescSpace = function(){
	return this.replace(/\+/g," ");
}

String.prototype.ltrim = function() {
	return this.replace(/^\s+/,"");
}

String.prototype.rtrim = function() {
	return this.replace(/\s+$/,"");
}

function isWhitespace(charToCheck) {
	var whitespaceChars = " \t\n\r\f";
	return (whitespaceChars.indexOf(charToCheck) != -1);
}
function fltrim(str) { 
	for(var k = 0; k < str.length && isWhitespace(str.charAt(k)); k++);
	return str.substring(k, str.length);
}
function frtrim(str) {
	for(var j=str.length-1; j>=0 && isWhitespace(str.charAt(j)) ; j--) ;
	return str.substring(0,j+1);
}


