//*************** WYKRYWANIE CZY PRZEGLADARKA JEST OK (JS-KODOWANIE)**************************
var MSIEok = true;

if (navigator.userAgent.indexOf("MSIE")    != -1 && 
   navigator.userAgent.indexOf("Windows") != -1 && 
   navigator.appVersion.substring(0,1) > 3)
{
   ToolBar_Supported = true;
}

var MSIEIndex = navigator.userAgent.indexOf("MSIE");
if (navigator.userAgent.indexOf("MSIE")    != -1 &&
    navigator.userAgent.indexOf("Windows") != -1 && 
	(navigator.userAgent.substring((MSIEIndex + 5),(MSIEIndex + 8)) <= "5.0" &&
	(navigator.userAgent.substring((MSIEIndex + 8),(MSIEIndex + 9)) == ";" || 
	navigator.userAgent.substring((MSIEIndex + 5),(MSIEIndex + 6)) == "4") ) ) 
{
   MSIEok = false;
}
//********************************************************************************************

//*********************************SPRAWDZANIE POPRAWNOCI ZAPISU DATY************************
// these arrays will be filled with internationalized strings based on the server
var DW_shortDayNames = new Array("Sun", "Mon", "Tues", "Wed", "Thurs", "Fri", "Sat");
var DW_longDayNames = new Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday");
var DW_shortMonthNames = new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec");
var DW_longMonthNames = new Array("January", "Febuary", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");

// this is dependent on the control panel setting on the server
// it indicates the order of days (this is mm/dd/yyyy)
var DW_PARSEDT_monseq = 0;
var DW_PARSEDT_dayseq = 1;
var DW_PARSEDT_yearseq = 2;

var DW_PARSEDT_DATE = 0;
var DW_PARSEDT_TIME = 1;
var DW_PARSEDT_DATETIME = 2;
var DW_PARSEDT_msecseq = 2;
var DW_PARSEDT_hourseq = 3;
var DW_PARSEDT_minseq = 4;
var DW_PARSEDT_secseq = 5;
var DW_PARSEDT_msecseq = 6;


var DW_dayTable = new Array();
DW_dayTable[0] = new Array(0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
DW_dayTable[1] = new Array(0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

function DW_isLeap(year)
{
    return ((year%4 == 0 && year%100 != 0) || year%400 == 0);
}

function DW_parseIsSpace(theChar)
{
    return /^\s$/.test(theChar);
}

function DW_parseIsDigit(theChar)
{
    return /^\d$/.test(theChar);
}

function DW_parseIsAlpha(theChar)
{
    return /^\w$/.test(theChar) && ! /^\d$/.test(theChar);
}

function DW_monthSearch(inMonthName)
{
    var index;
    var inMonthLC = inMonthName.toLowerCase();
    
    // check short month names
    for (index=0; index < 12; index++)
        {
        if (DW_shortMonthNames[index].toLowerCase() == inMonthLC)
            return index + 1;
        }

    // check long month names
    for (index=0; index < 12; index++)
        {
        if (DW_longMonthNames[index].toLowerCase() == inMonthLC)
            return index + 1;
        }

   // if we get here, we couldn't find the name
   return -1;
}

function DW_parseDatetimeString(inString, outDatetime, parseType)
{
var STATESECTION = 0;
var STATENUMBER = 1;
var STATEMONSTRING = 2;

	var dt = new Array();            // date time array
	var key;           // To hold number and strings
	var currChar;
	var charIndex;
	var strLen = inString.length;
	var state;
	var seq;
	var bIllegal= false;
	var section;
	var i;

	// Initialize date/time array
	for (var i=0; i<= DW_PARSEDT_msecseq; i++)
		dt[i] = -1;

	if (parseType == DW_PARSEDT_TIME)
		{
		section = DW_PARSEDT_hourseq;      // start at time section
		lastseq = DW_PARSEDT_msecseq;
		}
	else if (parseType == DW_PARSEDT_DATETIME)
		{
		section = 0;
		lastseq = DW_PARSEDT_msecseq;
		}
	else
		{
		section = 0;            // start at first section
		lastseq = 2;            // end after date segments
		}
	state = STATESECTION;

    for (charIndex = 0; charIndex < strLen && ! bIllegal;)
		{
		currChar = inString.charAt (charIndex);
		if (state == STATESECTION)
			{
			if (DW_parseIsSpace(currChar))
				charIndex++;          // skip white space
			else if ((currChar == 'a' || currChar == 'A') &&
					 (inString.charAt (charIndex+1) == 'm' || inString.charAt (charIndex+1) == 'M'))
				{
				if (dt[DW_PARSEDT_hourseq] != -1)
					{
					if (dt[DW_PARSEDT_hourseq] == 0 &&
						dt[DW_PARSEDT_minseq] <= 0)
						bIllegal = true;
					else
						{
						if (dt[DW_PARSEDT_hourseq] == 12)  // 12 a.m. = 00
							dt[DW_PARSEDT_hourseq] = 0;
						charIndex += 2;
						section = lastseq;
						}
					}
				else
					bIllegal = true;
				}
			else if ((currChar == 'p' || currChar == 'P') &&
					 (inString.charAt (charIndex+1) == 'm' || inString.charAt (charIndex+1) == 'M'))
				{
				if (dt[DW_PARSEDT_hourseq] != -1)
					{
					charIndex += 2;
					if (dt[DW_PARSEDT_hourseq] != 12)
						{
						dt[DW_PARSEDT_hourseq] += 12;
						if (dt[DW_PARSEDT_hourseq] > 23)
							bIllegal = true;
						else
							section = lastseq;
						}
					}
				else
					bIllegal = true;
				}
			else if (section > lastseq) // too many sections
				bIllegal = true;
			else if (currChar == '-' ||     // New section
					 currChar == '/' ||
					 currChar == ',' ||
					 currChar == '.' ||
					 currChar == ':')
				{
				if (section == 0 ||                 // Never done a section?
					dt[section-1] == -1)        // Missed a section?
					bIllegal = true;
				else
					charIndex++;
				}
			else if (DW_parseIsDigit(currChar))
				{
				key = "";
				state = STATENUMBER;
				}
			else if (DW_parseIsAlpha(currChar))
				{
				if (section != DW_PARSEDT_monseq)
					bIllegal = true;
				else
					state = STATEMONSTRING;
				key = "";
				}
			else
				bIllegal = true;
			}
		else if(state == STATENUMBER)
			{
			key += currChar;
			charIndex++;
			// accumulate until next char is not a digit
			if (!DW_parseIsDigit(inString.charAt (charIndex)))
				{
				state = STATESECTION;       // Change state for next char
				var n = key - 0;
                var keyLength = key.length;
                
				if (section == 0 &&  keyLength == 4)
					{           // year obviously first; force new format
					DW_PARSEDT_yearseq = 0;
					DW_PARSEDT_monseq = 1;
					DW_PARSEDT_dayseq = 2;
					}

				if (section == DW_PARSEDT_monseq)
					{
					if (n < 1 || n > 12)
					bIllegal = true;
					}
				else if (section == DW_PARSEDT_yearseq)
					{       // valid size of year

					if (n < 0 || !(keyLength == 2 || keyLength == 4))
						bIllegal = true;
					// e.g. if 01/01/50 then year is 1950
					else if (n >= 50 && keyLength == 2)
						n += 1900;
					// e.g. if 01/01/49 then year is 2049
					else if (n < 50 && keyLength == 2)
						n += 2000;
					}
				else if (section == DW_PARSEDT_dayseq)
					{
					if (n < 1 || n > 31)        // Do more validation later
						bIllegal = true;
					}
				else if (section == DW_PARSEDT_hourseq)
					{
					if (n < 0 || n > 23)
						bIllegal = true;
					}
				else if (section == DW_PARSEDT_minseq)
					{
					if (n < 0 || n > 59)
						bIllegal = true;
					}
				else if (section == DW_PARSEDT_secseq)    // seconds
					{
					if (n < 0 || n > 59)
						bIllegal = true;
					}
				else        // Micro seconds
					{
					if (n < 0 || n > 999999)
						bIllegal = true;
					else if (keyLength == 1)
						n *= 100000;
					else if (keyLength == 2)
						n *= 10000;
					else if (keyLength == 3)
						n *= 1000;
					else if (keyLength == 4)
						n *= 100;
					else if (keyLength == 5)
						n *= 10;
					}
				if (!bIllegal)
					{
					dt[section] = n;
					section++;
					}
				}
			}
        else if (state == STATEMONSTRING)
            {
			key += currChar;
			charIndex++;
			if (!DW_parseIsAlpha(inString.charAt (charIndex)))
				{
				var m;

				m = DW_monthSearch(key);
				if (m == -1)
					bIllegal = true;
				else
					dt[section] = m;
				state = STATESECTION;
				section++;
				if (inString.charAt (charIndex) == '.' &&  // Check for possible
					key.length == 3 &&  // abbreviation of month
					m != 5)         // "May" has no abbreviation
					charIndex++;
				}
			}
		else
		    {
			bIllegal = true;        // Unspecified error
			}
		}

	if (bIllegal)
		return false;


	if (parseType != DW_PARSEDT_TIME)
		{   // We require month and day and year
		if (dt[DW_PARSEDT_monseq] == -1 ||
			dt[DW_PARSEDT_yearseq] == -1 ||
			dt[DW_PARSEDT_dayseq] == -1)
			return false;
		}
	else if (dt[DW_PARSEDT_hourseq] == -1 )     // We require at least the hour
		return false;

	// Zero out uninitialized fields
	for (i=0; i <= DW_PARSEDT_msecseq; i++)
		if (dt[i] == -1)
			dt[i] = 0;

	// Do additional validation of the day and year
	if (parseType != DW_PARSEDT_TIME)
	    {
    	var leapYear = DW_isLeap(dt[DW_PARSEDT_yearseq]) ? 1 : 0;
		if (dt[DW_PARSEDT_dayseq] > DW_dayTable[leapYear][dt[DW_PARSEDT_monseq]])
    		return false;
		if (dt[DW_PARSEDT_yearseq] > 9999)
			return false;
    	}

    if (outDatetime != null)
        {
    	if (parseType == DW_PARSEDT_DATE || parseType == DW_PARSEDT_DATETIME)
    		{
    		outDatetime.day = dt[DW_PARSEDT_dayseq];
    		outDatetime.month = dt[DW_PARSEDT_monseq]-1;
    		outDatetime.year = dt[DW_PARSEDT_yearseq]-1900;
    		}
    	if (parseType == DW_PARSEDT_TIME || parseType == DW_PARSEDT_DATETIME)
    		{
    		outDatetime.sec = dt[DW_PARSEDT_secseq];
    		outDatetime.min = dt[DW_PARSEDT_minseq];
    		outDatetime.hour = dt[DW_PARSEDT_hourseq];
    		outDatetime.msec = dt[DW_PARSEDT_msecseq];
    		}
    	}

	return true;
}

function DW_DateParse(inString)
{
    var result = new DW_DateClass();
    
    if (DW_parseDatetimeString (inString, result, DW_PARSEDT_DATE))
        return result;
    else
        return null;
}

function DW_TimeParse(inString)
{
    var result = new DW_TimeClass();
    
    if (DW_parseDatetimeString (inString, result, DW_PARSEDT_TIME))
        return result;
    else
        return null;
}

function DW_DateClass(year, month, day)
{
    if (arguments.length == 0)
        {
        year = 0;
        month = 0;
        day = 0;
        }
        
    this.year = year;
    this.month = month;
    this.day = day;
    this.hour = 0;
    this.min = 0;
    this.sec = 0;
    this.msec = 0;

    this.toString = DW_DateToString;
}

function DW_TimeClass(hour, min, sec, msec)
{
    if (arguments.length == 0)
        {
        hour = 0;
        min = 0;
        sec = 0;
        msec = 0;
        }

    this.hour = hour;
    this.min = min;
    this.sec = sec;
    this.msec = msec;
    this.year = 0;
    this.month = 0;
    this.day = 0;

    this.toString = DW_TimeToString;
}

function DW_DateToString()
{
    return (this.year + 1900) + "-" + (this.month + 1)  + "-" + this.day
}

function DW_TimeToString(theTime)
{
    return this.hour + ":" + this.min + ":" + this.sec + "." + this.msec
}

function Sprawdz_Date(jez, pole)
{
    var wartosc_pola=pole.value;
  
    if (wartosc_pola!='') {
		wartosc_pola=onlyNumbers(trim(wartosc_pola));
		if (wartosc_pola.length!=8)
		{
			alert("Wprowadź właściwą datę !");
			pole.focus();
			return false;
		}
		wartosc_pola=wartosc_pola.substring(0,4)+'-'+wartosc_pola.substring(4,6)+'-'+wartosc_pola.substring(6);
		if (DW_DateParse(wartosc_pola)==null)  
	    {
			if (jez=='a') 
		    {
	        alert("Wprowadź właściwą datę !!!");
		    }
			else if (jez=='n') 
	        {
		    alert("Wprowadź właściwą datę !!!");
			}
	        else 
		    {
			alert("Wprowadź właściwą datę !!!");
	        }
		pole.focus();
	    return false;
		}
	}
	pole.value=wartosc_pola;
	return true;
}

function Sprawdz_Date2(jez, wartosc_pola, pole)
{
    if (wartosc_pola!='')
    if (DW_DateParse(wartosc_pola)==null)  
    {
        if (jez=='a') 
        {
        alert("Wprowad właciwš datę !!!");
        }
        else if (jez=='n') 
        {
        alert("Wprowad właciwš datę !!!");
        }
        else 
        {
        alert("Wprowad właciwš datę !!!");
        }
    pole.focus();
    return false;
    }
    return true;
}

function Sprawdz_Czas(jez, pole)
{
    var wartosc_pola=pole.value;
  
    if (wartosc_pola!='') {
		wartosc_pola=onlyNumbers(trim(wartosc_pola));
		if (wartosc_pola.length!=4)
		{
			alert("Wprowadź właściwy czas !");
			pole.focus();
			return false;
		}
		wartosc_pola=wartosc_pola.substring(0,2)+':'+wartosc_pola.substring(2,4);
		if (DW_TimeParse(wartosc_pola)==null)  
		{
			if (jez=='a') 
			{
			alert("Wprowadź właściwy czas !");
			}
			else if (jez=='n') 
			{
			alert("Wprowadź właściwy czas !");
			}
			else 
			{
			alert("Wprowadź właściwy czas !");
			}
			pole=pole;//skok w pole z rokiem
			pole.focus();
			return false;
		}
	}
	pole.value=wartosc_pola;
    return true;
}
//*********************************KONIEC SPRAWDZANIA POPRAWNOCI ZAPISU DATY*****************

//********************************* TRIM *****************************************************
function trim(strIn) 
{
var strOut, intStrInLen, intPos, c, blnLTrim, strTmp ;

// Variable initialisation
intStrInLen = strIn.length;
strOut = "";
strTmp = ""; // use to buffer while working on "right trimming"
blnLTrim = true; // working on "left trimming"

for (i=0 ; (i < intStrInLen) ; i++) 
{
	c = strIn.charAt(i);
	if (c == " ") {
		if (! blnLTrim) strTmp = strTmp + c;
		}
	else { // if it's not a blank space
		blnLTrim = false;
		if (strTmp == "") {
			strOut = strOut + c;
			}
		else {
			strOut = strOut + strTmp + c;
			strTmp = "";	
		}
	}
}
return strOut;
}
//********************************* KONIEC TRIM **********************************************

//******************* Sprawdzanie poprawnosci wpisow w polach ********************************
function validFieldX(fldField,strFieldName,blnMandatory,intMin,intMax,strSetOfChar,jez) {
    var strFieldValue = fldField.value;
	ind = strFieldValue.indexOf(',');
	var str2=strFieldValue;
	if (ind!=-1)
	{
		str2=strFieldValue.substring(0,ind)+'.'+strFieldValue.substring(ind+1);
	}
	fldField.value=str2;
	return validField(fldField,strFieldName,blnMandatory,intMin,intMax,strSetOfChar,jez);
}

function validField(fldField,strFieldName,blnMandatory,intMin,intMax,strSetOfChar,jez) 
{
    var strSetOfLetter = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
    var strSetOfDigit = "0123456789"
    var strSetOfSpecLetter = "ŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőöřůúűüýţąĄśŚźŹżŻłŁóÓšżęół"
    var strFieldValue = fldField.value;
    
    // Mandatory validation
    if (blnMandatory) 
    {
        if (strFieldValue == "" && intMin>0) 
        {
            fldField.focus();
            if (jez=='a') alert("Please enter a " + strFieldName + ".")
            else alert("Proszę wprowadź zawartość pola " + strFieldName + ".")
            return (false);
        }
        // Minimum length validation
        if (strFieldValue.length < intMin) 
        {
            fldField.focus();
            if (jez=='a') alert("Please enter at least " + intMin + " characters in the "+ strFieldName +" field.")
            else alert("Proszę wprowadź co najmniej " + intMin + " znaków w polu "+ strFieldName +".")
            return (false);
        }
        // Maximum length validation
        if (strFieldValue.length > intMax) 
        {
            fldField.focus();
            if (jez=='a') alert("Please enter most then  " + intMax + " characters in the "+ strFieldName +" field.")
            else alert("Proszę wprowadź najwyżej " + intMax + " znaków w polu "+ strFieldName +".")
            return (false);
        }
    }
    // Set of chartacter validation
    if (strSetOfChar == "AZ 09" ) {
        strSetOfChar = " " + strSetOfLetter + strSetOfDigit;		
        for (i=0 ; i < strFieldValue.length ; i++) {
            if ( strSetOfChar.indexOf(strFieldValue.charAt(i)) < 0 ) {
                fldField.focus();
                if (jez=='a') alert("Only letters and digits can be used in the "+ strFieldName +" field.");				
                else alert("Tylko litery \"bez ogonków\" i cyfry mogš być używane w polu "+ strFieldName +".");
                return (false);
            }
        }
    }
    if (strSetOfChar == "AZé '-" ) {
        strSetOfChar = " '-" + strSetOfLetter + strSetOfSpecLetter;		
        for (i=0 ; i < strFieldValue.length ; i++) {
            if ( strSetOfChar.indexOf(strFieldValue.charAt(i)) < 0 ) {
                fldField.focus();
                    if (jez=='a')  alert("Only letters, spaces, apostrophes (') and hyphens (-) characters can be used in the "+ strFieldName +" field.")
                    else alert("Tylko litery, spacje, apostrofy (') i mylniki (-) mogš być używane w polu "+ strFieldName +".");
            return (false);
            }
        }
    }
    if (strSetOfChar == "09" ) {
        strSetOfChar = strSetOfDigit;		
        for (i=0 ; i < strFieldValue.length ; i++) {
            if ( strSetOfChar.indexOf(strFieldValue.charAt(i)) < 0 ) {
                fldField.focus();
                if (jez=='a') alert("Only digits can be used in the "+ strFieldName +" field.")
                else alert("Tylko cyfry mogš być wprowadzane w polu "+ strFieldName +".");
                return (false);
            }
        }
    }
    if (strSetOfChar == "09." ) {
        strSetOfChar = "." + strSetOfDigit;		
        for (i=0 ; i < strFieldValue.length ; i++) {
            if ( strSetOfChar.indexOf(strFieldValue.charAt(i)) < 0 ) {
                fldField.focus();
                if (jez=='a') alert("Only digits can be used in the "+ strFieldName +" field.")
                else alert("Tylko cyfry mogš być wprowadzane w polu "+ strFieldName +".");
                return (false);
            }
        }
    }
    if (strSetOfChar == "09 -" ) {
        strSetOfChar = " " + "-" + strSetOfDigit;		
        for (i=0 ; i < strFieldValue.length ; i++) {
            if ( strSetOfChar.indexOf(strFieldValue.charAt(i)) < 0 ) {
                fldField.focus();
                if (jez=='a') alert("Only digits, spaces and hyphens (-) can be used in the "+ strFieldName +" field.");
                else alert("Tylko cyfry, spacje i myślnik (-) mogą być wprowadzane w polu "+ strFieldName +".");
                return (false);
            }
        }
    }
    if (strSetOfChar == "09 .-+()" ) {
        strSetOfChar = strSetOfDigit + " +-()";		
        for (i=0 ; i < strFieldValue.length ; i++) {
            if ( strSetOfChar.indexOf(strFieldValue.charAt(i)) < 0 ) {
                fldField.focus();
                if (jez=='a')  alert("Only digits, commas (,), plus (+), hyphens (-), dots (.) and brackets [()] can be used in the "+ strFieldName +" field.")
                alert("Tylko cyfry, przecinek (,), plus (+), mylnik (-), kropka (.) i nawiasy [()] mogš być użyte w polu "+ strFieldName +".");
                return (false);
            }
        }
    }
    if (strSetOfChar == "EMAIL" ) {
        var intPosAt	= fldField.value.indexOf("@");	
        var blnAtExist	= ( intPosAt >=0 )
        var blnAtMore	= ( fldField.value.indexOf("@",intPosAt+1) >= 0 );
        var blnDotExist = ( fldField.value.indexOf(".",intPosAt+1) >= 0 );
        if ( !blnAtExist || blnAtMore || !blnDotExist ) {
            fldField.focus();
            if (jez=='a') alert("Please enter a valid e-mail.")
            else alert("Proszę wprowadź właściwy adres e-mail.");
            return (false);
        }
    }
    return (true);
}
//********************************************************************************************

function onlyNumbers(dana) {
    var strSetOfDigit = "0123456789";
	var newdana="";
	for (i=0;i<dana.length;i++ )
	{
		if (strSetOfDigit.indexOf(dana.charAt(i))>=0)
		{
			newdana+=dana.charAt(i);
		}
	}
	return newdana;
}

function Sprawdz_NIP(pole) {
	pole.value=onlyNumbers(pole.value);
	if (pole.value=="") {
		alert("Proszę wprowadzić numer NIP.");
        pole.focus();
        return false;
    }
	return true;
}

function Sprawdz_Email(pole) {
	pole.value=trim(pole.value);
	var iloscmalp=0;
	var iloscspacji=0;
	for (i=0;i<pole.value.length;i++ )
	{
		if (pole.value.charAt(i)=='@')
		{	
			iloscmalp++;
		}
		if (pole.value.charAt(i)==' ')
		{	
			iloscspacji++;
		}
	}
	if (iloscspacji>0 || iloscmalp!=1)
	{	
		alert("Proszę wprowadzić poprawny adres E-Mail.");
		pole.focus();
		return false;
	}
	return true;
}

function Sprawdz_Kod(pole) {
	wartosc=onlyNumbers(pole.value);
	if (wartosc.length!=5)
	{
		alert("Proszę wprowadzić poprawny kod pocztowy.");
		pole.focus();
		return false;
	}
	pole.value=wartosc.substring(0,2)+'-'+wartosc.substring(2);
	return true;
}