function doslice(arg, idx) {
    var ret = Array();
    for (var i = idx; i < arg.length; i++) {
        ret.push(arg[i]);
    }
    return ret;
}

function Check(theForm, what, regexp, indices) {
    for (var i = 0; i < indices.length; i++) {
        var el = theForm.elements[indices[i]];
        if (el.value == "") continue;
        var avalue = el.value;
        if (!regexp.test(avalue)) {
            alert("Unos nije ispravan " + what);
            el.style.border = "1px solid #FF0000";
            el.focus();
            return false;
        }
    }
    return true;
}

function CheckEmail(theForm) {
    var regexp = /^[0-9a-z\.\-_]+@[0-9a-z\-\_]+\..+$/i;    
    return Check(theForm, "email", regexp, doslice(arguments, 1));
}

function CheckURL(theForm) {
    var regexp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;
    return Check(theForm, "URL", regexp, doslice(arguments, 1));
}

function CheckAlpha(theForm) {
    var regexp = /^[a-z]*$/i;
    return Check(theForm, "alpha value", regexp, doslice(arguments, 1));
}

function CheckAlphaNum(theForm) {
    var regexp = /^[a-z0-9]*$/i;
    return Check(theForm, "alphanumeric value", regexp, doslice(arguments, 1));
}

function CheckSelect(theForm) {
    for (var i = 1; i < arguments.length; i++) {
        var el = theForm.elements[arguments[i]];
        if (el == null) continue;
        for (var j = 1; j < el.options.length; j++) {
            if (el.options[j].value == "NewItem" && el.options[j].selected)
            {
                alert("Odabir nije dozvoljen.");
                el.style.border = "1px solid #FF0000";
                el.focus();
                return false;
            }
        }
    }
    return true;
}

function CheckNumeric(theForm) {
    for (var i = 1; i < arguments.length; i++) {
        var el = theForm.elements[arguments[i]];        
        if (el.value==null || el.value=="") continue;
        var avalue = parseInt(el.value);
        if (isNaN(avalue)) {
            alert("U polje: " + el.name + " unešen je netočan cijeli broj.");
            el.style.border = "1px solid #FF0000";
            el.focus();
            return false;
        }
    }
    return true;
}

function CheckFloat(theForm) {
    for (var i = 1; i < arguments.length; i++) {
        var el = theForm.elements[arguments[i]];
        if (el.value == "") continue;
        var avalue = parseFloat(el.value);
        if (isNaN(avalue)) {
            alert("U polje: " + el.name + " unešen je netočan decimalan broj");
            el.style.border = "1px solid #FF0000";
            el.focus();
            return false;
        }
    }
    return true;
}

function CheckDate(theForm) {
    for (var i = 1; i < arguments.length; i++) {
        var el = theForm.elements[arguments[i]];
        if (el.value == "") continue;
        var avalue = el.value;
        if (isNaN(Date.parse(avalue))) {
            alert("U polje: " + el.name + " unešen je krivi datum.");
            el.style.border = "1px solid #FF0000";
            el.focus();
            return false;
        }
    }
    return true;
}

function CheckTime(theForm) {
    var regexp = /^[0-9]+:[0-9]+:[0-9]+/i;    
    if (!Check(theForm, "time", regexp,  doslice(arguments, 1)))
        return false;                 
    for (var i = 1; i < arguments.length; i++) {
        var el = theForm.elements[arguments[i]];
        if (el.value == "") continue;
        var avalue = el.value;
        if (isNaN(Date.parse("1/1/1970 " + avalue))) {
            alert("U polje: " + el.name + " je unešeno krivo vrijeme.");
            el.style.border = "1px solid #FF0000";
            el.focus();
            return false;
        }
    }
    return true;
}

function CheckRequiredFields(theForm) {    
    for (var i = 1; i < arguments.length; i++) {        
        var el = theForm.elements[arguments[i]];
        if (el.value=="") {
            alert("Polje: " + el.name + " ne može biti prazno.");
            el.style.border = "1px solid #FF0000";
            el.focus();
            return false;
        }
    }
    return true;
}
