///////////////////////////////////////////////////////////////////////////
//
// FUNCTIONS VALIDATION
//
// (c) copyright 2008-2009  Dominik Dobosz
//
// Owner: Rafał Mazur { m | marketing & internet
//
///////////////////////////////////////////////////////////////////////////

String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g, ''); }

///////////////////////////////////////////////////////////////////////////
//
// VALIDATION
//
///////////////////////////////////////////////////////////////////////////

function walidate_field(check_value, form_name, element_to_check, element_to_class_it, class_if_true, class_if_false, class_if_no_matter) {
    var element_value = '';
    var element_class = '';
    element_value = document.getElementById(form_name).elements[element_to_check].value;
    element_class = document.getElementById(form_name).elements[element_to_check].className;
    if (((element_value == '') && (element_class == '' || element_class == 'normal')) || (element_class == 'banned')) {
        document.getElementById(element_to_class_it).className = class_if_no_matter;
    } else {
        if (check_value == true) {
            document.getElementById(element_to_class_it).className = class_if_true;
        } else {
            document.getElementById(element_to_class_it).className = class_if_false;
        }
    }
}


///////////////////////////////////////////////////////////////////////////
//
// NEEDED FIELDS
//
///////////////////////////////////////////////////////////////////////////

function needed_field(form_name, fields_needed, class_needed_name, class_not_needed_name) {
    var f = 0;
    var i = 0;
    var l = 0;
    var legal_form_demand = '';
    var found_element = false;

    var formObject = document.getElementById(form_name);
    for (f = 0; f < formObject.elements.length; f++) {

        var classThis = formObject.elements[f].className;
        var positionSTB = classThis.search(class_needed_name);
        if (positionSTB > -1) {
            formObject.elements[f].className = classThis.replace(class_needed_name, class_not_needed_name);
        }
    }

    for (l = 0; l < fields_needed.length; l++) {
        field_detail = fields_needed[l].split( "|" );
        field_name = field_detail[0];

        found_element = false;
        f = 0;
        while ((f < formObject.elements.length) && (found_element == false)) {
            if (formObject.elements[f].name == field_name) {
                var classThis = formObject.elements[f].className;
                var positionSTB = classThis.search(class_not_needed_name);
                if (positionSTB > -1) {
                    formObject.elements[f].className = classThis.replace(class_not_needed_name, class_needed_name);
                } else {
                    if (classThis != '') {
                        formObject.elements[f].className = classThis+' '+class_needed_name;
                    } else {
                        formObject.elements[f].className = class_needed_name;
                    }
                }
                found_element = true;
            }
            f++;
        }
    }
}


///////////////////////////////////////////////////////////////////////////
//
// VALIDATION OF RECORD
//
///////////////////////////////////////////////////////////////////////////

//weryfikacja formularza, wyświetla altery jak pola podane poprzez parametr są puste

function check_new_record(form_name, fields_to_check) {

	var found_field = false;
	var field_details = '';
	var field_name = '';
	var field_title = '';
	var f = 0;

    var formObject = document.getElementById(form_name);
	// jedzie po polach formularza
	for (i=0; i<formObject.elements.length; i++) {

		found_field = false;
		f = 0;

		// dopóki nie znalazł i index pola sprawdzanego mniejszy od liczby pól do sprawdzenia
		while ((found_field == false) && (f < fields_to_check.length)) {

			// wyciągam nazwę i opis pola
			field_details = fields_to_check[f].split( "|" );
			field_name = field_details[0];
			field_title = field_details[1];

			// czy znaleźliśmy pole, które chcemy sprawdzić
			if (formObject.elements[i].name == field_name) {
				found_field = true;
			} else {
				f++;
			}
		}

		// czy pole znalezione
		if (found_field) {
			switch (formObject.elements[i].type) {

				case 'text': {
					if (formObject.elements[i].value == '') {
						alert('Bardzo prosimy o wypełnienie pola "' + field_title + '".');
						formObject.elements[i].focus();
						return false;
					}
					break;
				}

				case 'select-one': {
					if ((formObject.elements[i].value == 0) || (formObject.elements[i].value == '')) {
						alert('Bardzo prosimy o wybranie jakiejś wartości w polu "' + field_title + '".');
						formObject.elements[i].focus();
						return false;
					}
					break;
				}

				case 'password': {
					if (formObject.elements[i].value == '') {
						alert('Bardzo prosimy o wypełnienie pola "' + field_title + '". Hasło posłuży do logowania użytkownika do systemu. W haśle rozróżniane są małe i duże litery.');
						formObject.elements[i].focus();
						return false;
					}
					break;
				}
			}
		}
	}

	return true;
}






function needed_signs(field_id, field_length, check_if_empty, information_text) {

	var field_value = document.getElementById(field_id).value;

	if ((field_value.length < field_length) || ((field_value.length == 0) && check_if_empty)) {
		alert(information_text);
		document.getElementById(field_id).focus();
		return false;
	} else {
		return true;
	}
}






///////////////////////////////////////////////////////////////////////////
//
// NUMBER FORMAT
//
///////////////////////////////////////////////////////////////////////////

function number_format(form_name, field_name, minimum_value) {
    var field_value = '';
    var field_numbers = '';
    var i = 0;

    field_value = document.getElementById(form_name).elements[field_name].value;

    if (field_value.length > 0) {

        for (i=0; i<field_value.length; i++) {
            nr_ascii = field_value.charCodeAt(i);
            if ((nr_ascii>=48) && (nr_ascii<=57)) {
                field_numbers = field_numbers + field_value[i];
            }
        }

        if (field_numbers < minimum_value) {
            field_numbers = minimum_value;
        }
        document.getElementById(form_name).elements[field_name].value = field_numbers;
    }
}


///////////////////////////////////////////////////////////////////////////
//
// DAYS IN MONTH
//
///////////////////////////////////////////////////////////////////////////

function days_in_month(month, year) {
    switch(parseInt(month,10)) {
        case 2:
            if ((year%100)==0)
                if ((year%400)==0)
                    return 29;
                else
                    return 28;
            else if((year%4)==0)
                    return 29;
            else
                return 28;
            break;
        case 4:
            return 30
            break;
        case 6:
            return 30
            break;
        case 9:
            return 30
            break;
        case 11:
            return 30
            break;
        default:
            return 31;
            break;
    }
}


///////////////////////////////////////////////////////////////////////////
//
// DATE FORMAT
//
///////////////////////////////////////////////////////////////////////////

function date_format(form_name, field_name) {
    var field_value = '';
    var field_numbers = '';
    var formatted_value = '';
    var part = '';
    var i = 0;
    var l = 0;
    field_value = document.getElementById(form_name).elements[field_name].value;

    for (i=0; i<field_value.length; i++) {
        nr_ascii = field_value.charCodeAt(i);
        if ((nr_ascii>=48) && (nr_ascii<=57)) {
            field_numbers = field_numbers + field_value[i];
        }
    }

    l = field_numbers.length;
    if (l > 8) {
        l = 8;
    }

    var d = new Date();
    var the_year = d.getFullYear();
    var the_month = 1;
    var days_month = 31;

    part = '';
    for (i=0; i < l; i++) {
        part = part + field_numbers[i];
        switch (i) {
            case 3: {
                if (parseInt(part, 10) < 1900) {
                    part = '1900';
                } else {
                    if (parseInt(part, 10) > the_year + 10) {
                        part = the_year + 10;
                    }
                }
                formatted_value = formatted_value + part;
                if (i<l-1) {
                    formatted_value = formatted_value + '-';
                }
                the_year = part;
                part = '';
                break;
            }
            case 5: {
                if (parseInt(part, 10) < 1) {
                    part = '01';
                } else {
                    if (parseInt(part, 10) > 12) {
                        part = 12;
                    }
                }
                formatted_value = formatted_value + part;
                if (i<l-1) {
                    formatted_value = formatted_value + '-';
                }
                the_month = part;
                part = '';
                break;
            }
            case 7: {
                if (parseInt(part, 10) < 1) {
                    part = '01';
                } else {
                    days_month = days_in_month(the_month, the_year);
                    if (parseInt(part, 10) > days_month) {
                        part = days_month;
                    }
                }
                formatted_value = formatted_value + part;
                part = '';
                break;
            }
        }
    }
    if (part != '') {
        formatted_value = formatted_value + part;
    }

    document.getElementById(form_name).elements[field_name].value = formatted_value;
}


///////////////////////////////////////////////////////////////////////////
//
// POSTAL FORMAT
//
///////////////////////////////////////////////////////////////////////////

function postal_format(form_name, field_name) {
    var field_value = '';
    var field_numbers = '';
    var formatted_value = '';
    var part = '';
    var i = 0;
    var l = 0;
    field_value = document.getElementById(form_name).elements[field_name].value;

    for (i=0; i<field_value.length; i++) {
        nr_ascii = field_value.charCodeAt(i);
        if ((nr_ascii>=48) && (nr_ascii<=57)) {
            field_numbers = field_numbers + field_value[i];
        }
    }

    l = field_numbers.length;
    if (l > 5) {
        l = 5;
    }

    part = '';
    for (i=0; i < l; i++) {
        part = part + field_numbers[i];
        switch (i) {
            case 1: {
                formatted_value = formatted_value + part;
                if (i<l-1) {
                    formatted_value = formatted_value + '-';
                }
                part = '';
                break;
            }
        }
    }
    if (part != '') {
        formatted_value = formatted_value + part;
    }

    document.getElementById(form_name).elements[field_name].value = formatted_value;
}


///////////////////////////////////////////////////////////////////////////
//
// NIP FORMAT
//
///////////////////////////////////////////////////////////////////////////

function nip_format(form_name, field_name) {
    var field_value = '';
    var field_numbers = '';
    var formatted_value = '';
    var part = '';
    var i = 0;
    var l = 0;
    field_value = document.getElementById(form_name).elements[field_name].value;

    for (i=0; i<field_value.length; i++) {
        nr_ascii = field_value.charCodeAt(i);
        if ((nr_ascii>=48) && (nr_ascii<=57)) {
            field_numbers = field_numbers + field_value[i];
        }
    }

    l = field_numbers.length;
    if (l > 10) {
        l = 10;
    }

    part = '';
    for (i=0; i < l; i++) {
        part = part + field_numbers[i];
        switch (i) {
            case 1: {
                formatted_value = formatted_value + part;
                if (i<l-1) {
                    formatted_value = formatted_value + '-';
                }
                part = '';
                break;
            }
        }
    }
    if (part != '') {
        formatted_value = formatted_value + part;
    }

    document.getElementById(form_name).elements[field_name].value = formatted_value;
}


///////////////////////////////////////////////////////////////////////////
//
// NIP CHECK
//
///////////////////////////////////////////////////////////////////////////

/* sprawdzanie czy NIP jest poprawny */
function nip_check(nip) {
    var nip_sprawdzenie = ''; //tu będzie wpisany nip bez kresek i innych znaków które mogą zostać wpisane przez użytkownika
    var nr_ascii = 0; //nr ASCII, robocza zmienna
    var wagi = new Array(6,5,7,2,3,4,5,6,7); //wagi cyfr NIPu
    var suma_wag = 0;
    var suma_kontrolna = 0;
    var cyfra = 0;
    var ile_niecyfr = 0;

    if (nip.length>0) {
        //NIP nie jest pusty

        //sprawdzam NIP
        //wyrzucam z podanego przez parametr NIPu wszystkie znaki prócz cyfr
        //cyfry w notacji ASCII mają kody od 48 do 57
        ile_niecyfr = 0;
        for (i=0; i<nip.length; i++) {
            nr_ascii = nip.charCodeAt(i);
            if ((nr_ascii>=48) && (nr_ascii<=57)) {
                nip_sprawdzenie = nip_sprawdzenie + nip[i];
            } else {
                ile_niecyfr++;
            }
        }
        if (ile_niecyfr == 0) {
            //w zmiennej nip_sprawdzanie mam wyciągnięte cyfry z podanego NIPu
            nip=nip_sprawdzenie;
            if (nip.length==10) {
                //jeżeli NIP ma 10 cyfr, wtedy jest OK i można go walidować

                //sumujemy WAGI cyfr
                for (i=0; i<9; i++) {
                    cyfra=parseInt(nip[i]);
                    suma_wag = suma_wag + (cyfra * wagi[i]);
                }
                //suma kontrolna
                suma_kontrolna = suma_wag % 11;
                //sprawdzenie czy suma kontrolna jest poprawna
                //aby była, reszta z dzielenia sumy wag 9 cyfr ma być taka jak 10 cyfra NIPu
                cyfra = nip[9];
                cyfra = parseInt(cyfra);
                if (suma_kontrolna == cyfra) {
                    return true;
                } else {
                    return false;
                }
            } else {
                //NIP nie ma 10 cyfr, zły NIP na 100%
                return false;
            }
        } else {
            return false;
        }
    } else {
        //NIP jest pusty, więc błąd
        return false;
    }
}


///////////////////////////////////////////////////////////////////////////
//
// PAYMENT & PAYMENT DAYS CONTROL
//
///////////////////////////////////////////////////////////////////////////

function payment_method_control(form_name, payment, days_element) {
    if (payment != 'przelew') {
        document.getElementById(form_name).elements[days_element].selectedIndex = 0;
        document.getElementById(form_name).elements[days_element].disabled = true;
    } else {
        if (document.getElementById(form_name).elements[days_element].selectedIndex == 0) {
            document.getElementById(form_name).elements[days_element].selectedIndex = 1;
        }
        document.getElementById(form_name).elements[days_element].disabled = false;
    }
}
