//	echo $html;
 //echo "total micro array:".count($micros_array);
 //exit;
 /* D. c)balance out the variance */
 $rem_meals = $breakfast_meals = $pre_lunch_snack_meals = $lunch_meals = $dinner_meals = $pre_dinner_snack_meals = $fin_meals_db = array();
 $pescetarian_fish_count = 0;
 $nospecial_meat_fish_count = 0;
 //  echo "micro array:<pre>";print_r($micros_array);
 //exit;
 $breakfast_meals = select_balance_meals($plan, $nutrition_type, $breakfast_variance, $micros_array, $meat_meals, $fish_meals, $meals_plan, $days_npes_cal, $ideal_protien, $ideal_fat, $ideal_carbo, 'breakfast', $weeknum, null, $fin_meals, $fin_meals_db, $final_meal_ids, $week_meal_ids, $pescetarian_fish_count, $nospecial_meat_fish_count, $sweet_tooth);
 //echo "break fast meals:<pre>";print_r($breakfast_meals);
 $lunch_meals = select_balance_meals($plan, $nutrition_type, $lunch_variance, $micros_array, $meat_meals, $fish_meals, $meals_plan, $days_npes_cal, $ideal_protien, $ideal_fat, $ideal_carbo, 'lunch', $weeknum, $breakfast_meals, $fin_meals, $fin_meals_db, $final_meal_ids, $week_meal_ids, $pescetarian_fish_count, $nospecial_meat_fish_count, $sweet_tooth);
 $dinner_meals = select_balance_meals($plan, $nutrition_type, $dinner_variance, $micros_array, $meat_meals, $fish_meals, $meals_plan, $days_npes_cal, $ideal_protien, $ideal_fat, $ideal_carbo, 'dinner', $weeknum, $lunch_meals, $fin_meals, $fin_meals_db, $final_meal_ids, $week_meal_ids, $pescetarian_fish_count, $nospecial_meat_fish_count, $sweet_tooth);
 $pre_dinner_snack_meals = select_balance_meals($plan, $nutrition_type, $snack_variance, $micros_array, $meat_meals, $fish_meals, $meals_plan, $days_npes_cal, $ideal_protien, $ideal_fat, $ideal_carbo, 'pre_dinner_snack', $weeknum, $dinner_meals, $fin_meals, $fin_meals_db, $final_meal_ids, $week_meal_ids, $pescetarian_fish_count, $nospecial_meat_fish_count, $sweet_tooth);
 if ($sweet_tooth == 'yes') {
     $pre_lunch_snack_meals = select_balance_meals($plan, $nutrition_type, $snack_variance, $micros_array, $meat_meals, $fish_meals, $meals_plan, $days_npes_cal, $ideal_protien, $ideal_fat, $ideal_carbo, 'pre_lunch_snack', $weeknum, $pre_dinner_snack_meals, $fin_meals, $fin_meals_db, $final_meal_ids, $week_meal_ids, $pescetarian_fish_count, $nospecial_meat_fish_count, $sweet_tooth);
 }
 if ($weeknum == 1) {
     echo $html;
     //echo "<pre>";
     //echo "<br />breakfast variance<pre>";print_r($breakfast_variance);
     //echo "<br />lunch variance<pre>";print_r($lunch_variance);
     //echo "<br />dinner variance<pre>";print_r($dinner_variance);
     //	echo "<br />snack variance<pre>";print_r($snack_variance);
     /*
      */
     //echo "<br />day wise NPES:<pre>";print_r($days_npes_cal);
     /*	echo "<br />micro values:<pre>";print_r($micros_array);
     
     			echo "<br />breakfast meal<pre>";print_r($breakfast_meals);
     			echo "<br />lunch meal<pre>";print_r($lunch_meals);
}
/* difference calculation for meal */
/* D. c)balance out the variance */
$rem_meals = array();
echo "days special cal:<pre>";
print_r($days_npes_cal);
echo "micros array:<pre>";
print_r($micros_array);
//echo "per day meal:".$per_day_no_of_melas;
if ($period == 12) {
    //for 12 week plan
    $meals = select_balance_meals($rem_meals, $variance, $micros_array, $days_npes_cal, $per_day_no_of_melas, 40, 20, 40, 0);
    // echo "test == <pre>";print_r($meals);
} else {
    //for 4 week plans
    $meals = select_balance_meals($rem_meals, $variance, $micros_array, $days_npes_cal, $per_day_no_of_melas, 45, 17.5, 37.5, 0);
}
//echo "balance meal<pre>";print_r($meals);
$micros_diff = array();
$fmeals = array();
function select_balance_meals($rem_meals = array(), $variance, $micros_array, $days_npes_cal, $per_day_no_of_melas = 4, $protin, $fat, $carbo, $i = 0, $fmeals = array())
{
    $temp_array = array();
    global $wpdb;
    if (!empty($micros_array)) {
        /* check breakfast meal */
        foreach ($variance as $k => $m) {
            //print_r($k);;
            $pro_diff = abs($protin / $micros_array[$k]['Protein'] * 100 - 100);
            $fat_diff = abs($fat / $micros_array[$k]['Fett'] * 100 - 100);
            $carb_diff = abs($carbo / $micros_array[$k]['Kohlenhydrate'] * 100 - 100);
function select_balance_meals($rem_meals = array(), $variance, $micros_array, $days_npes_cal, $per_day_no_of_melas = 4, $protin, $fat, $carbo, $i = 0, $fmeals = array()) {
        $temp_array = array();
        if (!empty($micros_array)) {
                /* check breakfast meal */
                foreach ($variance as $k => $m) {
                        $pro_diff = abs((($protin / $micros_array[$k]['Protein']) * 100) - 100);
                        $fat_diff = abs((($fat / $micros_array[$k]['Fett']) * 100) - 100);
                        $carb_diff = abs((($carbo / $micros_array[$k]['Kohlenhydrate']) * 100) - 100);
                        //echo $kcal = $micros_array[$k]['kcal'].'==';
                        foreach ($days_npes_cal as $d => $v) {
                                
                                //print_r($kcal);
                                //print_r($v['breakfast'][1]);
                                $breakfast = $lunch = $dinner = $pre_lunch = $pre_dinner = 0;
                                if ($kcal >= $v['breakfast'][1] && $kcal <= $v['breakfast'][2]) {

                                        $kcal_diff = abs((($kcal / $v['breakfast'][0] * 100) - 100) * 1.5);

                                        $diff = $kcal_diff + $pro_diff + $fat_diff + $carb_diff;

                                        $micros_diff[$d]['b'][$micros_array[$k]['id']] = $diff;
                                        $breakfast = $micros_array[$k]['id'];
                                }

                                if ($breakfast > 0) {
                                        
                                        if ($kcal >= $v['lunch'][1] && $kcal <= $v['lunch'][2]) {

                                                $pro_diff_l = abs(2 * $protin - $micros_array[$breakfast]['Protein']);
                                                $fat_diff_l = abs(2 * $fat - $micros_array[$breakfast]['Fett']);
                                                $carb_diff_l = abs(2 * $carbo - $micros_array[$breakfast]['Kohlenhydrate']);

                                                $kcal_diff = abs((($kcal / $v['lunch'][0] * 100) - 100) * 1.5);

                                                $diff = $kcal_diff + $pro_diff_l + $fat_diff_l + $carb_diff_l;

                                                $micros_diff[$d]['l'][$micros_array[$k]['id']] = $diff;
                                                $lunch = $micros_array[$k]['id'];
                                        }
                                }

                                if ($lunch > 0) {
                                        if ($kcal >= $v['dinner'][1] && $kcal <= $v['dinner'][2]) {

                                                $pro_diff_l = abs(2 * $protin - $micros_array[$lunch]['Protein']);
                                                $fat_diff_l = abs(2 * $fat - $micros_array[$lunch]['Fett']);
                                                $carb_diff_l = abs(2 * $carbo - $micros_array[$lunch]['Kohlenhydrate']);

                                                $kcal_diff = abs((($kcal / $v['dinner'][0] * 100) - 100) * 1.5);

                                                $diff = $kcal_diff + $pro_diff_l + $fat_diff_l + $carb_diff_l;

                                                $micros_diff[$d]['d'][$micros_array[$k]['id']] = $diff;
                                                $dinner = $micros_array[$k]['id'];
                                        }
                                }
                                
                                
                                if ($dinner > 0) {
                                        //echo $kcal.'--';
                                        //echo $v['pre_dinner_snack'][1].'<br>';
                                        if ($kcal >= $v['pre_dinner_snack'][1] && $kcal <= $v['pre_dinner_snack'][2]) {

                                                $pro_diff_l = abs(2 * $protin - $micros_array[$dinner]['Protein']);
                                                $fat_diff_l = abs(2 * $fat - $micros_array[$dinner]['Fett']);
                                                $carb_diff_l = abs(2 * $carbo - $micros_array[$dinner]['Kohlenhydrate']);

                                                $kcal_diff = abs((($kcal / $v['pre_dinner_snack'][0] * 100) - 100) * 1.5);

                                                $diff = $kcal_diff + $pro_diff_l + $fat_diff_l + $carb_diff_l;

                                                $micros_diff[$d]['s'][$micros_array[$k]['id']] = $diff;
                                                $snack = $micros_array[$k]['id'];
                                        }
                                }
                                
                                if ($snack > 0 && isset($v['pre_lunch_snack'])) {
                                        if ($kcal >= $v['pre_lunch_snack'][1] && $kcal <= $v['pre_lunch_snack'][2]) {

                                                $pro_diff_l = abs(2 * $protin - $micros_array[$snack]['Protein']);
                                                $fat_diff_l = abs(2 * $fat - $micros_array[$snack]['Fett']);
                                                $carb_diff_l = abs(2 * $carbo - $micros_array[$snack]['Kohlenhydrate']);

                                                $kcal_diff = abs((($kcal / $v['pre_lunch_snack'][0] * 100) - 100) * 1.5);

                                                $diff = $kcal_diff + $pro_diff_l + $fat_diff_l + $carb_diff_l;

                                                $micros_diff[$d]['s1'][$micros_array[$k]['id']] = $diff;
                                                $snack1 = $micros_array[$k]['id'];
                                        }
                                }
                                
                                // if(isset($v['breakfast']))
                                //print_r($micros_diff);
                        }
                }
                //print_r($micros_diff);
                /*$breakfast = array_keys($micros_diff, min($micros_diff));
                $meals['breakfast'] = $breakfast[0];
                $fmeals['breakfast'][$i] = $breakfast[0];
                print_r($meals);
                unset($micros_diff[$breakfast[0]]);*/
        }

        exit;

        if (!empty($micros_diff)) {

                /* check lunch meal */
                foreach ($micros_array as $m) {
                        if (empty($rem_meals)) {
                                if (!in_array($m['id'], $meals)) {

                                        $sum = abs(((2 * $protin) - $micros_array[$meals['breakfast']]['Protein']) - $m['Protein']) + abs(((2 * $fat) - $micros_array[$meals['breakfast']]['Fett'] - $m['Fett'])) + abs(((2 * $carbo) - $micros_array[$meals['breakfast']]['Kohlenhydrate'] - $m['Kohlenhydrate']));
                                        $micros_diff[$m['id']] = $sum;
                                }
                        } else {
                                if (in_array($m['id'], $rem_meals)) {
                                        if (!in_array($m['id'], $meals)) {
                                                $sum = abs(((2 * $protin) - $micros_array[$meals['breakfast']]['Protein']) - $m['Protein']) + abs(((2 * $fat) - $micros_array[$meals['breakfast']]['Fett'] - $m['Fett'])) + abs(((2 * $carbo) - $micros_array[$meals['breakfast']]['Kohlenhydrate'] - $m['Kohlenhydrate']));
                                                $micros_diff[$m['id']] = $sum;
                                        }
                                }
                        }
                }
                //print_r($micros_diff);
                $lunch = array_keys($micros_diff, min($micros_diff));
                $meals['lunch'] = $lunch[0];
                $fmeals['lunch'][$i] = $lunch[0];
                unset($micros_diff[$lunch[0]]);
        }

        if (!empty($micros_diff)) {

                /* check dinner meal */
                foreach ($micros_array as $m) {
                        if (empty($rem_meals)) {
                                if (!in_array($m['id'], $meals)) {

                                        $sum = abs(((2 * $protin) - $micros_array[$meals['lunch']]['Protein']) - $m['Protein']) + abs(((2 * $fat) - $micros_array[$meals['lunch']]['Fett'] - $m['Fett'])) + abs(((2 * $carbo) - $micros_array[$meals['lunch']]['Kohlenhydrate'] - $m['Kohlenhydrate']));
                                        $micros_diff[$m['id']] = $sum;
                                }
                        } else {
                                if (in_array($m['id'], $rem_meals)) {
                                        if (!in_array($m['id'], $meals)) {
                                                $sum = abs(((2 * $protin) - $micros_array[$meals['lunch']]['Protein']) - $m['Protein']) + abs(((2 * $fat) - $micros_array[$meals['lunch']]['Fett'] - $m['Fett'])) + abs(((2 * $carbo) - $micros_array[$meals['lunch']]['Kohlenhydrate'] - $m['Kohlenhydrate']));
                                                $micros_diff[$m['id']] = $sum;
                                        }
                                }
                        }
                }
                //print_r($micros_diff);
                $dinner = array_keys($micros_diff, min($micros_diff));
                $meals['dinner'] = $dinner[0];
                $fmeals['dinner'][$i] = $dinner[0];
                unset($micros_diff[$dinner[0]]);
        }
        if (!empty($micros_diff)) {


                /* check snack1 meal */
                foreach ($micros_array as $m) {
                        if (empty($rem_meals)) {
                                if (!in_array($m['id'], $meals)) {

                                        $sum = abs(((2 * $protin) - $micros_array[$meals['dinner']]['Protein']) - $m['Protein']) + abs(((2 * $fat) - $micros_array[$meals['dinner']]['Fett'] - $m['Fett'])) + abs(((2 * $carbo) - $micros_array[$meals['dinner']]['Kohlenhydrate'] - $m['Kohlenhydrate']));
                                        $micros_diff[$m['id']] = $sum;
                                }
                        } else {
                                if (in_array($m['id'], $rem_meals)) {
                                        if (!in_array($m['id'], $meals)) {
                                                $sum = abs(((2 * $protin) - $micros_array[$meals['dinner']]['Protein']) - $m['Protein']) + abs(((2 * $fat) - $micros_array[$meals['dinner']]['Fett'] - $m['Fett'])) + abs(((2 * $carbo) - $micros_array[$meals['dinner']]['Kohlenhydrate'] - $m['Kohlenhydrate']));
                                                $micros_diff[$m['id']] = $sum;
                                        }
                                }
                        }
                }
                //print_r($micros_diff);
                $snack = array_keys($micros_diff, min($micros_diff));
                $meals['snack'] = $snack[0];
                $fmeals['snack'][$i] = $snack[0];
                unset($micros_diff[$snack[0]]);
        }

        if ($per_day_no_of_melas == 5) {
                if (!empty($micros_diff)) {
                        /* check snack2 meal */
                        foreach ($micros_array as $m) {
                                if (empty($rem_meals)) {
                                        if (!in_array($m['id'], $meals)) {

                                                $sum = abs(((2 * $protin) - $micros_array[$meals['snack']]['Protein']) - $m['Protein']) + abs(((2 * $fat) - $micros_array[$meals['snack']]['Fett'] - $m['Fett'])) + abs(((2 * $carbo) - $micros_array[$meals['snack']]['Kohlenhydrate'] - $m['Kohlenhydrate']));
                                                $micros_diff[$m['id']] = $sum;
                                        }
                                } else {
                                        if (in_array($m['id'], $rem_meals)) {
                                                if (!in_array($m['id'], $meals)) {
                                                        $sum = abs(((2 * $protin) - $micros_array[$meals['snack']]['Protein']) - $m['Protein']) + abs(((2 * $fat) - $micros_array[$meals['snack']]['Fett'] - $m['Fett'])) + abs(((2 * $carbo) - $micros_array[$meals['snack']]['Kohlenhydrate'] - $m['Kohlenhydrate']));
                                                        $micros_diff[$m['id']] = $sum;
                                                }
                                        }
                                }
                        }
                        //print_r($micros_diff);
                        $snack1 = array_keys($micros_diff, min($micros_diff));
                        $meals['snack1'] = $snack1[0];
                        $fmeals['snack1'][$i] = $snack1[0];
                        unset($micros_diff[$snack1[0]]);
                }
        }

        //$final_temp = filter_meal($meal, $days_npes_cal,$per_day_no_of_melas);
        //echo "<pre>8888";print_r($final_temp);
        //echo "<pre>-new-";print_r($meals);
        //echo "<pre>-new-";print_r($micros_diff);
        //echo "<pre>-new-";print_r($fmeals);
        $i++;
        if (!empty($micros_diff)) {
                $flipped = array_keys($micros_diff);

                $fmeals = select_balance_meals($flipped, $micros_array, $per_day_no_of_melas, $protin, $fat, $carbo, $i, $fmeals);
        }

        //return compact('meals', 'micros_diff');
        return $fmeals;
}