/**
* This File Contains The Javascript Functions Nedded For Input Feedback Pattern
* The Pattern Performs Validation According To Following Algorithm:
* START
* 1. Validate Presence Of Content
* 2. Validate Type Of Content
* 3. Validate Confirmation
* END
*
* The Fields Should Have IDs As Follow:
* First Name : fname
* First Name Error Will Be Shown In A <Div> with id 'fname_msg' adjacent to input field
*/



/**
* Function validate_form()
* @The Function Performs Execution Of The Input Feedback Algorithm By Making Use Of subfunctions
*/
function validate_form()
{
    //Validate presence of content

     if(presence())
     {

        //validate type
        if(check_type())
         {
           return true;
         }
         return false;
     }
     return false;

}

//Presence Of Content

/**
* @The Function Checks For The Presence Of Data In The Form Fields & Performs Error Reporting.
*/
function presence()
{

    var flag = 0;
    if(document.getElementById('title').value == '')
    {
        document.getElementById('title_msg').innerHTML = '';
        document.getElementById('title_msg').appendChild( make_msg('Ensure You Specified Title') );
          flag = 1;
    }
    else
    {
        document.getElementById('title_msg').innerHTML = '';
        document.getElementById('title_msg').appendChild( make_green_msg('Title Specified!') );
    }
    if(document.getElementById('fname').value == '')
    {
        document.getElementById('fname_msg').innerHTML = '';
        document.getElementById('fname_msg').appendChild( make_msg('Ensure You Specified Your First Name') );
          flag = 1;
    }
    else
    {
        document.getElementById('fname_msg').innerHTML = '';
        document.getElementById('fname_msg').appendChild( make_green_msg('Proper First Name!') );
    }

    if(document.getElementById('lname').value == '')
    {
        document.getElementById('lname_msg').innerHTML = '';
        document.getElementById('lname_msg').appendChild(make_msg('Ensure You Specified Your Last Name') );
        flag = 1;
    }
    else
    {
        document.getElementById('lname_msg').innerHTML = '';
        document.getElementById('lname_msg').appendChild( make_green_msg('Proper Last Name!') );
    }

    if(document.getElementById('email').value == '')
    {
        document.getElementById('email_msg').innerHTML = '';
        document.getElementById('email_msg').appendChild(make_msg('Ensure You Specified Your Email ID'));
        flag = 1;
    }
    if(document.getElementById('education').value == '')
    {
        document.getElementById('education_msg').innerHTML = '';
        document.getElementById('education_msg').appendChild( make_msg('Specify your educational Details') );
          flag = 1;
    }
    else
    {
        document.getElementById('education_msg').innerHTML = '';
        document.getElementById('education_msg').appendChild( make_green_msg('Education Details Specified!') );
    }
    if(document.getElementById('residentialAddress').value == '')
    {
        document.getElementById('residentialAddress_msg').innerHTML = '';
        document.getElementById('residentialAddress_msg').appendChild( make_msg('Specify your Residential Address') );
          flag = 1;
    }
    else
    {
        document.getElementById('residentialAddress_msg').innerHTML = '';
        document.getElementById('residentialAddress_msg').appendChild( make_green_msg('Residential Address Specified!') );
    }
    if(document.getElementById('correspondanceAddress').value == '')
    {
        document.getElementById('correspondanceAddress_msg').innerHTML = '';
        document.getElementById('correspondanceAddress_msg').appendChild( make_msg('Specify your Correspondance Address') );
          flag = 1;
    }
    else
    {
        document.getElementById('correspondanceAddress_msg').innerHTML = '';
        document.getElementById('correspondanceAddress_msg').appendChild( make_green_msg('Correspondance Address Specified!') );
    }
    if(document.getElementById('telephone').value == '')
    {
        document.getElementById('telephone_msg').innerHTML = '';
        document.getElementById('telephone_msg').appendChild( make_msg('Specify your Telephone No.') );
          flag = 1;
    }
    else
    {
        document.getElementById('telephone_msg').innerHTML = '';
        document.getElementById('telephone_msg').appendChild( make_green_msg('Telephone No. Specified!') );
    }
    if(document.getElementById('course').value == '')
    {
        document.getElementById('course_msg').innerHTML = '';
        document.getElementById('course_msg').appendChild( make_msg('Specify your Course Name') );
          flag = 1;
    }
    else
    {
        document.getElementById('course_msg').innerHTML = '';
        document.getElementById('course_msg').appendChild( make_green_msg('Course Name Specified!') );
    }
    if(document.getElementById('fees').value == '')
    {
        document.getElementById('fees_msg').innerHTML = '';
        document.getElementById('fees_msg').appendChild( make_msg('Specify your Course Fees') );
          flag = 1;
    }
    else
    {
        document.getElementById('fees_msg').innerHTML = '';
        document.getElementById('fees_msg').appendChild( make_green_msg('Course Fees Specified!') );
    }
    if(document.getElementById('chequeDd').value == '')
    {
        document.getElementById('chequeDd_msg').innerHTML = '';
        document.getElementById('chequeDd_msg').appendChild( make_msg('Specify your Cheque/DD No.') );
          flag = 1;
    }
    else
    {
        document.getElementById('chequeDd_msg').innerHTML = '';
        document.getElementById('chequeDd_msg').appendChild( make_green_msg('Cheque/DD No. Specified!') );
    }
    if(document.getElementById('chequeDdDate').value == '')
    {
        document.getElementById('chequeDdDate_msg').innerHTML = '';
        document.getElementById('chequeDdDate_msg').appendChild( make_msg('Specify your Cheque/DD Date.') );
          flag = 1;
    }
    else
    {
        document.getElementById('chequeDdDate_msg').innerHTML = '';
        document.getElementById('chequeDdDate_msg').appendChild( make_green_msg('Cheque/DD Date. Specified!') );
    }
    if(document.getElementById('bankName').value == '')
    {
        document.getElementById('bankName_msg').innerHTML = '';
        document.getElementById('bankName_msg').appendChild( make_msg('Specify Bank Name') );
          flag = 1;
    }
    else
    {
        document.getElementById('bankName_msg').innerHTML = '';
        document.getElementById('bankName_msg').appendChild( make_green_msg('Bank Name Specified!') );
    }
    if(document.getElementById('bankBranch').value == '')
    {
        document.getElementById('bankBranch_msg').innerHTML = '';
        document.getElementById('bankBranch_msg').appendChild( make_msg('Specify Bank Branch') );
          flag = 1;
    }
    else
    {
        document.getElementById('bankBranch_msg').innerHTML = '';
        document.getElementById('bankBranch_msg').appendChild( make_green_msg('Bank Branch Specified!') );
    }

    if(flag)
    return false;

    return true;
}



//Type Validation

/**
* @ The Function Responsible For Execution Of Type Validation.
*   Makes Use Of subfunctions
*/
function check_type()
{
    var val1 = check_email();
    if(val1==false)
    return false;

    return true;
}



/**
* @The Function For Type Validation Of Password
*  Password must be alphanumeric.
*/
function check_password()
{
    if(document.getElementById('pwd_msg').innerHTML == '')
    {
        var reg = /^[0-9A-Za-z]+$/;
        var pwd = document.getElementById('pwd').value;
        if(!reg.test(pwd))
        {
        document.getElementById('pwd_msg').
        appendChild(make_msg('Please choose password with only alphabets & digits'));
        return false;
        }
        else
        {
        document.getElementById('pwd_msg').innerHTML = '';
        return true;
        }
    }

}


/**
* @The Function For Type Validation Of Username
*  Username must be alphanumeric.
*/
function check_username()
{
    if(document.getElementById('uname_msg').innerHTML == '')
    {
        var reg = /^[0-9A-Za-z]+$/;
        var pwd = document.getElementById('uname').value;
        if(!reg.test(pwd))
        {
        document.getElementById('uname_msg').
        appendChild(make_msg('Please choose username with only alphabets & digits'));
        return false;
        }
        else
        {
        document.getElementById('uname_msg').innerHTML = '';
        return true;
        }
    }

}

/**
* @The Function For Type Validation Of Email Address
*/
function check_email()
{
    var str = document.getElementById('email').value;
    var flag = true;
  	var at="@"
    var dot="."
    var lat=str.indexOf(at)
    var lstr=str.length
    var ldot=str.indexOf(dot)

		if (str.indexOf(at)==-1){
		   flag = false
		}
          if(str.length==0)
           flag = true;

		if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
	      flag = false
		}

		if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
		    flag = false
		}

		 if (str.indexOf(at,(lat+1))!=-1){
		    flag = false
		 }

		 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
		    flag = false
		 }

		 if (str.indexOf(dot,(lat+2))==-1){
		    flag = false
		 }

		 if (str.indexOf(" ")!=-1){
		    flag = false
		 }

        if(!flag)
        {
            document.getElementById('email_msg').innerHTML = '';
            document.getElementById('email_msg').appendChild( make_msg('Your Email Id Appears To Be Wrong!') );
            return false
        }
        else
        {
        document.getElementById('email_msg').innerHTML = '';
        document.getElementById('email_msg').appendChild(make_green_msg('Email ID Is Proper!'));
    }
        return true;


}


/**
* @The Function For Type Validation Of Age
*  Age Should Not Be More Than 150 years
*/
function check_age()
{
    if(document.getElementById('age').value > 150)
    {
        document.getElementById('age_msg').innerHTML = '';
        document.getElementById('age_msg').appendChild( make_msg('The Age You Specified Is Invalid!') );
            return false
    }
    document.getElementById('age_msg').innerHTML = '';
    document.getElementById('age_msg').appendChild( make_green_msg('The Age Appears To Be Valid!') );
    return true;
}

function check_pwd_length(minVal,maxVal)
{
    if(document.getElementById('pwd').value.length < minVal || document.getElementById('pwd').value.length > maxVal )
    {
        document.getElementById('pwd_msg').innerHTML = '';
        document.getElementById('pwd_msg').appendChild(make_msg('Password length should be greater than 6 & less than 12'));
        return true
    }
    document.getElementById('pwd_msg').innerHTML = '';
    return false;
}

function check_uname_length(minVal,maxVal)
{
  if(document.getElementById('uname').value.length < minVal || document.getElementById('uname').value.length > maxVal )
    {
        document.getElementById('uname_msg').innerHTML = '';
        document.getElementById('uname_msg').appendChild(make_msg('Username length should be greater than 5 & less than 10'));
        return true
    }
    document.getElementById('uname_msg').innerHTML = '';
    return false;
}


/**
* @This Function Does Not Allow User To Enter The Numeric Value
*  For Fields Requiring Alphabetical Value.
*/
function only_alphabets(evt ,divid)
{
   var key = evt.keyCode?evt.keyCode:evt.which?evt.which:evt.charCode;

   if((key < 97 || key > 122)&&(key < 'A'.charCodeAt(0) || key > 'Z'.charCodeAt(0))&&key!=8&&key!=9&&key!=12&&key!=27&&key!=39)
   {
    document.getElementById(divid).innerHTML = '';
    document.getElementById(divid).appendChild( make_msg('Only alphabets allowed here!') );
    //event.returnValue = false;
    return false;
   }
   else
   {
    //event.returnValue = true;
    document.getElementById(divid).innerHTML = '';
    return true;
   }


}


/**
* @This Function Does Not Allow User To Enter The Alphabetical Value
*  For Fields Requiring Numeric Value.
*/

function only_digits(evt, divid)
{
   var key = evt.keyCode?evt.keyCode:evt.which?evt.which:evt.charCode;
   if((key<48||key>57)&&key!=8&&key!=9&&key!=12&&key!=27&&key!=37&&key!=39&&key!=46)
   {
    document.getElementById(divid).innerHTML = '';
    document.getElementById(divid).appendChild( make_msg('Only digits allowed here!') );
    return false;
   }
   else
   {
    document.getElementById(divid).innerHTML = '';
    return true;
   }

}




// Validate Confirmation

/**
* @This Function Performs Password Confirmation
*
*/
function confirm_pwd()
{
    if(document.getElementById('pwd').value == document.getElementById('cpwd').value)
    {
        document.getElementById('cpwd_msg').innerHTML = '';
        document.getElementById('cpwd_msg').appendChild( make_green_msg('Password Confirmed!') );
        return true;
    }
    else
    {
        document.getElementById('cpwd_msg').innerHTML = '';
        document.getElementById('cpwd_msg').appendChild( make_msg('Password Not Confirmed!') );
        return false;
    }

}


//  Feedback Reporting

/**
* @The Function For Displaying Error Messages ( Red ).
*/

function make_msg( str )
{
    var msg = document.createElement('small');
        msg.style.color = '#D10111';
        msg.style.fontSize = 12;

        msg.innerHTML = str;

        return msg;
}


/**
* @The Function For Displaying Success Messages ( Green ).
*/
function make_green_msg( str )
{
    var msg = document.createElement('small');
        msg.style.color = '#68B372';
        msg.style.fontSize = 12;

        msg.innerHTML = str;

        return msg;
}
