/*******************************************************
	----------------------------------------
	----------------------------------------
 validation functions for Salesperson Cost Calculation
	----------------------------------------
	----------------------------------------
*******************************************************/

///////////////////////// compute_sales_comm ////////////////
function compute_sales_comm()
{
//	alert("compute_sales_comm")
//	alert(document.salesperson_cost.sales_comm.value);
//	alert(document.salesperson_cost.revenue_target.value);
//	alert(document.salesperson_cost.sales_percentage.value);

	if (   ( isSomeValue( document.salesperson_cost.revenue_target.value ) != false )
		&& ( isSomeValue( document.salesperson_cost.sales_percentage.value ) != false ) )
	{
		sales_commission = computeShare(document.salesperson_cost.revenue_target.value,
										 document.salesperson_cost.sales_percentage.value ) ;
		document.salesperson_cost.sales_comm.value = formatCurrency(sales_commission, "noMkDecimal") ;
	}
	else
		document.salesperson_cost.sales_comm.value = "" ;	

	return true ;
}
/////////////////////// End compute_sales_comm ///////////////

///////////////////////// compute_margin_comm ////////////////
function compute_margin_comm()
{
//	alert("compute_margin_comm")
//	alert(document.salesperson_cost.margin_comm.value);

	t_revenue_target	= new String ( document.salesperson_cost.revenue_target.value ) ;
	t_margin_percentage	= new String ( document.salesperson_cost.margin_percentage.value ) ;
	t_gross_margin		= new String ( document.salesperson_cost.gross_margin.value ) ;
	
	t_margin 			= 0 ;
	sales_commission	= 0 ;

	if (   ( isSomeValue( t_revenue_target ) != false )
		&& ( isSomeValue( t_margin_percentage ) != false )
		&& ( isSomeValue( t_gross_margin ) != false ) )
	{
		t_margin = computeShare(t_revenue_target, t_gross_margin ) ;
		sales_commission = computeShare(t_margin, t_margin_percentage ) ;
		document.salesperson_cost.margin_comm.value = formatCurrency(sales_commission, "noMkDecimal") ;
	}
	else
		document.salesperson_cost.margin_comm.value = "" ;	

	return true ;
}
/////////////////////// End compute_margin_comm ///////////////

///////////////////// compute_bonus_percentage ////////////////////
function compute_bonus_percentage()
{
//	alert("compute_bonus_percentage") ;

	if (   ( isSomeValue( document.salesperson_cost.bonus.value ) != false )
		&& ( isSomeValue( document.salesperson_cost.base_salary.value ) != false ) )
	{
		t_bonus_percentage	= computeRatio(document.salesperson_cost.bonus.value,
													document.salesperson_cost.base_salary.value) ;
		document.salesperson_cost.bonus_percentage.value = t_bonus_percentage ;
	}
	else
		document.salesperson_cost.bonus_percentage.value = "" ;
	
	return true ;	
}
/////////////// end compute_bonus_percentage //////

///////////////////////// compute_total_direct ////////////////
function compute_total_direct()
{
//	alert("compute_total_direct")
//	alert(document.salesperson_cost.total_direct.value);

	t_base_salary	=   new String( document.salesperson_cost.base_salary.value ) ;
	t_sales_comm	=	new String( document.salesperson_cost.sales_comm.value ) ;
	t_margin_comm	=	new String( document.salesperson_cost.margin_comm.value ) ;
	t_bonus			=	new String( document.salesperson_cost.bonus.value ) ;

	t_total_direct	= 0 ;

	if ( isSomeValue( t_base_salary ) != false )
	{
		t_base_salary	= 	removeLeadDollar ( removeComma ( t_base_salary ) ) ;
		t_total_direct	+=	parseFloat( t_base_salary ) ;
	}

	if ( isSomeValue( t_sales_comm ) != false )
	{
		t_sales_comm	= removeLeadDollar ( removeComma ( t_sales_comm ) ) ;
		t_total_direct	+=	parseFloat( t_sales_comm ) ;
	}

	if ( isSomeValue( t_margin_comm ) != false )
	{
		t_margin_comm	= removeLeadDollar ( removeComma ( t_margin_comm ) ) ;
		t_total_direct	+=	parseFloat( t_margin_comm ) ;
	}

	if ( isSomeValue( t_bonus ) != false )
	{
		t_bonus			= removeLeadDollar ( removeComma ( t_bonus ) ) ;
		t_total_direct	+=	parseFloat( t_bonus ) ;
	}

	ret = formatCurrency( t_total_direct, "noMkDecimal" ) ;
	if ( ret == false )
	{
//		alert("Something is wrong. The Total Direct Compensation is not correct") ;
//		document.salesperson_cost.base_salary.focus();
//		return false;
	}

	t_total_direct = ret ;
	document.salesperson_cost.total_direct.value = t_total_direct ;

	// Check if direct compensation is greater than revenue
	if ( isSomeValue( document.salesperson_cost.revenue_target.value ) != false )
	{
		if ( compareFinAmount(document.salesperson_cost.revenue_target.value, t_total_direct)  == -1 )
		{
			alert("The total direct compensation needs to less than Revenue Target") ;
			document.salesperson_cost.revenue_target.focus();
			return false;
		}
	}

	return true ;
}
/////////////////////// End compute_total_direct ///////////////

///////////////////// compute_total_direct_percentage ////////////////////
function compute_total_direct_percentage()
{
//	alert("compute_total_direct_percentage") ;

	if (   ( isSomeValue( document.salesperson_cost.revenue_target.value ) != false )
		&& ( isSomeValue( document.salesperson_cost.total_direct.value ) != false ) )
	{
		t_total_direct_percentage	= computeRatio(document.salesperson_cost.total_direct.value,
													document.salesperson_cost.revenue_target.value) ;
		document.salesperson_cost.total_direct_percentage.value = t_total_direct_percentage ;
	}
	else
		document.salesperson_cost.total_direct_percentage.value = "" ;
	
	return ;
}
/////////////// end compute_total_direct_percentage //////

///////////////////////// compute_benefit_medicare_percentage ////////////////
function compute_benefit_medicare_percentage()
{
//	alert("compute_benefit_medicare_percentage")
//	alert(document.salesperson_cost.benefit_medicare_percentage.value);

	//Compute the medicare benefits bonus as a % of direct compensation
	if (   ( isSomeValue( document.salesperson_cost.total_direct.value ) != false )
		&& ( isSomeValue( document.salesperson_cost.benefit_medicare.value ) != false ) )
	{
		t_benefit_medicare_percentage	= computeRatio(document.salesperson_cost.benefit_medicare.value,
													document.salesperson_cost.total_direct.value) ;

		document.salesperson_cost.benefit_medicare_percentage.value = t_benefit_medicare_percentage ;
	}
	else
		document.salesperson_cost.benefit_medicare_percentage.value = "" ;	

	return true ;
}
/////////////////////// End compute_benefit_medicare_percentage ///////////////

///////////////////////// compute_benefit_medical_percentage ////////////////
function compute_benefit_medical_percentage()
{
//	alert("compute_benefit_medical_percentage")
//	alert(document.salesperson_cost.benefit_medical_percentage.value);

	//Compute the medical benefits bonus as a % of direct compensation
	if (   ( isSomeValue( document.salesperson_cost.total_direct.value ) != false )
		&& ( isSomeValue( document.salesperson_cost.benefit_medical.value ) != false ) )
	{
		t_benefit_medical_percentage	= computeRatio(document.salesperson_cost.benefit_medical.value,
													document.salesperson_cost.total_direct.value) ;

		document.salesperson_cost.benefit_medical_percentage.value = t_benefit_medical_percentage ;
	}
	else
		document.salesperson_cost.benefit_medical_percentage.value = "" ;	

	return true ;
}
/////////////////////// End compute_benefit_medical_percentage ///////////////

///////////////////////// compute_benefit_pension_percentage ////////////////
function compute_benefit_pension_percentage()
{
//	alert("compute_benefit_pension_percentage")
//	alert(document.salesperson_cost.benefit_pension_percentage.value);

	//Compute the pension benefits bonus as a % of direct compensation
	if (   ( isSomeValue( document.salesperson_cost.total_direct.value ) != false )
		&& ( isSomeValue( document.salesperson_cost.benefit_pension.value ) != false ) )
	{
		t_benefit_pension_percentage	= computeRatio(document.salesperson_cost.benefit_pension.value,
													document.salesperson_cost.total_direct.value) ;

		document.salesperson_cost.benefit_pension_percentage.value = t_benefit_pension_percentage ;
	}
	else
		document.salesperson_cost.benefit_pension_percentage.value = "" ;	

	return true ;
}
/////////////////////// End compute_benefit_pension_percentage ///////////////

///////////////////////// compute_total_benefits ////////////////
function compute_total_benefits()
{
//	alert("compute_total_benefits")
//	alert(document.salesperson_cost.total_benefits.value);

	t_benefits_medicare	=   new String( document.salesperson_cost.benefit_medicare.value ) ;
	t_benefits_medical	=   new String( document.salesperson_cost.benefit_medical.value ) ;
	t_benefits_pension	=   new String( document.salesperson_cost.benefit_pension.value ) ;

	t_total_benefits	= 0 ;
	if ( isSomeValue( t_benefits_medicare ) != false )
	{
		t_benefits_medicare	= removeLeadDollar ( removeComma ( t_benefits_medicare ) ) ;
		t_total_benefits		+=	parseFloat( t_benefits_medicare ) ;
	}

	if ( isSomeValue( t_benefits_medical ) != false )
	{
		t_benefits_medical	= removeLeadDollar ( removeComma ( t_benefits_medical ) ) ;
		t_total_benefits		+=	parseFloat( t_benefits_medical ) ;
	}

	if ( isSomeValue( t_benefits_pension ) != false )
	{
		t_benefits_pension	= removeLeadDollar ( removeComma ( t_benefits_pension ) ) ;
		t_total_benefits		+=	parseFloat( t_benefits_pension ) ;
	}

	ret = formatCurrency( t_total_benefits, "noMkDecimal" ) ;
	if ( ret == false )
	{
//		alert("Something is wrong. The Total benefits Compensation is not correct") ;
//		document.salesperson_cost.base_salary.focus();
//		return false;
	}

	t_total_benefits = ret ;
	document.salesperson_cost.total_benefits.value = t_total_benefits ;

	// Check if total benefits is greater than revenue
	if ( isSomeValue( document.salesperson_cost.revenue_target.value ) != false )
	{
		if ( compareFinAmount(document.salesperson_cost.revenue_target.value, t_total_benefits)  == -1 )
		{
			alert("The total benefits compensation needs to less than Revenue Target") ;
			document.salesperson_cost.revenue_target.focus();
			return false;
		}
	}

	return true ;
}
/////////////////////// End compute_total_benefits ///////////////

///////////////////// compute_total_benefits_percentage ////////////////////
function compute_total_benefits_percentage()
{
//	alert("compute_total_benefits_percentage") ;

	//Compute total benefits bonus as a % of direct compensation
	if (   ( isSomeValue( document.salesperson_cost.total_direct.value ) != false )
		&& ( isSomeValue( document.salesperson_cost.total_benefits.value ) != false ) )
	{
		t_total_benefits_percentage	= computeRatio(document.salesperson_cost.total_benefits.value,
													document.salesperson_cost.total_direct.value) ;

		document.salesperson_cost.total_benefits_percentage.value = t_total_benefits_percentage ;
	}
	else
		document.salesperson_cost.total_benefits_percentage.value = "" ;	
	
	return ;
}
/////////////// end compute_total_benefits_percentage //////

///////////////////// compute_total_reimbursed_percentage ////////////////////
function compute_total_reimbursed_percentage()
{
//	alert("compute_total_reimbursed_percentage") ;

	//Compute total reinbursed expense as a % of sales
	if (   ( isSomeValue( document.salesperson_cost.revenue_target.value ) != false )
		&& ( isSomeValue( document.salesperson_cost.total_reimbursed.value ) != false ) )
	{
		t_total_reimbursed_percentage	= computeRatio(document.salesperson_cost.total_reimbursed.value,
													document.salesperson_cost.revenue_target.value) ;

		document.salesperson_cost.total_reimbursed_percentage.value = t_total_reimbursed_percentage ;
	}
	else
		document.salesperson_cost.total_reimbursed_percentage.value = "" ;	
	
	return ;
}
/////////////// end compute_total_benefits_percentage //////

///////////////////////// compute_total_cost ////////////////
function compute_total_cost()
{
//	alert("compute_total_cost")
//	alert(document.salesperson_cost.total_cost.value);

	t_total_direct		=   new String( document.salesperson_cost.total_direct.value ) ;
	t_total_benefits	=   new String( document.salesperson_cost.total_benefits.value ) ;
	t_total_reimbursed	=   new String( document.salesperson_cost.total_reimbursed.value ) ;

	t_total_cost	= 0 ;
	if ( isSomeValue( t_total_direct ) != false )
	{
		t_total_direct		= 	removeLeadDollar ( removeComma ( t_total_direct ) ) ;
		t_total_cost		+=	parseFloat( t_total_direct ) ;
	}

	if ( isSomeValue( t_total_benefits ) != false )
	{
		t_total_benefits	= removeLeadDollar ( removeComma ( t_total_benefits ) ) ;
		t_total_cost		+=	parseFloat( t_total_benefits ) ;
	}

	if ( isSomeValue( t_total_reimbursed ) != false )
	{
		t_total_reimbursed	= removeLeadDollar ( removeComma ( t_total_reimbursed ) ) ;
		t_total_cost		+=	parseFloat( t_total_reimbursed ) ;
	}

	ret = formatCurrency( t_total_cost, "noMkDecimal" ) ;
	if ( ret == false )
	{
//		alert("Something is wrong. The Total benefits Compensation is not correct") ;
//		document.salesperson_cost.base_salary.focus();
//		return false;
	}

	t_total_cost = ret ;
	document.salesperson_cost.total_cost.value = t_total_cost ;

	// Check if total cost is greater than revenue
	if ( compareFinAmount(document.salesperson_cost.revenue_target.value, t_total_cost)  == -1 )
	{
		if ( isSomeValue( document.salesperson_cost.revenue_target.value ) != false )
		{
			alert("The total cost of the sales person needs to less than Revenue Target") ;
			document.salesperson_cost.revenue_target.focus();
			return false;
		}
	}

	return true ;
}
/////////////////////// End compute_total_cost ///////////////

///////////////////// compute_total_cost_percentage ////////////////////
function compute_total_cost_percentage()
{
//	alert("compute_total_cost_percentage") ;

	if (   ( isSomeValue( document.salesperson_cost.revenue_target.value ) != false )
		&& ( isSomeValue( document.salesperson_cost.total_cost.value ) != false ) )
	{
		t_total_cost_percentage	= computeRatio(document.salesperson_cost.total_cost.value,
													document.salesperson_cost.revenue_target.value) ;
		document.salesperson_cost.total_cost_percentage.value = t_total_cost_percentage ;
	}
	else
		document.salesperson_cost.total_cost_percentage.value = "" ;
	
	return true ;
}
/////////////// end compute_total_cost_percentage //////

///////////////////// compute_per_day_cost ////////////////////
function compute_per_day_cost()
{
//	alert("compute_per_day_cost") ;

	t_total_cost		=   new String( document.salesperson_cost.total_cost.value ) ;
	t_num_work_days		=   new String( document.salesperson_cost.num_work_days.value ) ;
	t_per_day_cost		= 	0 ;

	if (   ( isSomeValue( t_total_cost ) != false )
		&& ( isSomeValue( t_num_work_days ) != false ) )
	{
		t_per_day_cost		= 	computeRatio(t_total_cost, (t_num_work_days*100) ) ;

		ret = formatCurrency( t_per_day_cost, "MkDecimal" ) ;
		if ( ret == false )
		{
//			alert("Something is wrong. The Total benefits Compensation is not correct") ;
//			document.salesperson_cost.base_salary.focus();
//			return false;
		}

		document.salesperson_cost.per_day_cost.value = ret ;
	}
	else
		document.salesperson_cost.per_day_cost.value = "" 
	
	return true ;
}
/////////////// end compute_per_day_cost //////

///////////////////// compute_per_hour_cost ////////////////////
function compute_per_hour_cost()
{
//	alert("compute_per_hour_cost") ;

	t_num_hours			= 8 ;
	t_per_day_cost		= new String( document.salesperson_cost.per_day_cost.value ) ;

	if ( isSomeValue( t_per_day_cost ) != false )
	{
		t_per_hour_cost		= 	computeRatio(t_per_day_cost, (t_num_hours*100)) ;
	
		ret = formatCurrency( t_per_hour_cost, "MkDecimal" ) ;
		if ( ret == false )
		{
//			alert("Something is wrong. The Total benefits Compensation is not correct") ;
//			document.salesperson_cost.base_salary.focus();
//			return false;
		}

		document.salesperson_cost.per_hour_cost.value = ret ;
	}
	else
		document.salesperson_cost.per_hour_cost.value = "" ;

	return true ;
}
/////////////// end compute_per_hour_cost //////

///////////////////// compute_sales_call_cost ////////////////////
function compute_sales_call_cost()
{
//	alert("compute_sales_call_cost") ;
//Compute Cost per sales visit

	t_per_day_cost		= new String( document.salesperson_cost.per_day_cost.value ) ;
	t_num_sales_visits	= new String( document.salesperson_cost.num_sales_visits.value ) ;

	if (   ( isSomeValue( t_per_day_cost ) != false )
		&& ( isSomeValue( t_num_sales_visits ) != false ) )
	{
		t_sales_call_cost	= 	computeRatio(t_per_day_cost, (t_num_sales_visits*100)) ;

		ret = formatCurrency( t_sales_call_cost, "MkDecimal" ) ;
		if ( ret == false )
		{
//			alert("Something is wrong. The Total benefits Compensation is not correct") ;
//			document.salesperson_cost.base_salary.focus();
//			return false;
		}

		document.salesperson_cost.sales_call_cost.value = ret ;
	}
	else
		document.salesperson_cost.sales_call_cost.value = "" ;

	return true ;
}
/////////////// end compute_sales_call_cost //////

///////////////////// compute_sales_driving_cost ////////////////////
function compute_sales_driving_cost()
{
//	alert("compute_sales_driving_cost") ;

//Compute Cost per sales visit
	t_per_hour_cost				= 	document.salesperson_cost.per_hour_cost.value  ;
	t_sales_driving_percetage	= 	document.salesperson_cost.sales_driving_percetage.value ;

	if (   ( isSomeValue( t_per_hour_cost ) != false )
		&& ( isSomeValue( t_sales_driving_percetage ) != false ) )
	{
		t_sales_driving_cost	= 	computeRatio(t_per_hour_cost, t_sales_driving_percetage ) ;

		ret = formatCurrency( t_sales_driving_cost, "MkDecimal" ) ;
		if ( ret == false )
		{
//			alert("Something is wrong. The Total benefits Compensation is not correct") ;
//			document.salesperson_cost.base_salary.focus();
//			return false;
		}

		document.salesperson_cost.sales_driving_cost.value = ret ;
	}
	else
		document.salesperson_cost.sales_driving_cost.value = "" ;

	return true ;
}
/////////////// end compute_sales_driving_cost //////

///////////////////// compute_roi_related ////////////////////
function compute_roi_related()
{
//	alert("compute_roi_related") ;

	t_revenue_target			=   new String( document.salesperson_cost.revenue_target.value ) ;
	t_gross_margin				=	new String(	document.salesperson_cost.gross_margin.value );
	t_total_cost				=	new String( document.salesperson_cost.total_cost.value ) ;
	
	t_num_work_days				=   new String( document.salesperson_cost.num_work_days.value ) ;
	t_num_hours					= 	8 ;
	t_sales_driving_percetage	= 	new String( document.salesperson_cost.sales_driving_percetage.value ) ;
	t_num_sales_visits			= 	new String( document.salesperson_cost.num_sales_visits.value ) ;

	t_per_day_revenue			= "" ;
	t_per_hour_revenue			= "" ;
	t_sales_call_revenue		= "" ;
	t_sales_driving_revenue		= "" ;
	t_roi_salesperson			= "" ;

	//Compute Revenue Per Day
	if (   ( isSomeValue( t_revenue_target ) != false )
		&& ( isSomeValue( t_num_work_days ) != false ) )
	{
		t_per_day_revenue	= 	computeRatio(t_revenue_target, (t_num_work_days*100) ) ;

		ret = formatCurrency( t_per_day_revenue, "noMkDecimal" ) ;
		document.salesperson_cost.per_day_revenue.value = ret ;
	}
	else
		document.salesperson_cost.per_day_revenue.value = "" ;

	//Compute Revenue Per hour
	if ( isSomeValue( t_per_day_revenue ) != false )
	{
		t_per_hour_revenue	= 	computeRatio(t_per_day_revenue, (t_num_hours*100) ) ;

		ret = formatCurrency( t_per_hour_revenue, "noMkDecimal" ) ;
		document.salesperson_cost.per_hour_revenue.value = ret ;
	}
	else
		document.salesperson_cost.per_hour_revenue.value = "" ;

	//Compute Revenue Sales Call
	if (   ( isSomeValue( t_per_day_revenue ) != false )
		&& ( isSomeValue( t_num_sales_visits ) != false ) )
	{
		t_sales_call_revenue	= 	computeRatio(t_per_day_revenue, (t_num_sales_visits*100) ) ;

		ret = formatCurrency( t_sales_call_revenue, "noMkDecimal" ) ;
		document.salesperson_cost.sales_call_revenue.value = ret ;
	}
	else
		document.salesperson_cost.sales_call_revenue.value = "" ;

	//Compute Revenue per sales driving hour
	if (   ( isSomeValue( t_per_hour_revenue ) != false )
		&& ( isSomeValue( t_sales_driving_percetage ) != false ) )
	{
		t_sales_driving_revenue = computeRatio(t_per_hour_revenue, t_sales_driving_percetage ) ;

		ret = formatCurrency( t_sales_driving_revenue, "noMkDecimal" ) ;
		document.salesperson_cost.sales_driving_revenue.value = ret ;
	}
	else
		document.salesperson_cost.sales_driving_revenue.value = "" ;

	//Compute ROI On Sales Person
	if (   ( isSomeValue( t_revenue_target ) != false )
		&& ( isSomeValue( t_gross_margin ) != false ) 
		&& ( isSomeValue( t_total_cost ) != false ) )
	{
		t_gross_profit	= 0 ;
		t_gross_proft	= computeShare(t_revenue_target, t_gross_margin ) ;
		t_temp			= removeLeadDollar ( removeComma ( t_total_cost ) ) ;
		t_return		= t_gross_proft - t_temp ;

		t_roi_salesperson = computeRatio(t_return, t_total_cost ) ;

		ret = removeLeadDollar ( formatCurrency( t_roi_salesperson, "noMkDecimal" ) ) ;
		document.salesperson_cost.roi_salesperson.value = ret ;
	}
	else
		document.salesperson_cost.roi_salesperson.value = "" ;

	return true ;
}
/////////////// end compute_roi_related //////

///////////////////// sp_reset_form ////////////////////
function sp_reset_form()
{
//	alert("sp_reset_form") ;

	document.salesperson_cost.base_salary.value					= "" ;
	document.salesperson_cost.revenue_target.value				= "" ;
	document.salesperson_cost.gross_margin.value				= "" ;

	document.salesperson_cost.sales_comm.value					= "" ;
	document.salesperson_cost.sales_percentage.value			= "" ;
	document.salesperson_cost.margin_comm.value					= "" ;
	document.salesperson_cost.margin_percentage.value			= "" ;
	document.salesperson_cost.bonus.value						= "" ;
	document.salesperson_cost.bonus_percentage.value			= "" ;

	document.salesperson_cost.total_direct.value				= "" ;
	document.salesperson_cost.total_direct_percentage.value		= "" ;

	document.salesperson_cost.benefit_medicare.value			= "" ;
	document.salesperson_cost.benefit_medicare_percentage.value	= "" ;
	document.salesperson_cost.benefit_medical.value				= "" ;
	document.salesperson_cost.benefit_medical_percentage.value	= "" ;
	document.salesperson_cost.benefit_pension.value				= "" ;
	document.salesperson_cost.benefit_pension_percentage.value	= "" ;
	document.salesperson_cost.total_benefit.value				= "" ;
	document.salesperson_cost.total_benefits_percentage.value	= "" ;

	document.salesperson_cost.total_reimbursed.value			= "" ;
	document.salesperson_cost.reimbursed_percentage.value		= "" ;

	document.salesperson_cost.total_cost.value					= "" ;
	document.salesperson_cost.total_cost_percentage.value		= "" ;

	document.salesperson_cost.num_work_days.value				= "" ;
	document.salesperson_cost.per_day_cost.value				= "" ;
	document.salesperson_cost.per_hour_cost.value				= "" ;
	document.salesperson_cost.num_sales_visit.value				= "" ;
	document.salesperson_cost.sales_call_cost.value				= "" ;
	document.salesperson_cost.sales_driving_percetage.value		= "" ;
	document.salesperson_cost.sales_driving_cost.value			= "" ;

	document.salesperson_cost.per_day_revenue.value				= "" ;
	document.salesperson_cost.per_hour_revenue.value			= "" ;
	document.salesperson_cost.sales_call_revenue.value			= "" ;
	document.salesperson_cost.sales_driving_revenue.value		= "" ;
	
	document.salesperson_cost.roi_salesperson.value				= "" ;

	document.salesperson_cost.base_salary.focus() ;
	return true ;
}
//////////////////// End sp_reset_form ///////////////////

///////////// sp_validate_form /////////////
function sp_validate_form()
{
	alert("sp_validate_form") ;
}
///////////////////// sp_validate_form ///////////////////

///////////// sp_recompute_form /////////////
function sp_recompute_form()
{
//	alert("sp_recompute_form") ;

	compute_sales_comm() ;
	compute_margin_comm() ;
	compute_bonus_percentage() ;

	compute_total_direct() ;
	compute_total_direct_percentage() ;

	compute_benefit_medicare_percentage() ;
	compute_benefit_medical_percentage() ;
	compute_benefit_pension_percentage() ;
	compute_total_benefits() ;
	compute_total_benefits_percentage() ;

	compute_total_reimbursed_percentage() ;

	compute_total_cost() ;
	compute_total_cost_percentage() ;

	compute_per_day_cost() ;
	compute_per_hour_cost() ;
	compute_sales_call_cost() ;
	compute_sales_driving_cost() ;
	
	compute_roi_related() ;

	return ;
}
///////////////////// sp_recompute_form ///////////////////

///////////// compute_cost_based_functions /////////////
function compute_cost_based_functions()
{
//	alert("compute_cost_based_functions") ;

/*********************** All functions *************
	compute_sales_comm() ;
	compute_margin_comm() ;
	compute_bonus_percentage() ;
	compute_total_direct() ;
	compute_total_direct_percentage() ;
	compute_benefit_medicare_percentage() ;
	compute_benefit_medical_percentage() ;
	compute_benefit_pension_percentage() ;
	compute_total_benefits() ;
	compute_total_benefits_percentage() ;
	compute_total_reimbursed_percentage() ;
	compute_total_cost() ;
	compute_total_cost_percentage() ;
	
	compute_per_day_cost() ;
	compute_per_hour_cost() ;
	compute_sales_call_cost() ;
	compute_sales_driving_cost() ;
************** end all functions ***********************/

	//Compute the bonus as a % of salary
	compute_bonus_percentage() ;

	//Compute the total direct compensation
	compute_total_direct() ;
	compute_total_direct_percentage() ;

	//Compute the benefist related compensation
	compute_benefit_medicare_percentage() ;
	compute_benefit_medical_percentage() ;
	compute_benefit_pension_percentage() ;
	compute_total_benefits() ;
	compute_total_benefits_percentage() ;

	//Compute the total cost
	compute_total_cost() ;
	compute_total_cost_percentage() ;

	//Compute the rates & ratios
	compute_per_day_cost() ;
	compute_per_hour_cost() ;
	compute_sales_call_cost() ;
	compute_sales_driving_cost() ;
	compute_roi_related() ;

	return ;
}
///////////////////// compute_cost_based_functions ///////////////////

///////////// compute_revenue_based_functions /////////////
function compute_revenue_based_functions()
{
//	alert("compute_revenue_based_functions") ;

/*********************** All functions *************
	compute_sales_comm() ;
	compute_margin_comm() ;
	compute_bonus_percentage() ;
	compute_total_direct() ;
	compute_total_direct_percentage() ;
	compute_benefit_medicare_percentage() ;
	compute_benefit_medical_percentage() ;
	compute_benefit_pension_percentage() ;
	compute_total_benefits() ;
	compute_total_benefits_percentage() ;
	compute_total_reimbursed_percentage() ;
	compute_total_cost() ;
	compute_total_cost_percentage() ;
	
	compute_per_day_cost() ;
	compute_per_hour_cost() ;
	compute_sales_call_cost() ;
	compute_sales_driving_cost() ;
************** end all functions ***********************/

	//Compute the total direct compensation as a % of sales
	compute_total_direct_percentage() ;

	//Compute the total reimbursed as a % of sales
	compute_total_reimbursed_percentage() ;

	//Compute the total cost as a % of sales
	compute_total_cost_percentage() ;

	return ;
}
///////////////////// compute_revenue_based_functions ///////////////////

///////////////////// sp_validate_salary ////////////////
function sp_validate_salary()
{
//	alert("sp_validate_salary")
//	alert( document.salesperson_cost.base_salary.value )

	if ( isSomeValue( document.salesperson_cost.base_salary.value ) == false )
	{
		sp_reset_form() ;
		return true ;
	}
	
	ret = formatCurrency( document.salesperson_cost.base_salary.value, "noMkDecimal" ) ;
	if ( ret == false )
	{
		alert("Please enter a valid base salary! The valid values are 0-9, '.'") ;
		document.salesperson_cost.base_salary.focus();
		return false;
	}
	else
		document.salesperson_cost.base_salary.value = ret ;

	//Re Compute all cost based fields
	compute_cost_based_functions() ;

	return true ;
}
/////////////////// End sp_validate_salary /////////////

////////////////// sp_validate_revenue /////////////////
function sp_validate_revenue()
{
//	alert("sp_validate_revenue")
//	alert(document.salesperson_cost.revenue_target.value);

	if ( isSomeValue( document.salesperson_cost.revenue_target.value ) == false )
	{
		compute_revenue_based_functions() ;
		return true ;
	}

	ret = formatCurrency( document.salesperson_cost.revenue_target.value, "noMkDecimal" ) ;

	if ( ret == false )
	{
		alert("Please enter a valid revenue target! The valid values are 0-9, '.'") ;
		document.salesperson_cost.revenue_target.focus();
		return false;
	}
	else
		document.salesperson_cost.revenue_target.value = ret ;

	if ( compareFinAmount(document.salesperson_cost.revenue_target.value, 
						document.salesperson_cost.base_salary.value)  == -1 )
	{
		alert("Please enter revenue target greater than base salary") ;
		document.salesperson_cost.revenue_target.focus();
		return false;
	}

	//Compute all revenue based fucntions
	compute_revenue_based_functions() ;

	return true ;
}
//////////////////// End sp_validate_revenue ////////////

/////////////////// sp_validate_margin ///////////////
function sp_validate_margin()
{
//	alert("sp_validate_margin")
//	alert(document.salesperson_cost.gross_margin.value);

// ********* Validate gross margin
	if ( isSomeValue(document.salesperson_cost.gross_margin.value) != false )
	{
		if (  isNumber(document.salesperson_cost.gross_margin.value) == false )
		{
			alert("Invalid Value: The gross margin value needs to be between 0 and 100 !") ;
			document.salesperson_cost.gross_margin.focus();
			return false;
		}

/************** Gross margin could be more than 100%
		if (  isRatio(document.salesperson_cost.gross_margin.value) == false )
		{
			alert("Invalid Value: The gross margin value needs to be between 0 and 100 !") ;
			document.salesperson_cost.gross_margin.focus();
			return false;
		}
************************************/
	}

	//Compute all cost based fucntions
	compute_cost_based_functions() ;

	return true ;
}
/////////////////// End sp_validate_margin ///////////

/////////////////// sp_validate_sales_percentage ///////////////
function sp_validate_sales_percentage()
{
//	alert("sp_validate_sales_percentage")
//	alert(document.salesperson_cost.sales_percentage.value);

	t_sales_percentage = document.salesperson_cost.sales_percentage.value ;

	if ( isSomeValue( t_sales_percentage ) != false )
	{
		if (  isNumber( t_sales_percentage ) == false )
		{
			alert("Invalid Value: The commission % based upon Revenue needs to be between 0 and 100 !") ;
			document.salesperson_cost.sales_percentage.focus();
			return false;
		}

		if (  isRatio( t_sales_percentage ) == false )
		{
			alert("Invalid Value: The commission % based upon Revenue needs to be between 0 and 100 !") ;
			document.salesperson_cost.sales_percentage.focus();
			return false;
		}
	}

	//Compute all Sales Commission
	compute_sales_comm() ;

	//Compute all cost based fucntions
	compute_cost_based_functions() ;
	
	return true ;
}
///////////////////// End sp_validate_sales_percentage ///////////////////

///////////////////////// sp_validate_margin_percentage ////////////////
function sp_validate_margin_percentage()
{
//	alert("sp_validate_margin_percentage")
//	alert(document.salesperson_cost.margin_percentage.value);

	t_margin_percentage = document.salesperson_cost.margin_percentage.value ;

	if ( isSomeValue( t_margin_percentage ) != false )
	{
		if (  isNumber( t_margin_percentage ) == false )
		{
			alert("The commission % based upon gross margin needs to be between 0 and 100 !") ;
			document.salesperson_cost.margin_percentage.focus();
			return false;
		}

		if (  isRatio( t_margin_percentage ) == false )
		{
			alert("The commission % based upon gross margin needs to be between 0 and 100 !") ;
			document.salesperson_cost.margin_percentage.focus();
			return false;
		}

		if (  isSomeValue(document.salesperson_cost.gross_margin.value) == false )
		{
			alert("Please enter gross margin value is you want to compute commission as a % of gross margin") ;
			document.salesperson_cost.gross_margin.focus();
			return false;
		}
	}

	//Compute all Sales Commission
	compute_margin_comm() ;

	//Compute all cost based fucntions
	compute_cost_based_functions() ;

	return true ;
}
/////////////////////// End sp_validate_margin_percentage ///////////////

//////////////////// sp_validate_bonus ////////////////////
function sp_validate_bonus()
{
//	alert("sp_validate_bonus") ;
//	alert(document.salesperson_cost.bonus.value);

	// Check is amount is blank go to bonus_percentage
	if ( isSomeValue(document.salesperson_cost.bonus.value) != false )
	{
		// Validate Correct amount
		ret = formatCurrency( document.salesperson_cost.bonus.value, "noMkDecimal" ) ;
		if ( ret == false )
		{
			alert("Please enter a valid bonus amount! The valid values are 0-9, '.'")
			document.salesperson_cost.bonus.focus();
			return false;
		}
		else
			document.salesperson_cost.bonus.value = ret ;

		// Check if bonus is greater than revenue
		if ( compareFinAmount(document.salesperson_cost.revenue_target.value, 
								document.salesperson_cost.bonus.value)  == -1 )
		{
			alert("The bonus amount needs to be less than Revenue Target") ;
			document.salesperson_cost.bonus.focus();
			return false;
		}
	}

	//Compute all cost based fucntions
	compute_cost_based_functions() ;

	return true ;
}
///////////////////// End sp_validate_bonus //////////////////

//////////////////// sp_validate_benefit_medicare ////////////////////
function sp_validate_benefit_medicare()
{
//	alert("sp_validate_benefit_medicare") ;
//	alert(document.salesperson_cost.benefit_medicare.value);

	// Check is amount is then return
	if ( isSomeValue(document.salesperson_cost.benefit_medicare.value) != false )
	{
		// Validate Correct amount
		ret = formatCurrency( document.salesperson_cost.benefit_medicare.value, "noMkDecimal" ) ;
		if ( ret == false )
		{
			alert("Please enter a valid medicare benefits amount! The valid values are 0-9, '.'")
			document.salesperson_cost.benefit_medicare.focus();
			return false;
		}
		else
			document.salesperson_cost.benefit_medicare.value = ret ;

		// Check if medicare benefits is greater than revenue
		if ( compareFinAmount(document.salesperson_cost.revenue_target.value, 
								document.salesperson_cost.benefit_medicare.value)  == -1 )
		{
			alert("The medicare benefit amount needs to be less than Revenue Target") ;
			document.salesperson_cost.benefit_medicare.focus();
			return false;
		}
	}

	//Compute all cost based fucntions
	compute_cost_based_functions() ;

	return true ;
}
///////////////////// End sp_validate_benefit_medicare //////////////////

//////////////////// sp_validate_benefit_medical ////////////////////
function sp_validate_benefit_medical()
{
//	alert("sp_validate_benefit_medical") ;
//	alert(document.salesperson_cost.benefit_medical.value);

	// Check is amount is then return
	if ( isSomeValue(document.salesperson_cost.benefit_medical.value) != false )
	{
		// Validate Correct amount
		ret = formatCurrency( document.salesperson_cost.benefit_medical.value, "noMkDecimal" ) ;
		if ( ret == false )
		{
			alert("Please enter a valid healthcare benefits amount! The valid values are 0-9, '.'")
			document.salesperson_cost.benefit_medical.focus();
			return false;
		}
		else
			document.salesperson_cost.benefit_medical.value = ret ;

		// Check if healthcare benefits is greater than revenue
		if ( compareFinAmount(document.salesperson_cost.revenue_target.value, 
								document.salesperson_cost.benefit_medical.value)  == -1 )
		{
			alert("The health care benefit amount needs to be less than Revenue Target") ;
			document.salesperson_cost.benefit_medical.focus();
			return false;
		}
	}

	//Compute all cost based fucntions
	compute_cost_based_functions() ;

	return true ;
}
///////////////////// End sp_validate_benefit_medical //////////////////

//////////////////// sp_validate_benefit_pension ////////////////////
function sp_validate_benefit_pension()
{
//	alert("sp_validate_benefit_pension") ;
//	alert(document.salesperson_cost.benefit_pension.value);

	// Check is amount is blank go to bonus_percentage
	if ( isSomeValue(document.salesperson_cost.benefit_pension.value) != false )
	{
		// Validate Correct amount
		ret = formatCurrency( document.salesperson_cost.benefit_pension.value, "noMkDecimal" ) ;
		if ( ret == false )
		{
			alert("Please enter a valid pension benefits amount! The valid values are 0-9, '.'")
			document.salesperson_cost.benefit_pension.focus();
			return false;
		}
		else
			document.salesperson_cost.benefit_pension.value = ret ;

		// Check if pension benefits is greater than revenue
		if ( compareFinAmount(document.salesperson_cost.revenue_target.value, 
								document.salesperson_cost.benefit_pension.value)  == -1 )
		{
			alert("The Pension benefit amount needs to be less than Revenue Target") ;
			document.salesperson_cost.benefit_pension.focus();
			return false;
		}
	}

	//Compute all cost based fucntions
	compute_cost_based_functions() ;

	return true ;
}
///////////////////// End sp_validate_benefit_pension //////////////////

//////////////////// sp_validate_total_reimbursed ////////////////////
function sp_validate_total_reimbursed()
{
//	alert("sp_validate_total_reimbursed") ;
//	alert(document.salesperson_cost.total_reimbursed.value);

	// Check is amount is blank go to total_reimbursed_percentage
	if ( isSomeValue(document.salesperson_cost.total_reimbursed.value) != false )
	{
		// Validate Correct amount
		ret = formatCurrency( document.salesperson_cost.total_reimbursed.value, "noMkDecimal" ) ;
		if ( ret == false )
		{
			alert("Please enter a valid reimbursed expenses amount! The valid values are 0-9, '.'")
			document.salesperson_cost.total_reimbursed.focus();
			return false;
		}
		else
			document.salesperson_cost.total_reimbursed.value = ret ;

		// Check if reimbursed expenses is greater than revenue
		if ( compareFinAmount(document.salesperson_cost.revenue_target.value, 
								document.salesperson_cost.total_reimbursed.value)  == -1 )
		{
			alert("The reimbursed expense amount needs to be less than Revenue Target") ;
			document.salesperson_cost.total_reimbursed.focus();
			return false;
		}
	}

	//Compute total reimbursed as a % of revenue
	compute_total_reimbursed_percentage() ;

	//Compute all cost based fucntions
	compute_cost_based_functions() ;

	return true ;
}
///////////////////// End sp_validate_total_reimbursed //////////////////

//////////////////// sp_validate_num_work_days ////////////////////
function sp_validate_num_work_days()
{
//	alert("sp_validate_num_work_days") ;
//	alert(document.salesperson_cost.num_work_days.value);

	// Check if total_cost_percentage is blank then go to return
	if ( isSomeValue(document.salesperson_cost.total_cost_percentage.value) == false )
	{
		return true ;
	}

	// Check is Num of work days is blank then use 251
	if ( isSomeValue(document.salesperson_cost.num_work_days.value) == false )
	{
		document.salesperson_cost.num_work_days.value = 251 ;
	}

	// Validate Correct amount
	if ( isNumber ( document.salesperson_cost.num_work_days.value ) == false )
	{
		alert("Please enter valid number of annual work days! The valid values are 0-9, '.'") ;
		document.salesperson_cost.num_work_days.focus();
		return false;
	}

	// Validate Correct amount
	if ( document.salesperson_cost.num_work_days.value > 365 )
	{
		alert("Number of annual work days cant not be greater than 365") ;
		document.salesperson_cost.num_work_days.focus();
		return false;
	}

	//Compute Per Day Cost
	compute_per_day_cost() ;

	//Compute Per Hour Cost Cost
	compute_per_hour_cost() ;
	compute_roi_related() ;
	
	return true ;
}
///////////////////// End sp_validate_num_work_days //////////////////

//////////////////// sp_validate_num_sales_visits ////////////////////
function sp_validate_num_sales_visits()
{
//	alert("sp_validate_num_sales_visits") ;
//	alert(document.salesperson_cost.num_sales_visits.value);

	// Check if num_sales_visits is blank then return
	if ( isSomeValue(document.salesperson_cost.num_sales_visits.value) == false )
	{
		return true ;
	}

	// Validate Correct amount
	if ( isNumber ( document.salesperson_cost.num_sales_visits.value ) == false )
	{
		alert("Please enter valid number of customer visits per day! The valid values are 0-9, '.'") ;
		document.salesperson_cost.num_sales_visits.focus();
		return false;
	}

	//Compute Cost per sales visit
	compute_sales_call_cost() ;
	compute_roi_related() ;

	return true ;
}
///////////////////// End sp_validate_num_sales_visits //////////////////

//////////////////// sp_validate_sales_driving_percetage ////////////////////
function sp_validate_sales_driving_percetage()
{
//	alert("sp_validate_sales_driving_percetage") ;
//	alert(document.salesperson_cost.sales_driving_percetage.value);

	// Check if sales_driving_percetage is blank then return
	if ( isSomeValue(document.salesperson_cost.sales_driving_percetage.value) == false )
	{
		return true ;
	}

	// Validate Correct amount
	if ( isNumber ( document.salesperson_cost.sales_driving_percetage.value ) == false )
	{
		alert("% of Sales Driving Activities need to be between 0 and 100!") ;
		document.salesperson_cost.sales_driving_percetage.focus();
		return false;
	}

	// Validate Correct amount
	if ( isRatio ( document.salesperson_cost.sales_driving_percetage.value ) == false )
	{
		alert("% of Sales Driving Activities need to be between 0 and 100!") ;
		document.salesperson_cost.sales_driving_percetage.focus();
		return false;
	}

	//Compute Cost per sales visit
	compute_sales_driving_cost() ;
	compute_roi_related() ;

	return true ;
}
///////////////////// End sp_validate_sales_driving_percetage //////////////////
