var add_special_text = '';
var vd_required_field = 1; // fieldas yra privalomas
var vd_not_required_if_empty = 0; // fieldas nera privalomas, jei tuscias, bet jei uzpildytas tai tikrinam
var vd_special_error = 0; //jeigu yra ivedami kokie nors patobulinimai jie kreipiasi i si erora

//lietuviskos raides
var vd_lang_letters_upper = 'ĄČĘĖĮŠŲŪŽ'; //didziosios
var vd_lang_letters_lower = 'ąčęėįšųūž'; //mazosios

//begin validator functions

/******************************************************************************
 * function:  VDFormValidate
 * author: tmv
 * date: 2004.05.12
 * parameters: 
 * error_string - turimu klaidu stringas
 * form_name -  formos vardas, reikalingas jeigu norima submitinti forma jeigu erroru nera 
 * submit_btn_id - mygtuko vardas kuri reikia disablinti kai forma yra submitinama
 * paskirtis: Patirkinti ar yra erroru, jei nera submitinti forma arba grazinti true, o jei yra erroru isvesti alerta   
 * Formatas:
 *****************************************************************************/
function VDFormValidate(error_string, form_name, submit_btn_id) {
    if(error_string == '') {
        if(form_name != undefined) {
            if(submit_btn_id != undefined && document.getElementById(submit_btn_id) != null) 
                document.getElementById(submit_btn_id).disabled = true;
            document.getElementById(form_name).submit();
        }
        else
            return true;
    }
    else {
        alert(error_string);
        return false;
    }
}

/******************************************************************************
 * function:  VDCheckDate
 * author: tmv
 * date: 2004.05.12
 * parameters: 
 * field_id - formos fieldo id 
 * show_error_text -  erroro tekstas
 * is_required - ar laukelis yra privalomas (1 - privalomas, 0- neprivalomas, bet jei uzpildytas bus tikrinamas)  
 * d_min - minimali datos reiksme, nenurodzius: 1000-01-01
 * d_max - maximali datos reiksme, nenurodzius: 2999-01-01
 * error_text -  klaidos tekstas kuris bus rodomas vartotojui, nera butinas nes yra default  
 *date_format - datos formato tipas
 * paskirtis: Tikrina ar teisingai yra ivesta data.
 * Formatas: 2000-01-01, 2000 01 01, 2000/01/01, 01/01/2000
 * PASTABOS 16, 17, 18 skaiciai imami is datos formato konfiguracijos, todel ir keisti tokie :)
 *****************************************************************************/
function VDCheckDate(field_id, show_error_text, is_required, d_min, d_max, error_text, date_format) {
	var field_object = document.getElementById(field_id); 
	var field_value = field_object.value;
    //alert(date_format);
    switch (date_format) {
        case undefined:
        case 1:
            var regexp = /^(\d{4})\-(\d{2})\-(\d{2})$/;
            var separator = '-';
            break;
        case 16:
            var regexp = /^(\d{4}) (\d{2}) (\d{2})$/;
            var separator = ' ';
            break;
        case 17:
            var regexp = /^(\d{4})\/(\d{2})\/(\d{2})$/;
            var separator = '/';
            break;
        case 18:
            var regexp = /^(\d{2})\/(\d{2})\/(\d{4})$/;
            var separator = '/';
            break;
    }
    if(date_format == undefined || date_format < 17) {
        if (d_min == undefined || d_min == '') {
            d_min = '1000'+separator+'01'+separator+'01';
        }
        if (d_max == undefined || d_max == '') {
            d_max = '2999'+separator+'01'+separator+'01';
        }
        if (field_value < d_min) {
            vd_special_error = 1;
            add_special_text += '\n'+vd_error_date_min + d_min + '.\n';
        }
        if (field_value > d_max) {
            vd_special_error = 1;
            add_special_text += '\n'+vd_error_date_max + d_max + '.\n';
        }
    }
    
    var year = '';
    switch (date_format)
    {
        case undefined:
        case 1:
        case 16:
        case 17:
            year = field_value.substr(0, 4);
            var month = field_value.substr(5, 2);
            var day = field_value.substr(8, 2);
            break;
        case 18:
            var month = field_value.substr(0, 2);
            var day = field_value.substr(3, 2);
            break;
    }
    
    //if (month>12 || month<1 || day>31 || day<1) vd_special_error = 1;
    if (month < 1 || month > 12)
        vd_special_error = 1;
    else 
        if (day < 1 || day > 31)
            vd_special_error = 1;
        else
            if ((month==4 || month==6 || month==9 || month==11) && day==31)
                vd_special_error = 1;
            else
                if (month == 2)
                    if (year.length)
                    { 
                        var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
                        if (day > 29 || (day==29 && !isleap))
                            vd_special_error = 1;
                    }
                            
    return VDReturnValue(regexp, field_id, show_error_text, 'date', is_required, error_text);
}

/******************************************************************************
 * function:  VDCheckTime
 * author: tmv
 * date: 2004.05.12
 * parameters: 
 * field_id - formos fieldo id 
 * show_error_text -  erroro tekstas
 * is_required - ar laukelis yra privalomas (1 - privalomas, 0- neprivalomas, bet jei uzpildytas bus tikrinamas)  
 * error_text -  klaidos tekstas kuris bus rodomas vartotojui, nera butinas nes yra default  
 * t_min - minimali laiko reiksme, nenurodzius: 00:00
 * t_max - maximali laiko reiksme, nenurodzius: 23:59
 * paskirtis: Tikrina ar teisingai yra ivestas laikas.
 * Formatas: 12:00
 *****************************************************************************/
function VDCheckTime(field_id, show_error_text, is_required, t_min, t_max, error_text) {
    var regexp = /^(\d{2})\:(\d{2})$/;
	var return_value = VDReturnValue(regexp, field_id, show_error_text, 'time', is_required, error_text);
	if (return_value == '') {
	    if (t_min == undefined || t_min == '') {
	        t_min = '00:00';
	    }
		if (t_max == undefined || t_max == '') {
		    t_max = '23:59';
		}
		var field_object = document.getElementById(field_id); 
		var field_value = field_object.value;
		if (field_value < t_min) {
            vd_special_error = 1;
			add_special_text += '\n'+vd_error_time_min + t_min + '.\n';
		}
		if (field_value > t_max) {
            vd_special_error = 1;
			add_special_text += '\n'+vd_error_time_max + t_max + '.\n';
		}
        var min = field_value.substr(3,2);
        if (min > 59) vd_special_error = 1;
		return_value += VDReturnValue(regexp, field_id, show_error_text, 'time', is_required, error_text);
	}
    return return_value;
}

/******************************************************************************
 * function:  VDCheckTimeLong
 * author: vezhlys/ pagal tmv VDCheckTime
 * date: 2005.05.20
 * parameters: 
 * field_id - formos fieldo id 
 * show_error_text -  erroro tekstas
 * is_required - ar laukelis yra privalomas (1 - privalomas, 0- neprivalomas, bet jei uzpildytas bus tikrinamas)  
 * error_text -  klaidos tekstas kuris bus rodomas vartotojui, nera butinas nes yra default  
 * t_min - minimali laiko reiksme, nenurodzius: 00:00:00
 * t_max - maximali laiko reiksme, nenurodzius: 23:59:59
 * paskirtis: Tikrina ar teisingai yra ivestas laikas sekundziu tikslumu.
 * Formatas: 12:00:00
 *****************************************************************************/
function VDCheckTimeLong(field_id, show_error_text, is_required, t_min, t_max, error_text) {
    var regexp = /^(\d{2})\:(\d{2})\:(\d{2})$/;
	var return_value = VDReturnValue(regexp, field_id, show_error_text, 'time', is_required, error_text);
	if (return_value == '') {
	    if (t_min == undefined || t_min == '') {
	        t_min = '00:00:00';
	    }
		if (t_max == undefined || t_max == '') {
		    t_max = '23:59:59';
		}
		var field_object = document.getElementById(field_id); 
		var field_value = field_object.value;
		if (field_value < t_min) {
            vd_special_error = 1;
			add_special_text += '\n'+vd_error_time_min + t_min + '.\n';
		}
		if (field_value > t_max) {
            vd_special_error = 1;
			add_special_text += '\n'+vd_error_time_max + t_max + '.\n';
		}
        var min = field_value.substr(3,2);
        if (min > 59) vd_special_error = 1;
		return_value += VDReturnValue(regexp, field_id, show_error_text, 'time', is_required, error_text);
		var min = field_value.substr(6,2);
		if (min > 59) vd_special_error = 1;
		return_value += VDReturnValue(regexp, field_id, show_error_text, 'time', is_required, error_text);
		
	}
    return return_value;
}



/******************************************************************************
 * function:  VDCheckEmail
 * author: tmv
 * date: 2004.05.12
 * parameters: 
 * field_id - formos fieldo id 
 * show_error_text -  erroro tekstas
 * is_required - ar laukelis yra privalomas (1 - privalomas, 0- neprivalomas, bet jei uzpildytas bus tikrinamas)  
 * error_text -  klaidos tekstas kuris bus rodomas vartotojui, nera butinas nes yra default  
 * paskirtis: Tikrina ar teisingai yra ivestas el. pasto adresas.
 *****************************************************************************/
function VDCheckEmail(field_id, show_error_text, is_required, error_text) {
    var regexp =  /^([a-zA-Z0-9])+([\.a-zA-Z0-9_-])*@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-]{2,3})$/;
    return VDReturnValue(regexp, field_id, show_error_text, 'email', is_required, error_text);
}

function VDCheckYear(field_id, show_error_text, is_required, error_text) {
    var regexp =  /^[12]{1}[90]{1}(\d)?(\d)?$/;
    return VDReturnValue(regexp, field_id, show_error_text, 'year', is_required, error_text);
}

/******************************************************************************
 * function: VDCheckName
 * author: tmv
 * date: 2004.05.12
 * parameters: 
 * field_id - formos fieldo id 
 * show_error_text -  erroro tekstas
 * is_required - ar laukelis yra privalomas (1 - privalomas, 0- neprivalomas, bet jei uzpildytas bus tikrinamas)  
 * error_text -  klaidos tekstas kuris bus rodomas vartotojui, nera butinas nes yra default  
 * paskirtis: Tikrina ar teisingai yra ivestas vardas.
 * Formatas: Pirma raide turi buti didzioji.
 *****************************************************************************/
function VDCheckName(field_id, show_error_text, is_required, error_text) {
    var regexp = new RegExp('^[A-Z'+vd_lang_letters_upper+']{1}[a-z'+vd_lang_letters_lower+']+$');
    return VDReturnValue(regexp, field_id, show_error_text, 'name', is_required, error_text);
}

/******************************************************************************
 * function:  VDCheckSurname
 * author: tmv
 * date: 2004.05.13
 * parameters: 
 * field_id - formos fieldo id 
 * show_error_text -  
 * is_required - ar laukelis yra privalomas (1 - privalomas, 0- neprivalomas, bet jei uzpildytas bus tikrinamas)  
 * error_text -  klaidos tekstas kuris bus rodomas vartotojui, nera butinas nes yra default  
 * paskirtis: Tikrina ar teisingai yra ivesta pavarde.
 * Formatas: Pirmos pavardes raides turi buti didziosios. 
 *                  Testas arba Testas-Testavicius      
 *****************************************************************************/
function VDCheckSurname(field_id, show_error_text, is_required, allowed_simbols, error_text) {
    if(allowed_simbols == undefined || allowed_simbols == '')
        allowed_simbols = ' ';
    var regexp = new RegExp('^([A-Z'+vd_lang_letters_upper+']{1}[a-z'+vd_lang_letters_lower+']+['+allowed_simbols+']{1,3})?[A-Z'+vd_lang_letters_upper+']{1}[a-zA-Z'+vd_lang_letters_lower+']{2,50}$');
    return VDReturnValue(regexp, field_id, show_error_text, 'full_name', is_required, error_text);
}

/******************************************************************************
 * function:  VDCheckFullName
 * author: tmv
 * date: 2004.05.13
 * parameters: 
 * field_id - formos fieldo id 
 * show_error_text -  
 * is_required - ar laukelis yra privalomas (1 - privalomas, 0- neprivalomas, bet jei uzpildytas bus tikrinamas)  
 * error_text -  klaidos tekstas kuris bus rodomas vartotojui, nera butinas nes yra default  
 * paskirtis: Tikrina ar teisingai yra ivesta vardas ir pavarde.
 * Formatas: Pirmos vardo ir pavardes raides turi buti didziosios. 
 *                  Testas Testavicius arba gali butu Testas Testavicius-Testo 
 *****************************************************************************/
function VDCheckFullName(field_id, show_error_text, is_required, allowed_simbols, error_text) {
    if(allowed_simbols == undefined || allowed_simbols == '')
        allowed_simbols = ' ';
    

	var regexp = new RegExp('^[A-Z'+vd_lang_letters_upper+']{1}[a-z'+vd_lang_letters_lower+']+[ ]{1,3}[A-Z'+vd_lang_letters_upper+']{1}[a-zA-Z'+vd_lang_letters_lower+vd_lang_letters_upper+']{2,50}(['+allowed_simbols+']{1,3}[A-Z'+vd_lang_letters_upper+']{1}[a-z'+vd_lang_letters_lower+']{2,50})?$');
	
	return VDReturnValue(regexp, field_id, show_error_text, 'full_name', is_required, error_text);
	
}

/******************************************************************************
 * function:  VDCheckFullNameUpper
 * author: tmv
 * date: 2004.05.13
 * parameters: 
 * field_id - formos fieldo id 
 * show_error_text -  
 * is_required - ar laukelis yra privalomas (1 - privalomas, 0- neprivalomas, bet jei uzpildytas bus tikrinamas)  
 * error_text -  klaidos tekstas kuris bus rodomas vartotojui, nera butinas nes yra default  
 * paskirtis: Tikrina ar teisingai yra ivesta vardas ir pavarde.
 * Formatas: Visos vardo ir pavardes raides turi buti didziosios
 *****************************************************************************/
function VDCheckFullNameUpper(field_id, show_error_text, is_required, error_text) {
    var regexp = new RegExp('^[A-Z'+vd_lang_letters_upper+']{2,50}[ ]{1,3}[A-Z'+vd_lang_letters_upper+']{2,50}$');
    return VDReturnValue(regexp, field_id, show_error_text, 'full_name_upper', is_required, error_text);
}

/******************************************************************************
 * function: VDCheckPhone
 * author: tmv
 * date: 2004.05.13
 * parameters: 
 * field_id - formos fieldo id 
 * show_error_text -  erroro tekstas
 * is_required - ar laukelis yra privalomas (1 - privalomas, 0- neprivalomas, bet jei uzpildytas bus tikrinamas)  
 * error_text -  klaidos tekstas kuris bus rodomas vartotojui, nera butinas nes yra default  
 * paskirtis: Tikrina ar teisingai yra ivestas telefonas.
 * Formatas: Turi buti tik skaiciai.Leidziamas pirmas simbolis + 
 *****************************************************************************/
function VDCheckPhone(field_id, show_error_text, is_required, error_text) {
    var regexp = /^(\+)?[0-9 ]{3,13}$/;
    return VDReturnValue(regexp, field_id, show_error_text, 'phone', is_required, error_text);
}

/******************************************************************************
 * function: VDCheckURL
 * author: tmv
 * date: 2004.05.13
 * parameters: 
 * field_id - formos fieldo id 
 * show_error_text -  erroro tekstas
 * is_required - ar laukelis yra privalomas (1 - privalomas, 0- neprivalomas, bet jei uzpildytas bus tikrinamas)  
 * error_text -  klaidos tekstas kuris bus rodomas vartotojui, nera butinas nes yra default  
 * paskirtis: Tikrina ar teisingai yra url.
 * Formatas: 
 *****************************************************************************/
function VDCheckURL(field_id, show_error_text, is_required, error_text) {
    var regexp = /^(http(s?):\/\/|ftp:\/\/|www\.)+([\.a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-]{2,3})$/i;
	//var regexp = /^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/i;
    return VDReturnValue(regexp, field_id, show_error_text, 'url', is_required, error_text);
}

/******************************************************************************
 * function: VDCheckLetters
 * author: tmv
 * date: 2004.05.13
 * parameters: 
 * field_id - formos fieldo id 
 * show_error_text -  erroro tekstas
 * is_required - ar laukelis yra privalomas (1 - privalomas, 0- neprivalomas, bet jei uzpildytas bus tikrinamas) 
 * min_chars - kiek simboliu yra minimumas.Default 3 simboliai
 * max_chars - kiek simboliu yra maximumas.Default 255 simboliai
 * error_text -  klaidos tekstas kuris bus rodomas vartotojui, nera butinas nes yra default  
 * paskirtis: Tikrina ar yra ivedami simboliai yra raides.
 * Formatas: Tik raides
 *****************************************************************************/
function VDCheckLetters(field_id, show_error_text, is_required, min_chars, max_chars, error_text) {
    if(min_chars == undefined || min_chars == '')
        min_chars = 3;
    if(max_chars == undefined || max_chars == '')
        max_chars = 255;
    add_special_text += '\n'+vd_error_min+min_chars + '. '+vd_error_max + max_chars+'.\n';
    var regexp = new RegExp('^[a-z'+vd_lang_letters_upper+vd_lang_letters_lower+']{'+min_chars+','+max_chars+'}$', 'i');
    return VDReturnValue(regexp, field_id, show_error_text, 'letters', is_required, error_text);
}

/******************************************************************************
 * function: VDCheckNumbers
 * author: tmv
 * date: 2004.05.13
 * parameters: 
 * field_id - formos fieldo id 
 * show_error_text -  erroro tekstas
 * is_required - ar laukelis yra privalomas (1 - privalomas, 0- neprivalomas, bet jei uzpildytas bus tikrinamas) 
 * min_chars - kiek simboliu yra minimumas.Default 3 simboliai
 * max_chars - kiek simboliu yra maximumas.Default 255 simboliai
 * not_special_text - ar neivesti papildomo teksto
 * error_text -  klaidos tekstas kuris bus rodomas vartotojui, nera butinas nes yra default  
 * paskirtis: Tikrina ar yra ivedami simboliai yra skaiciai.
 * Formatas: Leidziami tik skaiciai.
 *****************************************************************************/
function VDCheckNumbers(field_id, show_error_text, is_required, min_num, max_num, error_text, not_special_text) {
    if(min_num == undefined || min_num == '')
        min_num = 3;
    if(max_num == undefined || max_num == '')
        max_num = 255;
    if (not_special_text == undefined) add_special_text += '\n'+vd_error_min+min_num + '. '+vd_error_max + max_num+'.\n';
    var regexp = new RegExp('^\\d{'+min_num+','+max_num+'}$');
    return VDReturnValue(regexp, field_id, show_error_text, 'numbers', is_required, error_text);
}

/******************************************************************************
 * function: VDCheckNumbersLettersEtc
 * author: tmv
 * date: 2004.05.13
 * parameters: 
 * field_id - formos fieldo id 
 * show_error_text -  erroro tekstas
 * is_required - ar laukelis yra privalomas (1 - privalomas, 0- neprivalomas, bet jei uzpildytas bus tikrinamas) 
 * min_chars - kiek simboliu yra minimumas.Default 3 simboliai
 * max_chars - kiek simboliu yra maximumas.Default 255 simboliai
 * etc_sim - galima prideti savo simboliu kurie leidziami.
 * error_text -  klaidos tekstas kuris bus rodomas vartotojui, nera butinas nes yra default  
 * paskirtis: Tikrina ar yra ivedami simboliai sutampa su leidziamais.
 * Formatas: 
 * Pastabos: 
 *     1.norint itraukti i etc simbolius simboli "-" reikia parasyti taip "\\\-" jei js rasoma php (tmv 2004.10.22)
 *****************************************************************************/
function VDCheckNumbersLettersEtc(field_id, show_error_text, is_required, min_nl, max_nl, etc_sim, error_text) {
    if(min_nl == undefined || min_nl == '')
        min_nl = 3;
    if(max_nl == undefined || max_nl == '')
       max_nl = 255;
    if(etc_sim == undefined || etc_sim == '')
        etc_sim = '';
    else 
        add_special_text = '\n'+vd_error_etc + etc_sim + '\n';
    add_special_text += '\n'+vd_error_min + min_nl + '. '+vd_error_max + max_nl+'.\n';
    var regexp = new RegExp('^[A-Za-z0-9'+vd_lang_letters_lower+vd_lang_letters_upper+etc_sim+']{'+min_nl+','+max_nl+'}$', 'i');
    return VDReturnValue(regexp, field_id, show_error_text, 'letters_numbers_etc', is_required, error_text);
}

function replaceChar(str, from, to) {
  /*
  **  Replace a token in a string
  **    s  string to be processed
  **    t  token to be found and removed
  **    u  token to be inserted
  **  returns new String
  */
   var idx = str.indexOf( from );


    while ( idx > -1 ) {
        str = str.replace (from, to );
        idx = str.indexOf( from );
	
    }

    return str;
  }

/******************************************************************************
 * function:  VDCheckDecimal
 * author: tmv
 * date: 2004.05.13
 * parameters: 
 * field_id - formos fieldo id 
 * show_error_text -  erroro tekstas
 * is_required - ar laukelis yra privalomas (1 - privalomas, 0- neprivalomas, bet jei uzpildytas bus tikrinamas) 
 * min_num - kokia maziausia reiksme , default 0 
 * max_num - kokia didziausia reiksme, default 1000000000
 * error_text -  klaidos tekstas kuris bus rodomas vartotojui, nera butinas nes yra default
 *pl_min_check - jeigu lygus 1 tai leidiza pries sakiciu ivesti + arba - zenklus.Jei reikia minuso tai min reiksme reikia nurodyti 
 * sep_man_num - kiek po kablelio gali buti skaiciu
 *kokia  norima kad butu ne nulis
 * paskirtis: Tikrina ar yra ivedami simboliai sutampa su leidziamais.
 * Formatas: 10.100 arba 10, -100, +100.00
 *****************************************************************************/
function VDCheckDecimal(field_id, show_error_text, is_required, min_num, max_num, error_text, pl_min_check, sep_max_num) {
    var field_value = document.getElementById(field_id).value; 

    if (sep_max_num == undefined)
        sep_max_num = 3;
    else
        sep_max_num = parseInt(sep_max_num);;

    field_value = replaceChar (field_value, ",", ".");
    //alert( field_value);
    //ssdsd
//  field_value = field_value.replaceAll ()
    
    field_value = field_value.replace(',','.');
    if(min_num == undefined || min_num == '')
        min_num = 0;
    if(max_num == undefined || max_num == '')
        max_num = 1000000000;
//    if(field_value.substring(0, 1) == '+')
    field_value = parseInt(field_value);
    if(field_value < min_num) {
        vd_special_error = 1;
        add_special_text += vd_error_decimal_min + min_num;
    }
    if(max_num < field_value) {
        vd_special_error = 1;
        add_special_text += vd_error_decimal_max + max_num;
    }
    if(pl_min_check == 1)
        pl_min_check = '([+-])?';
    else 
        pl_min_check = '';
    //var regexp = /^\d{1,10}(\.?(\d)){0,3}$/;
    var regexp = new RegExp('^'+pl_min_check+'\\d{1,10}(\\.?(\\d)){0,'+sep_max_num+'}$');
    return VDReturnValue(regexp, field_id, show_error_text, 'decimal', is_required, error_text);
}

/******************************************************************************
 * function:  VDCheckIsFieldChecked
 * author: tmv
 * date: 2004.05.13
 * parameters: 
 * field_id - formos fieldo id 
 * show_error_text -  erroro tekstas
 * is_required - ar laukelis yra privalomas (1 - privalomas, 0- neprivalomas, bet jei uzpildytas bus tikrinamas) 
 * error_text -  klaidos tekstas kuris bus rodomas vartotojui, nera butinas nes yra default  
 * paskirtis: Tikrina ar checbox arba radio yra pazymeti.
 * Formatas:
 *****************************************************************************/
function VDCheckIsFieldChecked(field_id, show_error_text, is_required, error_text) {
    var return_text = '';
    var vd_obj = document.getElementById(field_id);
    if(vd_obj.checked == false) {
       VDMarkField(vd_obj, 2, 'checkbox');
       return_text = VDFieldTypeErrorText('checkbox');
    }
    else 
        VDMarkField(vd_obj, 3, 'checkbox');
    return return_text;
    //return VDReturnValue(regexp, field_id, show_error_text, 'decimal', is_required, error_text);
}

/******************************************************************************
 * function:  VDCheckEmpty
 * author: tmv
 * date: 2004.05.13
 * parameters: 
 * field_id - formos fieldo id 
 * show_error_text -  erroro tekstas
 * is_required - ar laukelis yra privalomas (1 - privalomas, 0- neprivalomas, bet jei uzpildytas bus tikrinamas) 
 * error_text -  klaidos tekstas kuris bus rodomas vartotojui, nera butinas nes yra default  
 * paskirtis: Tikrina ar fieldas nera tuscias.O gali rasyti bet ka isskyrus tarpus 
 * Formatas: F7654#$%#$%^#^$%^  :) 
 *****************************************************************************/
function VDCheckEmpty(field_id, show_error_text, is_required, error_text) {
    var regexp = /.+/;
    return VDReturnValue(regexp, field_id, show_error_text, 'empty', is_required, error_text);
}

/******************************************************************************
 * function:  VDCheckInteger
 * author: tmv
 * date: 2004.05.13
 * parameters: 
 * field_id - formos fieldo id 
 * show_error_text -  erroro tekstas
 * is_required - ar laukelis yra privalomas (1 - privalomas, 0- neprivalomas, bet jei uzpildytas bus tikrinamas) 
 * error_text -  klaidos tekstas kuris bus rodomas vartotojui, nera butinas nes yra default  
 * paskirtis: Tikrina ar irasytas sveikas skaicius
 * Formatas: 10, 10000. 
 *****************************************************************************/
function VDCheckInteger(field_id, show_error_text, is_required, error_text) {
    var regexp = /^\d+$/;
    return VDReturnValue(regexp, field_id, show_error_text, 'integer', is_required, error_text);
}

/******************************************************************************
 * function:  VDCheckSearch
 * author: tmv
 * date: 2004.05.13
 * parameters: 
 * fields_array - masyvas fieldu kuriuos reikia patikrinti
 * error_text -  klaidos tekstas kuris bus rodomas vartotojui, nera butinas nes yra default  
 * paskirtis: Tikrina ar yra uzpildytas nors vienas paieskos kriterijus
 * Formatas: jeigu nors vienas yra uzpildytas grazina true, tai yra viskas teisingai
 *****************************************************************************/
function VDCheckSearch(fields_array, error_text) {
    var VD_search_obj = document.getElementById;
    var VD_search_counter = 0;
    var VD_search_fields_cnt = fields_array.length;
    for(i=0;i<VD_search_fields_cnt;i++) {
        //alert(VD_search_obj(fields_array[i]).value);
        //alert(VD_search_obj(fields_array[i]).value);
        if(VD_search_obj(fields_array[i]) != null && VD_search_obj(fields_array[i]).value.trim() == '')
            VD_search_counter++;
    }
    //alert(VD_search_fields_cnt+' == '+VD_search_counter);
    if(VD_search_fields_cnt == VD_search_counter) {
        if(error_text != '' && error_text != undefined)
            vd_error_field_search = error_text;
        alert(vd_error_field_search);
        return false; 
    }
    else 
        return true;
}

//end validator functions

//others functions 

function VDFieldTypeErrorText(field_info_type, show_error_text, field_text) {
	var error = '';
    //alert(field_info_type);
    switch(field_info_type) {
        case 'date':
            //alert(show_error_text);
            if(show_error_text.indexOf(vd_error_date) == -1 || field_text == 1)     //kad nepranesinetu 2 vienodu klaidu pranesimu 
                error = vd_error_date + add_special_text;
    	break;
        case 'time':
            if(show_error_text.indexOf(vd_error_time) == -1 || field_text == 1)       
                error = vd_error_time + add_special_text;
    	break;
        case 'email':
            if(show_error_text.indexOf(vd_error_email) == -1 || field_text == 1)       
                error = vd_error_email;
    	break;        
        case 'name':
            if(show_error_text.indexOf(vd_error_name) == -1 || field_text == 1)       
                error = vd_error_name;
    	break;
        case 'full_name':
            if(show_error_text.indexOf(vd_error_full_name) == -1 || field_text == 1)       
                error = vd_error_full_name;
    	break;
        case 'full_name_upper':
            if(show_error_text.indexOf(vd_error_full_name) == -1 || field_text == 1)       
                error = vd_error_full_name_upper;
    	break;
        case 'phone':
            if(show_error_text.indexOf(vd_error_phone) == -1 || field_text == 1)       
                error = vd_error_phone;
    	break;
        case 'url':
            if(show_error_text.indexOf(vd_error_url) == -1 || field_text == 1)       
                error = vd_error_url;
    	break;
        case 'letters':
            if(show_error_text.indexOf(vd_error_letters) == -1 || field_text == 1)       
                error = vd_error_letters + add_special_text;
    	break;
        case 'numbers':
            if(show_error_text.indexOf(vd_error_numbers) == -1 || field_text == 1)       
                error = vd_error_numbers + add_special_text;
    	break;
        case 'letters_numbers_etc':
            if(show_error_text.indexOf(vd_error_letters_numbers_etc) == -1 || field_text == 1)       
                error = vd_error_letters_numbers_etc + add_special_text;
    	break;
        case 'decimal':
            if(show_error_text.indexOf(vd_error_decimal) == -1 || field_text == 1) {      
                  //          alert(' 1 : '+vd_error_decimal);
                error = vd_error_decimal + add_special_text;
        }
    	break;
        case 'checkbox':
            if(show_error_text.indexOf(vd_error_checbox) == -1 || field_text == 1)       
                error = vd_error_checbox;
    	break;
        case 'empty':
            //alert(vd_error_field_empty);
            if(show_error_text.indexOf(vd_error_field_empty) == -1 || field_text == 1)       
                error = vd_error_field_empty;
    	break;
        case 'integer':
            if(show_error_text.indexOf(vd_error_field_integer) == -1 || field_text == 1)       
                error = vd_error_field_integer;
        break;

    }
    return error;
}

function VDMarkField(field_obj, status, info_type, show_error_text) {
    switch (status) {
        case 0:
            field_obj.removeAttribute('title');
            field_obj.style.borderColor = '';
            field_obj.style.borderWidth = '';
            if(field_obj.getAttribute('type') == 'select-multiple' || field_obj.getAttribute('type') == 'select')
                field_obj.style.backgroundColor = '';
        break;
        case 1:
//alert(  info_type);
            field_obj.setAttribute('title', VDFieldTypeErrorText(info_type, show_error_text, 1));
            field_obj.style.borderColor = 'red';
            field_obj.style.borderWidth = '1px';
            if(field_obj.getAttribute('type') == 'select-multiple' || field_obj.getAttribute('type') == 'select')
                field_obj.style.backgroundColor = 'red';
        break;
        case 2:
            field_obj.setAttribute('title', VDFieldTypeErrorText(info_type, show_error_text, 1));
            field_obj.style.backgroundColor = 'red';
        break;
        case 3:
            field_obj.removeAttribute('title');
            field_obj.style.backgroundColor = '';
        break;
    }
    add_special_text = '';
    vd_special_error = 0;
}

function VDReturnValue(check_regexp, field_id, show_error_text, info_type, is_required, error_text) {
    var field_object = document.getElementById(field_id); 
    if (!field_object)
        return false;
    var field_value = replaceChar(field_object.value, ",", ".");
    var return_text = '';
    //jeigu fieldas yra privalomas arba jeigu fieldas nera privalomas bet yra uzpildytas 
    if(is_required == 1 || ((is_required == undefined || is_required == 0) && field_value.trim() != '')) {
        field_value = field_value.trim();
        //alert(check_regexp +' | '+info_type);
        if(!check_regexp.test(field_value) || vd_special_error == 1) {
          //alert(  info_type);
            if(error_text == undefined || error_text == '')
                return_text = VDErrorText(field_value, info_type, show_error_text);
            else
                return_text = error_text;
            //alert(  info_type);
            VDMarkField(field_object, 1, info_type, show_error_text);
        }
        else
           VDMarkField(field_object, 0, info_type, show_error_text);
    }
    else if(((is_required == undefined || is_required == 0) && field_value.trim() == '')) { //jeigu fieldas nera privalomas ir 
    //tuscias tai panaikinam raudonus borderius arba raudona fona 
        VDMarkField(field_object, 0, info_type, show_error_text);
    }
    if(return_text.trim() != '')
        return_text = return_text + "\n";
    return return_text;
}

function VDErrorText(string, info_type, show_error_text) {
    var val_error_msg = '';
    //if(string.replace(/ /g, '') != '') {
    if(string.trim() != '') {
        //alert('1 : '+show_error_text);
        val_error_msg = VDFieldTypeErrorText(info_type, show_error_text);
    }
    else {
        if(show_error_text.indexOf(vd_error_empty) == -1)                                 
         	val_error_msg += vd_error_empty;
    }
    return val_error_msg; 
}
