﻿//JS functions for Form Fields Validation

//elems: array içersindeki kontrol edilecek elemaların id listesi
//msg  : kontrol edilen elemanlara ait hata mesajı
//type : =1 Textbox ; =2 Dropdown;=3 Radio Button
function requiredValidator(elems,msg,type)
{
    var i;
    var showError=true;
    var elem;            
    for (i=0;i<elems.length;i++)
    {        
        elem=document.getElementById(elems[i]);          
        if (type==1)
        {      
            if (elem.value.trim()!='')
            {
                showError=false;                
                break;
            }
        }
        else if (type==2)
        {
            if (elem.selectedIndex>0)
            {
                showError=false;                
                break;
            }
        }
        else if (type==3)
        {   
            if (elem.checked)
            {
                showError=false;                
                break;
            }
        }
    }
    if (showError)
    { 
        msg=msg+"\n";
        return msg;  
    }        
    else return '';
}

function intVal(elem,mn,mx,msg)
{
    var r="";
    var field = document.getElementById(elem);
    
    if (field.value.length>0)
    {
        if (mn>parseInt(field.value))r=msg+'\n';
        if (parseInt(field.value)>mx)r=msg+'\n';
    }
    return r;
}

function compareValidator(e1,e2,msg) 
{
    var r="";
    e1=document.getElementById(e1);
    e2=document.getElementById(e2);
    
    if (e1.value.length>0 || e2.value.length>0)   
    {
        if (e1.value!=e2.value)r=msg+'\n';
    }
    return r;
}

function textCounter(field,cntfield,maxlimit) {    
    if (field.value.length > maxlimit) field.value = field.value.substring(0, maxlimit); 
    else 
    {
        if (cntfield.type=='text')cntfield.value = maxlimit - field.value.length;
        else cntfield.innerHTML = maxlimit - field.value.length;
    }
}

function checkEmail(e,msg)
{
    var r="";        
    var emailfilter=/^\w+[\+\.\w-]*@([\w-]+\.)*\w+[\w-]*\.([a-z]{2,4}|\d+)$/i;
    e=document.getElementById(e).value;
    if (e.length>0)
    {
        var returnval=emailfilter.test(e);
        if (returnval==false)r=msg+"\n";
    }
    return r;
}

function checkEmailString(e,msg)
{
    var r="";        
    var emailfilter=/^\w+[\+\.\w-]*@([\w-]+\.)*\w+[\w-]*\.([a-z]{2,4}|\d+)$/i;
    if (e.length>0)
    {
        var returnval=emailfilter.test(e);
        if (returnval==false)r=msg+"\n";
    }
    return r;
}


var digits = "0123456789";
var phoneNumberDelimiters = "()- ";
var validWorldPhoneChars = phoneNumberDelimiters + "+";
var minDigitsInIPhoneNumber = 10;

var minDigitsInAreaCode = 3;
var minDigitsInPhoneNumber = 7;

function isInteger(s)
{   var i;
    for (i = 0; i < s.length; i++)
    {           
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }    
    return true;
}

function stripCharsInBag(s, bag)
{   var i;
    var returnString = "";
    for (i = 0; i < s.length; i++)
    {   
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function checkPhoneNumberBool(strPhone)
{
    s=stripCharsInBag(strPhone,validWorldPhoneChars);
    return (isInteger(s) && s.length == minDigitsInPhoneNumber);
}

function checkPhoneNumber(e,msg)
{
    var res;
    var r="";
    e=document.getElementById(e).value;
    if (e.length>0)
    {
        res=checkPhoneNumberBool(e);
        if (!res)r=msg+"\n"
    }
    return r;
}

function checkAreaCodeBool(strAreaCode)
{
    s=stripCharsInBag(strAreaCode,validWorldPhoneChars);
    return (isInteger(s) && s.length == minDigitsInAreaCode);
}

function checkAreaCode(e,msg)
{
    var res;
    var r="";
    e=document.getElementById(e).value;
    if (e.length>0)
    {
        res=checkAreaCodeBool(e);
        if (!res)r=msg+"\n"
    }
    return r;
}

function checkPassword(e,msg)
{
    var r="";        
    //en az 6 char min 1 harf ve 1 sayi icermeli
    var passwordfilter = /^(.{0,}(([a-zA-Z][^a-zA-Z])|([^a-zA-Z][a-zA-Z])).{4,})|(.{1,}(([a-zA-Z][^a-zA-Z])|([^a-zA-Z][a-zA-Z])).{3,})|(.{2,}(([a-zA-Z][^a-zA-Z])|([^a-zA-Z][a-zA-Z])).{2,})|(.{3,}(([a-zA-Z][^a-zA-Z])|([^a-zA-Z][a-zA-Z])).{1,})|(.{4,}(([a-zA-Z][^a-zA-Z])|([^a-zA-Z][a-zA-Z])).{0,})$/;
   
    e=document.getElementById(e).value;
    if (e.length>0)
    {
        var returnval=passwordfilter.test(e);
        if (returnval==false)r=msg+"\n";
    }
    return r;
}

//function checkAracFiyatBool(strFiyat)
//{
//    return (isInteger(strFiyat) && (strFiyat >= 1000 && strFiyat <= 999999)  );
//}

//function checkAracFiyat(e,msg)
//{
//    var res;
//    var r="";
//    e=document.getElementById(e).value;
//    if (e.length>0)
//    {
//        res=checkAracFiyatBool(e);
//        if (!res)r=msg+"\n"
//    }
//    return r;
//}

function checkSelectionWithOtherTextbox(e,digertext,digercheck,msg)
{
    // select ve ilişkili textbox validasyonu
    // kişi select boxtan bişi seçmeli...
    // seçmedi ise check boxa bakılmalı, işaretli ise textbox a bişi yazılmış olmalı
    // bunlar sağlanmıyor ise hata var demektir.

    // e - select
    // digertext - diger metnin yazilacagi textbox
    // digercheck - diger metin yazilacak mi kontrolu checkbox
    // msg - mesaj sablonu icinde goruntulenmesi istenen kelime

    // kullanim 
    // m+=checkSelectionWithOtherTextbox('MarkaId','MarkaDiger','MarkaDigerCheck','Marka');

    
    var r="";

    e=document.getElementById(e);
    digertext = document.getElementById(digertext).value;
    digercheck = document.getElementById(digercheck);

    if( e.selectedIndex == 0 ) // selectten bisi secilmemis
    {
        if( digercheck.checked ) // diger checkbox secilmis
        {
            if(digertext.length==0) // isaretli ama text girilmemis...
            {
                r = "Diğer " + msg + " bölümüne " + msg + " yazınız\n"
            }
        }
        else
        { // selecten bisi secilmemisken diger checkbox da isaretlenmemis...
            r = "Bir " + msg + " seçiniz ya da Diğer " + msg + " bölümüne " + msg + " yazınız\n"
        }
    }

    return r;
}
