
function validateSpecialChars(field)
{     
    // declare which special chars to validate
    var illegalChars = "!#$%^&*()+=[]\\\';,/{}|\":<>?";
    var strToSearch = field.value;
    for (var i = 0; i < strToSearch.length; i++)
    {
        //alert(strToSearch.charAt(i));
        //alert(strToSearch.charCodeAt(i));
        if (illegalChars.indexOf(strToSearch.charAt(i)) != -1)
        {
            return false;
        }
    }
    return true;
}

function validateSpecialChars_light(field)
{     
    // declare which special chars to validate
    var illegalChars = "!$%^&*()\\\';,/{}|\"<>?";
    var strToSearch = field.value;
    for (var i = 0; i < strToSearch.length; i++)
    {
        if (illegalChars.indexOf(strToSearch.charAt(i)) != -1)
        {
            return false;
        }
    }
    return true;
}


function fnValidateIPAddress(ipaddr) {
    //Remember, this function will validate only Class C IP.
    //change to other IP Classes as you need
    ipaddr = ipaddr.replace( /\s/g, "") //remove spaces for checking
    var re = /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/; //regex. check for digits and in
    //all 4 quadrants of the IP
    if (re.test(ipaddr)) {
        //split into units with dots "."
        var parts = ipaddr.split(".");
        //if the first unit/quadrant of the IP is zero
        if (parseInt(parseFloat(parts[0])) == 0) {
            return false;
        }
        //if the fourth unit/quadrant of the IP is zero
        if (parseInt(parseFloat(parts[3])) == 0) {
            return false;
        }
        //if any part is greater than 255
        for (var i=0; i<parts.length; i++) {
            if (parseInt(parseFloat(parts[i])) > 255){
                return false;
            }
        }
        return true;
    } else {
        return false;
    }
}

function stripNonPrintingChars(txt)
{
    txt = txt.replace(/[\x00-\x1F]/g, '');
    return txt;
}


function returnValidDomain(domain)
{
    var strToSearch = domain;

    var delim_chars = /[ ;]/gi;
    strToSearch = strToSearch.replace(delim_chars, ",");
  
    delim_chars = /\,{2,10}/gi;
    strToSearch = strToSearch.replace(delim_chars, ",");

    strToSearch = strToSearch.replace(" ","");

    strToSearch = stripNonPrintingChars(strToSearch);

    var domainValue = "";
	
    domainValue = trim11(strToSearch).toLowerCase();
	
    if(domainValue.indexOf("www.")==0 || domainValue.indexOf("http://")==0 || domainValue.indexOf("https://")==0)
    {
        domainValue = domainValue.substring(domainValue.indexOf("www.")+4);
    }
	
    return domainValue;


}

function checkDomainName(domain)
{

    var validDomain = returnValidDomain(trim11(domain));


    var illegalChars = "!#$%^@&*()+=[]\\\';/{}|\":<>?";

    for (var i = 0; i < validDomain.length; i++)
    {
        if (illegalChars.indexOf(validDomain.charAt(i)) != -1)
        {
            return -1;
        }
    }

    if ((validDomain.length==0) || (validDomain==null))
    {
        return -2;
    }


    var domain_parts = validDomain.split(",");

    for(i=0;i<domain_parts.length;i++)
    {
        if(!checkDomainCharacters(domain_parts[i], true))
        {
            return -3;
        }
    }

    return 0;
}




function checkDomain_without_TLD(fieldname)
{     

    var field = document.getElementById(fieldname);
	
    var strToSearch = returnValidDomain(field.value);

    field.value = strToSearch;

    var res = checkDomainName(field.value);

    if(res == -1)
    {
        alert('Τα ονόματα χώρου δεν επιτρέπεται να περιέχουν σύμβολα όπως &#!');
        field.focus();
        field.style.background = '#FFFFCC';
        return false;        
    }
    else if(res == -2)
    {
        alert('Πρέπει να συμπληρώσετε τουλάχιστον ένα όνομα');
        field.focus();
        field.style.background = '#FFFFCC';
        return false;
    }
    else if(res == -3)
    {
        field.focus();
        field.style.background = '#FFFFCC';
        return false;
    }

    return true;

}
	
	

function isEmpty(aTextField)
{

    if ((aTextField.value.length==0) || (aTextField.value==null))
    {
        return true;
    }
    else
    {
        return false;
    }

}	


function isNumeric(field)
{

    if (field.value.match(/^[0-9]+$/))
    {
        return true;
    }
    else
    {
        return false;
    }
   
}

function isEmailAddress(field)
{
    if (field.value.match(/^([a-zA-Z0-9])+([.a-zA-Z0-9_-])*@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-]+)+/))
    {
        field.style.background = '#FFFFFF';
        return true;
    }
    else
    {
        alert("Δώστε μια σωστή διεύθυνση email.");
        field.focus();
        field.style.background = '#FFFFCC';
        return false;
    }
}



function isPhone(field, isReq)
{
    if(!isNumeric(field) && field.value.length > 0)
    {
        alert("To πεδίο πρέπει να περιέχει μόνο νούμερα.");
        field.focus();
        field.style.background = '#FFFFCC';
        return false;
    }

    if(isReq == true && field.value.length <= 0)
    {
        field.focus();
        field.style.background = '#FFFFCC';
        alert("Συμπληρώστε το πεδίο.");
        return false;
    }
	
    if(field.value.length >= 12)
    {
        field.focus();
        field.style.background = '#FFFFCC';
        alert("Συμπληρώστε το πεδίο με το πολύ 12 αριθμούς).");
        return false;
    }
	
    field.style.background = '#FFFFFF';
    return true;
	
	

}



function setSelectedOption(name, value)
{
    var sel = document.getElementById(name);
    for(i=0;i<sel.length;i++)
    {
        val = sel.options[i].value;
        if(val==value)
        {
            sel.selectedIndex=i;
            break;
        }
    }
}



function trim11 (str) {
    str = str.replace(/^\s+/, '');
    for (var i = str.length - 1; i >= 0; i--) {
        if (/\S/.test(str.charAt(i))) {
            str = str.substring(0, i + 1);
            break;
        }
    }
    return str;
}




function checkDomain_with_TLD(fieldname)
{
    var field = document.getElementById(fieldname);

    var nname = returnValidDomain(field.value);

    field.value = nname;

	
    var arr = new Array(
        '.com.gr','.net.gr','.org.gr','.edu.gr','.info.gr','.gr');
	
    var mai = nname;
    var val = true;
	
    var dot = mai.lastIndexOf(".");
    var dname = mai.substring(0,dot);
    var ext = mai.substring(dot,mai.length);

    if(dot == -1)
    {
        alert("το Domain " + nname + " δεν είναι έγκυρο, πρέπει να ορίσετε μια κατάληξη (.com.gr, .net.gr, .org.gr, .edu.gr, .info.gr, .gr)");
        field.focus();
        field.style.background = '#FFFFCC';
        return false;
    }
		
    if(dot>2 && dot<57)
    {
        for(var i=0; i<arr.length; i++)
        {
            if(ext == arr[i])
            {
                val = true;
                break;
            }
            else
            {
                val = false;
            }
        }
        if(val == false)
        {
            alert("Η κατάληξη του domain "+ext+" δεν είναι σωστή");
            field.focus();
            field.style.background = '#FFFFCC';
            return false;
        }
        else
        {

            if(!checkDomainCharacters(dname, false))
            {
                field.focus();
                field.style.background = '#FFFFCC';
                return false;
            }

        }
    }
    else
    {
        alert("To Domain είνα πολύ μικρό ή μεγάλο");
        field.focus();
        field.style.background = '#FFFFCC';
        return false;
    }
	
    return true;
}






function checkDomainCharacters(dname, comma_separate)
{
    var latin = false;
    var greek = false;
	
	
    for(var j=0; j<dname.length; j++)
    {
        var dh = dname.charAt(j);
	  
        var hh = dh.charCodeAt(0);
        //alert(hh);
	  
        if((hh > 47 && hh<58))
        {
        //Do nothing
        }
        else if((hh > 64 && hh<91) || (hh > 96 && hh<123))// || hh==45 || hh==46)
        {
            latin = true;
        }
        else if(hh==902 || hh==904 || hh==905 || hh==908 || hh==943 || (hh >= 910 && hh <= 942) || (hh >= 944 && hh <= 974))// || hh==45 || hh==46)
        {
            greek = true;
 
        }
        else if(hh==45 && (j==0 || j==dname.length-1))
        {
            alert("To Domain name δεν πρέπει να τελειώνει σε '-'");
            return false;
        }
        else if(hh==46 || hh==45)
        {
        // Do nothing
        }
        else if(comma_separate == true && (hh==44 || hh==32))
        {
        // Do nothing
        }
        else
        {
            //alert(hh);
            alert("To Domain name δεν πρέπει να περιέχει ειδικούς χαρακτήρες.");
            return false;
        }
    /////////////////////////////
    /////////////////////////////
    }
    if(latin == true && greek == true)
    {
        alert("To Domain name δεν μπορεί να περιέχει και Ελληνικούς και Λατινικούς χαρακτήρες ταυτόχρονα.");
        return false;
    }
	
    return true;
	
}
