function isEmailAddr(email) {
    var result = false;
    var theStr = new String(email);
    var index = theStr.indexOf("@");
    if (index > 0) {
        var pindex = theStr.indexOf(".",index);
        if ((pindex > index+1) && (theStr.length > pindex+1))
        result = true;
    }
    return result;
}

function validRequired(formField,fieldLabel) {
    var result = true;
    
    if (formField.value == "") {
        alert('Enter value for field "' + fieldLabel +'".');
        formField.focus();
        result = false;
    }
    return result;
}

function allDigits(str) {
    return inValidCharSet(str,"0123456789");
}

function inValidCharSet(str,charset) {
    var result = true;
    
    // Note: doesn't use regular expressions to avoid early Mac browser bugs
    for (var i=0;i<str.length;i++)
    if (charset.indexOf(str.substr(i,1))<0) {
        result = false;
        break;
    }
    return result;
}

function validEmail(formField,fieldLabel,required) {
    var result = true;
    
    if (required && !validRequired(formField,fieldLabel))
        result = false;
    
    if (result && ((formField.value.length < 3) || !isEmailAddr(formField.value)) ) {
        alert("Prosím zadajte validnú emailovú adresu v tvare napr.: vasemeno@vasadomena.sk");
        formField.focus();
        result = false;
    }

    return result;
}

function validNum(formField,fieldLabel,required) {
    var result = true;
    
    if (required && !validRequired(formField,fieldLabel))
        result = false;
    
    if (result) {
        if (!allDigits(formField.value)) {
            alert('Prosím zadajte korektnú číselnú hodnotu pre pole "' + fieldLabel +'"');
            formField.focus();
            result = false;
        }
    }
   
    return result;
}


function validInt(formField,fieldLabel,required) {
    var result = true;
    
    if (required && !validRequired(formField,fieldLabel)) {
        result = false;
    }

    if (result && formField.value) {
    
        var num = parseInt(formField.value);
        if (isNaN(num)) {
            alert('Please enter number in valid format "' + fieldLabel +'"');
            formField.focus();
            result = false;
        }
    }
    
    return result;
}

function validDateTimeRange(formField1,formField2,fieldLabel) {
    var result = true;

    if (formField1.value && formField2.value) {
        date1 = new Date(formField1.value);
        date2 = new Date(formField2.value);
        if (date1>date2) {
            alert(fieldLabel +'" !');
            formField1.focus();
            result = false;
        }
    }
    return result;

}


function validDateTime(formField,fieldLabel,required) {
    var result = true;

    if (required && !validRequired(formField,fieldLabel)) {
        result = false;
    }

    if (result && formField.value) {
        var elems = formField.value.split(" ");

        datum = elems[0];
        time = elems[1];


        var elems = datum.split("/");
        result = (elems.length == 3); // should be three components

        if (result) {

            var month = elems[0];
            var day = elems[1];
            var year = elems[2];

            result = allDigits(elems[0]) && (month > 0) && (month < 13) &&
            allDigits(elems[1]) && (day > 0) && (day < 32) &&
            allDigits(elems[2]) && ((year.length == 2) || (year.length == 4));
        }

        if (!result) {
            alert('Please enter date in valid format MM/DD/YYYY for field "' + fieldLabel +'" !');
            formField.focus();
        }


    return result;
    
    }

}

function validDate(formField,fieldLabel,required) {
    var result = true;

    if (required && !validRequired(formField,fieldLabel)) {
        result = false;
    }

    if (result && formField.value) {
        var elems = formField.value.split("/");
        result = (elems.length == 3); // should be three components

        if (result) {

            var month = elems[0];
            var day = elems[1];
            var year = elems[2];

            result = allDigits(elems[0]) && (month > 0) && (month < 13) &&
            allDigits(elems[1]) && (day > 0) && (day < 32) &&
            allDigits(elems[2]) && ((year.length == 2) || (year.length == 4));
        }

        if (!result) {
            alert('Please enter date in valid format MM/DD/YYYY for field "' + fieldLabel +'" !');
            formField.focus();
        }
    }

    return result;
}

function validShortDate(formField,fieldLabel,required)
{
    var result = true;

    if (required && !validRequired(formField,fieldLabel))
    result = false;

    if (result) {
        var elems = formField.value.split("/");
        result = (elems.length == 2); // should be three components
        
        if (result) {
            var month = elems[0];
            var year = elems[1];
            result = allDigits(elems[0]) && (month > 0) && (month < 13) &&
            allDigits(elems[1]) &&  (elems[1].length == 4);
        }
        
        if (!result)
        {
            alert('Prosím zadajte dátum vo formáte MM/RRRR pre pole ' + fieldLabel);
            formField.focus();
        }
    }

    return result;
}


function validHighDate(formField,formFielda,fieldLabel,fieldLabela)
{
    var result = true;
	var resulta = true;
	
        if (result)
        {
		var elems = formField.value.split("/");
                result = (elems.length == 2); // should be two components

                var elemsa = formFielda.value.split("/");
                resulta = (elemsa.length == 2); // should be two components

                if (result && resulta)
                {
                        var month = elems[0];
                        var year = elems[1];
			var montha = elemsa[0];
			var yeara = elemsa[1];
                        result = allDigits(elems[0]) && (month > 0) && (month < 13) &&
                        allDigits(elems[1]) &&  (elems[1].length == 4);
                        resulta = allDigits(elemsa[0]) && (montha > 0) && (montha < 13) &&
                        allDigits(elemsa[1]) &&  (elemsa[1].length == 4);
		}
		
		

                if (!result)
                {
                        alert('Dátum musí byt vo formáte MM/RRRR pre pole ' + fieldLabel);
                        formField.focus();
			return false;
                }
                if (!resulta)
                {
                        alert('Dátum musí byt vo formáte MM/RRRR pre pole ' + fieldLabela);
                        formFielda.focus();
			return false;
                }
		
		
		if ( year > yeara ) {
		    return true;
		}
		
		if ( yeara == year) {
		    if ( month > montha ) {
			return true;

		    }
		    else {
			alert("Datum " + fieldLabel + " musi byt vyssi ako " + fieldLabela + " !");
			result = false;
		    }
		    
		}
		
		if ( year < yeara ){
		    alert("Datum " + fieldLabel + " musi byt vyssi ako " + fieldLabela + " !");
		    result = false;
		}
		
		
        }

        return result;
}

function validTime(formField,fieldLabel,required) {
    var result = true;

    if (required && !validRequired(formField,fieldLabel))
        result = false;

    if (result) {
        var elems = formField.value.split(":");

        result = (elems.length == 2); // should be three components

        if (result) {
            var hour = parseInt(elems[0]);
            var min = parseInt(elems[1]);
            result = allDigits(elems[0]) && (hour >= 0) && (hour < 24) &&
            allDigits(elems[1]) && (min >= 0) && (min < 60);
        }

        if (!result) {
            alert('Prosím zadajte čas vo formáte HH:MM pre "' + fieldLabel +'" !');
            formField.focus();
        }
    }

    return result;
}






function xxx_validateForm(theForm)
{
        // Customize these calls for your form

        // Start ------->
        if (!validRequired(theForm.fullname,"Name"))
        return false;

        if (!validEmail(theForm.email,"Email Address",true))
        return false;

        if (!validDate(theForm.available,"Date Available",true))
        return false;

        if (!validNum(theForm.yearsexperience,"Years Experience",true))
        return false;
        // <--------- End

        return true;
}
