﻿// Student GPA JScript File

  function quarterly()
    {
        var quarterlydiv = document.getElementById('quarterlygpadiv');
        var totalregcredits = 0;
        var totalapcredits = 0;
        var numcourses = 0;  //use this for now
        var totalquality = 0;
        
        for(var i = 1; i < 13; i ++)
        {
            var num = '';
            if(i < 10)
            {
                num = '0' + i;
            }
            else
            {
                num = i;
            }

            var credit = document.getElementById('ctl00_ContentPlaceHolder1_GPARepeater_ctl' + num + '_CreditTextBox');
            var grade = document.getElementById('ctl00_ContentPlaceHolder1_GPARepeater_ctl' + num + '_GradeDropDown');
            var ap = document.getElementById('ctl00_ContentPlaceHolder1_GPARepeater_ctl' + num + '_APCheckBox');
            
            if(credit.value != '' && grade.options[grade.selectedIndex].value != '')
            {
                numcourses++;
                
                if(ap.checked)
                {
                    totalquality += getQuality(grade.options[grade.selectedIndex].value, true);  
                    totalapcredits += credit.value;
                }
                else
                {
                    totalquality += getQuality(grade.options[grade.selectedIndex].value, false);  
                    totalregcredits += credit.value;
                }
                
               
            }
        }
    
        var lastnum = roundNumber(totalquality / numcourses);
        
        if(!isNaN(lastnum))
        {
        
        if(lastnum.toString().indexOf(".") == -1)
        {
            lastnum = lastnum + ".0";
        }
    
        quarterlydiv.innerHTML = lastnum;
        }
        else
        {
            quarterlydiv.innerHTML = "&nbsp;";
        }
        
    }
    
    
    
    
    function cumulative()
    {
       var cumulativediv = document.getElementById('cumulativegpadiv');
       
       var gpasofar = parseFloat(document.getElementById('ctl00_ContentPlaceHolder1_CumGPA').value);
       var credsofar = parseFloat(document.getElementById('ctl00_ContentPlaceHolder1_CumCredit').value);
       
       if(!isNaN(gpasofar) && !isNaN(credsofar))
       {
       
       var totalqp = gpasofar * credsofar;
       
       var newtotalqp = 0;
       var newtotalcred = 0;
       
       var finaltotalqp = 0;
       var finaltotalcred = 0;
       
       for(var i = 1; i < 13; i ++)
        {
            var num = '';
            if(i < 10)
            {
                num = '0' + i;
            }
            else
            {
                num = i;
            }

            var credit = document.getElementById('ctl00_ContentPlaceHolder1_GPARepeater_ctl' + num + '_CreditTextBox');
            var grade = document.getElementById('ctl00_ContentPlaceHolder1_GPARepeater_ctl' + num + '_GradeDropDown');
            var ap = document.getElementById('ctl00_ContentPlaceHolder1_GPARepeater_ctl' + num + '_APCheckBox');
            
            if(credit.value != '' && grade.options[grade.selectedIndex].value != '')
            {
                if(ap.checked)
                {
                    newtotalqp += getQuality(grade.options[grade.selectedIndex].value, true) * credit.value;  
                }
                else
                {
                    newtotalqp += getQuality(grade.options[grade.selectedIndex].value, false) * credit.value;  
                }
                newtotalcred += parseFloat(credit.value);
            }
        }
       
       finaltotalcred = credsofar + newtotalcred;
       finaltotalqp = totalqp + newtotalqp;
       
       var lastnum = roundNumber(finaltotalqp  / finaltotalcred);
        if(lastnum.toString().indexOf(".") == -1)
        {
            lastnum = lastnum + ".0";
        }
       
       cumulativediv.innerHTML  = lastnum;
       }
       else
       {
        cumulativediv.innerHTML = "&nbsp;";
       }
    }
    
    function goal()
    {
       var goalgpasofar = parseFloat(document.getElementById('ctl00_ContentPlaceHolder1_GoalCumGPA').value);
       var goalcredsofar = parseFloat(document.getElementById('ctl00_ContentPlaceHolder1_GoalCumCredit').value);
       var goalcredyear = parseFloat(document.getElementById('ctl00_ContentPlaceHolder1_GoalCredYear').value);
       var goalgpa = parseFloat(document.getElementById('ctl00_ContentPlaceHolder1_TargetGPA').value);
    
       var requireddiv = document.getElementById('requiredgpadiv');
       
       var finalgpa = 0;
       
       if(!isNaN(goalgpasofar) && !isNaN(goalcredsofar) && !isNaN(goalcredyear) && !isNaN(goalgpa))
       {
            finalgpa = (goalgpa*(goalcredyear + goalcredsofar) - goalgpasofar * goalcredsofar)/goalcredyear;
            
            var lastnum = roundNumber(finalgpa);
            if(lastnum.toString().indexOf(".") == -1)
            {
                lastnum = lastnum + ".0";
            }
            requireddiv.innerHTML = lastnum;
       }
       else
       {
            requireddiv.innerHTML = "&nbsp;";
       }
    }
    
    
    function resetgoal()
    {
       document.getElementById('ctl00_ContentPlaceHolder1_GoalCumGPA').value = '';
       document.getElementById('ctl00_ContentPlaceHolder1_GoalCumCredit').value = '';
       document.getElementById('ctl00_ContentPlaceHolder1_GoalCredYear').value = '';
       document.getElementById('ctl00_ContentPlaceHolder1_TargetGPA').value = '';
    
       document.getElementById('requiredgpadiv').innerHTML = '&nbsp;';
    
    }
    
    function resetquartcum()
    {
        for(var i = 1; i < 13; i ++)
        {
            var num = '';
            if(i < 10)
            {
                num = '0' + i;
            }
            else
            {
                num = i;
            }

            var credit = document.getElementById('ctl00_ContentPlaceHolder1_GPARepeater_ctl' + num + '_CreditTextBox');
            var grade = document.getElementById('ctl00_ContentPlaceHolder1_GPARepeater_ctl' + num + '_GradeDropDown');
            var ap = document.getElementById('ctl00_ContentPlaceHolder1_GPARepeater_ctl' + num + '_APCheckBox');
       
            grade.selectedIndex = 0;
            credit.value = '';
            ap.checked = false;
        }
        
       var gpasofar = document.getElementById('ctl00_ContentPlaceHolder1_CumGPA');
       var credsofar = document.getElementById('ctl00_ContentPlaceHolder1_CumCredit');
       
       gpasofar.value = '';
       credsofar.value = '';
       
       var cumulativediv = document.getElementById('cumulativegpadiv');
       var quarterlydiv = document.getElementById('quarterlygpadiv');
       
       cumulativediv.innerHTML = "&nbsp;";
       quarterlydiv.innerHTML = "&nbsp;"
    
    }
    
    
    function getQuality(grade, ap)
    {
        var val = 0;
        
        if(!ap)
        {
            switch(grade)
            {
                case 'A':
                    val = 4;
                    break;
                case 'B':
                    val = 3;
                    break;
                case 'C':
                    val = 2;
                    break;
                case 'D':
                    val = 1;
                    break;
                case 'E':
                    val = 0;
                    break;
            }
        }
        else
        {
            switch(grade)
            {
                case 'A':
                    val = 5;
                    break;
                case 'B':
                    val = 3.75;
                    break;
                case 'C':
                    val = 2.5;
                    break;
                case 'D':
                    val = 1.25;
                    break;
                case 'E':
                    val = 0;
                    break;
            }
        
        }
        
        return val;
    }


    function roundNumber(num) {
	    var rnum = num;
	    var rlength = 2; // The number of decimal places to round to
	    if (rnum > 8191 && rnum < 10485) {
	    	rnum = rnum-5000;
		    var newnumber = Math.round(rnum*Math.pow(10,rlength))/Math.pow(10,rlength);
		    newnumber = newnumber+5000;
	    } else {
		    var newnumber = Math.round(rnum*Math.pow(10,rlength))/Math.pow(10,rlength);
	    }
	    return newnumber;
    }
