﻿function checkType(value,type)
{
    var result = true;
    var T = type.toString().toLowerCase();
    
    if (value == "")
        result = false;
    else if (T == "int" || T == "sint" || T == "float")
        result = isNumber(value, type);
    else if (T == "date" || T == "time")
        result = isDateTime(value, type);
    else if (T == "string")
        result = true
    
    return result;
}

function isNumber(value,type)
{
    var result = true;
    var V = value.toString();
    var T = type.toString().toLowerCase();
    var temp;
    
    if (T == "int")
    {
        temp = isInt(V,0);
        if (temp != V.length)
            result = false;
    }
    else if (T == "sint")
    {
        temp = 0;
        if (V.charCodeAt(temp) == 43 || V.charCodeAt(temp) == 45)
            ++temp;
        if (isDigit(V.charAt(temp)))
        {
            temp = isInt(V,temp);
            if (temp != V.length)
                result = false;
        }
        else
            result = false;
    }
    else if (T == "float")
    {
        temp = 0;
        if (V.charCodeAt(temp) == 43 || V.charCodeAt(temp) == 45)
            ++temp;
        if (isDigit(V.charAt(temp)))
        {
            temp = isInt(V,temp);
            if (temp != V.length)
            {
                if (V.charCodeAt(temp) == 46)
                {
                    temp = isInt(V,temp + 1);
                    if (temp != V.length)
                        result = false;
                }
                else
                    result = false;
            }   
            else
                result = true;
        }
        else
            result = false;
    }
    
    return result;
}

function isDateTime(value,type)
{
    var result = true;
    var V = value.toString();
    var T = type.toString().toLowerCase();
    var temp, temp2;
    
    if (T == "date")
    {
        if (V.length == 10)
        {
            if (isDigit(V.charAt(0)) && isDigit(V.charAt(1)) &&
                isDigit(V.charAt(2)) && isDigit(V.charAt(3)) &&
                isDigit(V.charAt(5)) && isDigit(V.charAt(6)) &&
                isDigit(V.charAt(8)) && isDigit(V.charAt(9)) &&
                V.charCodeAt(4) == 47 && V.charCodeAt(7) == 47)
            {
                temp = V.charAt(5) + "" + V.charAt(6);
                temp2 = V.charAt(8) + "" + V.charAt(9);
                if (1 <= parseInt(temp) && parseInt(temp) <= 12 && 
                    1 <= parseInt(temp2) && parseInt(temp2) <= 31 )
                {
                }
                else
                    result = false;
            }
            else
                result = false;
        }
        else
            result = false;
    }
    else if (T == "time")
    {
        if (V.length == 5)
        {
            if (isDigit(V.charAt(0)) && isDigit(V.charAt(1)) &&
                isDigit(V.charAt(3)) && isDigit(V.charAt(4)) &&
                V.charCodeAt(2) == 58)
            {
                temp = V.charAt(0) + "" + V.charAt(1);
                temp2 = V.charAt(3) + "" + V.charAt(4);
                if (1 <= parseInt(temp) && parseInt(temp) <= 24 && 
                    1 <= parseInt(temp2) && parseInt(temp2) <= 59 )
                {
                }
                else
                    result = false;
            }
            else
                result = false;
        }
        else
            result = false;
    }
    
    return result;
}

function isInt(value,index,finalCode)
{
    var V = value.toString();
    var go = true;
    
    while (index < V.length && go)
    {
        if ( isDigit(V.charAt(index)) && V.charAt(index) != finalCode)
            ++index;
        else
            go = false;
    }
    
    return index;
}

function isDigit(ch)
{
    if (48 <= ch.toString().charCodeAt(0) && ch.toString().charCodeAt(0) <= 57)
        return true;
    else
        return false;
}