//FUNCTION GENVALIDATION

function genValidation(Element,MessageLen0,MessageLen4,spl)
 {
    if(MessageLen0.length!=0)  
    {
        if(Element.value == 0)
        {
            alert("Pl. enter the "+MessageLen0);
            Element.focus();
            return false;
        }

        else if(isBlank(Element.value)) 
        {
            alert("Pl. enter the "+MessageLen0);
            Element.focus(); 
            return false;
        }
        else
        {
            return true;
        }

    }

    if(MessageLen4.length != 0) 
    {
        if(Element.value.length < 4)
        {
            alert("Your "+ MessageLen4 + " should not be less than 4 characters ");
            Element.focus(); 
            return false;
        }
    }

    if(spl == "spl")
    {
        if(splCharacters(Element) == 0)
            return 0;
    }
    else if(spl == "space") 
    {
        if(splCharactersSpace(Element) == 0)
            return 0;
    }

}  //CLOSING THE FUNCTION genValidation

//FUNCTION SPLCHARACTERS

function splCharacters(Val)
{

    var alp = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_";

    for(var i=0;i<Val.value.length;i++)
    {
        temp=Val.value.substring(i,i+1);
        if(alp.indexOf(temp) == -1)
        {
            alert("No special characters \nValid entries are [a-z] [A-Z] [0-9] [_]");
            Val.focus();
            return 0;
        }

    } //closing for loop

}  // CLOSING THE FUNCTION splCharacters ()

//FUNCTION splCharactersSpace()

function splCharactersSpace(Val)
{

    var alp = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ";

    for(var i=0;i<Val.value.length;i++)
    {
        temp=Val.value.substring(i,i+1);
        if(alp.indexOf(temp) == -1)
        {
            alert("No special characters \nValid entries are [a-z] [A-Z] [0-9] [ space ]");
            Val.focus();
            return 0;
        }

    } //closing for loop

}  // CLOSING THE FUNCTION splCharactersSpace ()

//FUNCTION SPLNUMBERS()

function splNumbers(Val)
{

    var alp = "0123456789+-";

    for(var i=0;i<Val.value.length;i++)
    {
        temp=Val.value.substring(i,i+1);
        if(alp.indexOf(temp) == -1)
        {
            alert("No special characters \n Valid entries are [+ -] [0-9] ");
            Val.focus();
            return 0;
        }

    } //closing for loop

}  // CLOSING THE FUNCTION SPLNUMBERS()

//FUNCTION ISBLANK()

function isBlank(txt)
{

    if(txt.length == getCountOf(' ',txt))
        return true;
    else
        return false;

}//CLOSING THE FUNCTION  ISBLANK()

//FUNCTION GETCOUNTOF()

function getCountOf(vChar, txt)
{

    var iCount=0;
    for( var i=0; i<txt.length; i++)
    {
        if(txt.charAt(i) == vChar)
            iCount++;
    }
    return iCount;

} //CLOSING THE FUNCTION GETCOUNTOF ()

//function dateValidation(dd,mm,yy,msg)

function dateValidation(dd,mm,yy,msg)
{
    if(numValidation(dd,'Date','','num') == 0)
        return 0;

    if(numValidation(mm,'Month','','num') == 0)
        return 0;

    if(numValidation(yy,'Year','','num') == 0)
        return 0;

    var d=parseInt(dd.value);
    var m=parseInt(mm.value);
    var y=parseInt(yy.value);

    if(d == 0)
    {
        alert("Invalid Date");
        dd.focus();
        return false;
    }

    if(m == 0)
    {
        alert("Invalid Month");
        mm.focus();
        return false;
    }

    if(y == 0)
    {
        alert("Invalid Year");
        yy.focus();
        return 0;
    }

    if(m > 12 || m < 0)
    {
        alert("Invalid Month");
        mm.focus;
        return 0;
    }
    else
    {
        var vDays = [0,31,28,31,30,31,30,31,31,30,31,30,31];
        var flag = 0;
        if(m == 2)
        {
            if( isLeapYear(y) )
            {
                if(d > 29 || d < 1 )
                    flag=0;
                else
                    flag=1;
            }

            else if(d > vDays[m] || d < 1)
                flag=0;

            else
                flag=1;
        }
        else
        {
            if(d > vDays[m] || d < 1)
                flag=0;
            else
                flag=1;
        }
    }

    if(flag == 0)
    {
        if(msg == '')
            alert("Invalid date");
        else
            alert("Pl. enter the valid" + msg);
        dd.focus();
        return false;
    }
    else
        return 1;

} //closing the function date validation

//function numValidation()

function numValidation(Element,MessageLen0,spl,OnlyNum)
{
    if(MessageLen0.length !=0)
    {
        if(isBlank(Element.value) || Element.value.length == 0)
        {
            alert("Pl. enter the "+MessageLen0);
            Element.focus();
            return 0;
        }
    }

    if(OnlyNum == 'num')
    {
        if(isNaN(Element.value))
        {
            alert("Please enter only Numeric Date");
            Element.focus();
            return 0;
        }
        if(parseInt(Element.value) < 0)
        {
            alert("No Negative data");
            Element.focus();
            return 0;
        }
    }
    if(spl == "spl" && OnlyNum != "num")
    {
        if(splNumbers(Element) == 0)
            return 0;
    }
}//closing the function NumValidation()

//function isLeapYear()

function isLeapYear(y)
{
    if(y % 4 == 0)
		return true;
    else
		return false;
}

function passValidation(element1,element2)
{
if(element1.value!=element2.value)
{
alert("retype password does not match");
element2.focus;
return 0;
}
}


function getSelectedIndex(radgroup,msg){
var j=-1;
for(i=0; i< radgroup.length;i++)
{
if(radgroup[i].checked)
{
j=i;
}
}
return j;
}

//FUNCTION EMAIL VALIDATION

function emailValidation(element)
{
flag=1;
count=0;
var alp="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_@.-";

if(element.value.length>0)
{
	for(var i=0;i<element.value.length;i++)
	{
		temp=element.value.substring(i,i+1);
		if(alp.indexOf(temp)==-1)
			flag=0;
	}
}

for(var i=0;i<element.value.length;i++)
{
	if(element.value.charAt(0)=='@')
	{
		flag=0;
		break;
	}

	if(element.value.charAt(element.value.length-1)=='@')
	{
		flag=0;
		break;
	}
	
	if(element.value.charAt(i)=="@")
	{
		count=count+1;
		if(count>1)
		{
			flag=0;
			break;
		}

		if((element.value.charAt(i-1)=='.')||(element.value.charAt(i+1)=='.'))
		{
			flag=0;
			break;
		}
	}	

	if(element.value.indexOf('@')==-1)
	{
		flag=0;
		break;
	}

	if(element.value.charAt(0)=='.')
	{
		flag=0;
		break;
	}
	
	if(element.value.indexOf('.')==-1)
	{
		flag=0;
		break;
	}
}

if(element.value.charAt(element.value.length-1)=='.')
	flag=0;
	
if(flag!=1)
{
	alert("invalid email address\nvalid entries[a-z][A-Z][0-9][_@.-]\ne.g.:umamahesh_a@yahoo.co.in");
	element.focus();
	return 0;
}
}

//closing the FUNCTION EMAILVALIDATION

//FUNCTION SELECTALL CHECKBOXES

function selectAll(frm)
{
    if(frm.selectall.checked == true)
    {
        for(var i=0;i<frm.elements.lengh;i++)
        {
            if((frm.elements[i].type == "checkbox") && (frm.elements[i].name != "selectall"))
            {
                frm.elements[i].checked = true;
            }
        }
    }

    else if(frm.selectall.checked == false)
    {
        for(var i=0;i<frm.elements.lengh;i++)
        {
            if((frm.elements[i].type == "checkbox") && (frm.elements[i].name != "selectall"))
            {
                frm.elements[i].checked = false;
            }
        }
    }
}//CLOSING THE FUNCTION SELECTALL()

// FUNCTION VALIDDATES()

function validDates(dd1,mm1,yyyy1,dd2,mm2,yyyy2,msg)
{
    xFlag=0;

    if((dateValidation(dd1,mm1,yyyy1,'') == 0) || (dateValidation(dd2,mm2,yyyy2,'') == 0))   
        xFlag = 1;

    if(xFlag == 1)
        return 0;

    if(xFlag == 0)
    {
        var ddd1 = new Number(dd1.value);
        var mmm1 = new Number(mm1.value) - 1;
        var yyy1 = new Number(yyyy1.value);

        var ddd2 = new Number(dd2.value);
        var mmm2 = new Number(mm2.value) - 1;
        var yyy2 = new Number(yyyy2.value);

        var dObj1 = new Date(yyy1,mmm1,ddd1,0,0,0,0);
        var dObj2 = new Date(yyy2,mmm2,ddd2,0,0,0,0);

        if(dObj1 > dObj2)
        {
            alert(msg);
            dd1.focus();
            return 0;
        }
    }
    else
        return 1;

} //CLOSING THE FUNCTION VALIDDATES()

//FUNCTION DVAL()

function dval(yyy,mmm,ddd)
{
    
    var dObj = new Date(yyy,mmm,ddd,0,0,0,0);

    var dd = dObj.getDate();
    var mm = dObj.getMonth();
    var yy = dObj.getFullYear();
    if( (dd == ddd) && (mm == mmm) && (mm == mmm) )
        return true;
    else
        return false;

} //CLOSING THE FUNCTION DVAL()

//FUNCTION SELECTVALIDATION()

function selectValidation(element,msg)
{
	if(element.value == "0" )
	{
		alert("Pl. select the option values in "+ msg);
		element.focus();
		return 0;
	}
}
//closing FUNCTION SELECTVALIDATION()

//FUNCTION DATEFIELD() CREATES A DATEFIELD
function dateField(dd,mm,yy,d,m,y)
{
          document.write("<select name="+dd+">")
          for(var i=0;i<=31;i++)
          {
				if(i == 0)
				document.write("<option Value="+i+">"+"Day"+"</option>")
				else if(i==d)
				{
					document.write("<option Value="+i+" selected>"+i+"</option>")
				}
				else
				document.write("<option Value="+i+">"+i+"</option>")

          }
          document.write("</select>")
		  document.write("<select name="+mm+">")
          for(var i=0;i<=12;i++)
          {
				if(i == 0)
				document.write("<option Value="+i+">"+"Month"+"</option>")
				else if(i ==m)
				{
					document.write("<option Value="+i+" selected>"+i+"</option>")
				}
				else
		        document.write("<option Value="+i+">"+i+"</option>")
          }
          document.write("</select>")
          document.write("<select name="+yy+">")
          for(var i=0;i<=2020;i++)
          {
				if(i == 0)
				{
					document.write("<option Value="+i+">"+"Year"+"</option>");
					i=1980;
				}
				else if(i==y)
				{
					document.write("<option Value="+i+" selected>"+i+"</option>")
				}
				else
			    document.write("<option Value="+i+">"+i+"</option>")
          }
          document.write("</select>")
}
//closing function datefield()

//avoid semicolon & single quotes

function validusercheck(value) {
 if(event.keyCode==59 || event.keyCode==39) {
	event.keyCode=0;
}
}

function validSpecialChars(obj)
{
   var oldVal=obj.value;
	if((index=oldVal.indexOf("'"))!=-1 || (index=oldVal.indexOf(";"))!=-1 )
	{
	   var newVal=oldVal.replace(oldVal.substring(index,index+1),'')
	   obj.value=newVal;
	   validSpecialChars(obj);
	}
}
