﻿// JScript File
	var initialQuantities = new Array();
	var checkChangeMes = false;
	function DisplayTextValue(servingSize,newServingSize)
	{
		if(initialQuantities[0] == null)
		{
			var itemCount = 0;
            $("ul#ingredients li").each
            ( 
            function()
                {
                    if($(this).children(":nth-child(1)").html()!= null)
                    {                        
                        initialQuantities[itemCount] = $(this).children(":nth-child(1)").html();
                        var quantity = initialQuantities[itemCount];                       
                        resetMeasurementDisplay($(this), servingSize, newServingSize, quantity);
                        $(this).children(":nth-child(1)").html(CalculateFraction(servingSize,newServingSize,quantity));
                        itemCount++;
                    }
                })
		}
		else
		{
			var displayItemCount = 0;
			$("ul#ingredients li").each( 
				function()
                {
                    if($(this).children(":nth-child(1)").html()!= null)
                    {
						var quantity 	= initialQuantities[displayItemCount];
						resetMeasurementDisplay($(this), servingSize, newServingSize, quantity);
                       $(this).children(":nth-child(1)").html(CalculateFraction(servingSize,newServingSize,quantity));
                       displayItemCount++;
                    }
					
					if($(this).children(":nth-child(2)").html()!= null && $(this).children(":nth-child(1)").html()!= null)
					{
						var measureAmt = $(this).children(":nth-child(1)").html();
						var measureSize = $(this).children(":nth-child(2)").html();						
						
						if(measureSize == "cup" && measureAmt == 2)
						{
							alert('yes');
						}
					}
                })
		}        	
		return false;
    } 
    function resetMeasurementDisplay(jObject, servingSize, newServingSize, quantity) {
		if(isGreaterThanOne(servingSize,newServingSize,quantity)) {
			var measurment	= $.trim(jObject.children(":nth-child(2)").html());
			switch(measurment) {
				case 'cup':
					jObject.children(":nth-child(2)").html("cups ");
					break;
				case 'pinch':
					jObject.children(":nth-child(2)").html("pinches ");
					break;
				case 'lb.':
					jObject.children(":nth-child(2)").html("lbs. ");
					break;
				case 'lime':
					jObject.children(":nth-child(2)").html("limes. ");
					break;
			}
		} else {
			var measurment	= $.trim(jObject.children(":nth-child(2)").html());
			switch(measurment) {
				case 'cups':
					jObject.children(":nth-child(2)").html("cup ");
					break;
				case 'pinches':
					jObject.children(":nth-child(2)").html("pinch ");
					break;
				case 'lbs.':
					jObject.children(":nth-child(2)").html("lb. ");
					break;
				case 'limes':
					jObject.children(":nth-child(2)").html("lime ");
					break;
			}
		}     
    }   
	function CalculateFraction(servingSize,newServingSize,Quantity)
    {
        var AnsNum;
        var AnsDen;
        var ComplexFractionSplitted = new Array();
        ComplexFractionSplitted = Quantity.split(" ");
        if(ComplexFractionSplitted[1]== null)
          {
            var NumeratorAndDenominator = new Array();
            NumeratorAndDenominator = ComplexFractionSplitted[0].split("/");
              if(NumeratorAndDenominator[1]== null)
                {
                    NumeratorAndDenominator[1] = 1;
                }
            AnsNum = NumeratorAndDenominator[0] * newServingSize;
            AnsDen = NumeratorAndDenominator[1] * servingSize;
          }
          else
          {
             var NumeratorAndDenominator = new Array();
             NumeratorAndDenominator = ComplexFractionSplitted[1].split("/");
             
             AnsNum = (eval(ComplexFractionSplitted[0] * NumeratorAndDenominator[1])+ eval(NumeratorAndDenominator[0])) * newServingSize;
             AnsDen = NumeratorAndDenominator[1] * servingSize;
          }
        
        return reduce(AnsNum,AnsDen);
    }
    function isGreaterThanOne(servingSize,newServingSize,Quantity) {    	
        var AnsNum;
        var AnsDen;
		var ComplexFractionSplitted = new Array();
		ComplexFractionSplitted = Quantity.split(" ");
		if(ComplexFractionSplitted[1]== null) {
            var NumeratorAndDenominator = new Array();
            NumeratorAndDenominator = ComplexFractionSplitted[0].split("/");
              if(NumeratorAndDenominator[1]== null)
                {
                    NumeratorAndDenominator[1] = 1;
                }
            AnsNum = NumeratorAndDenominator[0] * newServingSize;
            AnsDen = NumeratorAndDenominator[1] * servingSize;
		} else {
             var NumeratorAndDenominator = new Array();
             NumeratorAndDenominator = ComplexFractionSplitted[1].split("/");
             
             AnsNum = (eval(ComplexFractionSplitted[0] * NumeratorAndDenominator[1])+ eval(NumeratorAndDenominator[0])) * newServingSize;
             AnsDen = NumeratorAndDenominator[1] * servingSize;
		}
		return ((AnsNum / AnsDen) > 1) ? true : false;     
    }
    
    function reduce(AnsNum,AnsDen) 
    {
        var Answer;
        var factorX //highest common factor

        if ( AnsNum == 0 || AnsDen == 0 ) 
        {
            factorX=1;
            return;
        }

        AnsNum = Math.abs( AnsNum );
        AnsDen = Math.abs( AnsDen );

        var factorX = 1;

		//Find common factors of Numerator and Denominator
		for ( var x = 2; x <= Math.min( AnsNum, AnsDen ); x ++ ){
			var check1 = AnsNum / x;
			if ( check1 == Math.round( check1 ) ) {
			  var check2 = AnsDen / x;
			  if ( check2 == Math.round( check2 ) ) {
				factorX = x;
			  }
			}
		}
		
		AnsNum =AnsNum/factorX; 
		AnsDen =AnsDen/factorX;  //divide by highest common factor to reduce fraction
		if(AnsDen != 1)
		{
			if(AnsNum > AnsDen)
			{
				var Quotient = AnsNum / AnsDen;
				var Remainder = AnsNum % AnsDen;
				
				Answer = Math.floor(Quotient)+' '+Remainder+'/'+AnsDen;
			}
			else
			{
				Answer = AnsNum + '/'+AnsDen
			}
		}
		else
		{
			Answer = AnsNum;
		}
		
		return Answer;
}
   

