function checknull(txtbox, txtname)
{
  if (txtbox.value == '')
  {
    alert('Please enter ' + txtname);
    txtbox.focus();
    return false;	
  }
  return true;
}

function checkcombo(cmbbox,cmbname)
{
  cmbValue = cmbbox.options[cmbbox.selectedIndex].value;	
  if (cmbValue == "-1" || cmbValue == "")
  {
    alert(cmbname);
    cmbbox.focus();
    return false;	
  }
  return true; 
}




function validateDateSelection(objMM,objDD,objYY,lblDate){
	valMM = parseInt(objDD.options[objMM.selectedIndex].value);
	valDD = parseInt(objDD.options[objDD.selectedIndex].value);	
	valYY = parseInt(objDD.options[objYY.selectedIndex].value);
	
	if(valMM > 0 || valDD > 0 || valYY > 0){
		if(!checkcombo(objMM,'Please select the month of '+lblDate+'.') || !checkcombo(objDD,'Please select the day of '+lblDate+'.') || !checkcombo(objYY,'Please select the year of '+lblDate+'.') ){
				return false;
		}
	}	
	return true;
}

function validateFromToDate(){
	if(!validateDateSelection(objFromMM,objFromDD,objFromYY,lblFrom) || !validateDateSelection(objToMM,objToDD,objToYY,txtTo) ){
		return false;
	}
	return true;
}

function compareTwoDates(objFromMM,objFromDD,objFromYY,lblFrom,objToMM,objToDD,objToYY,lblTo)	
{
	if(!validateDateSelection(objFromMM,objFromDD,objFromYY,lblFrom) || !validateDateSelection(objToMM,objToDD,objToYY,lblTo) ){
		return false;
	}else{ 	
		objFromMMval	= parseInt(objFromMM.options[objFromMM.selectedIndex].value);
		objFromDDval	= parseInt(objFromDD.options[objFromDD.selectedIndex].value);
		objFromYYval	= parseInt(objFromYY.options[objFromYY.selectedIndex].value);

		objToMMval	= parseInt(objToMM.options[objToMM.selectedIndex].value);
		objToDDval	= parseInt(objToDD.options[objToDD.selectedIndex].value);
		objToYYval	= parseInt(objToYY.options[objToYY.selectedIndex].value);
		
		if(objFromMMval > 0 && objFromDDval > 0 && objFromYYval > 0 && objToMMval > 0 && objToDDval > 0 && objToYYval > 0 ){

			if(objFromDDval < objToDDval && objFromMMval <= objToMMval && objFromYYval <= objToYYval){
				alert(lblFrom+" must be greater than "+lblTo+".")	
				return false;
			}else if(parseInt(objFromMMval) < parseInt(objToMMval) && parseInt(objFromYYval) <= parseInt(objToYYval)){
				alert(lblFrom+" must be greater than "+lblTo+".")	
				return false;
			}else if(parseInt(objToYYval) < parseInt(objToYYval)){
				alert(lblFrom+" must be greater than "+lblTo+".")	
				return false;
			}
		}		
	}
	return true;	
}


function getMaxDaysOfAMonth(mm,yy){

	var max_days;
	if(mm == 4 || mm == 6 || mm == 9 || mm == 11){
		max_days = 30;	
	}else if(mm == 2){		// February			
		if(yy % 4 == 0){	// Leap Year
			max_days = 29;
		}else{				// Not a Leap Year
			max_days = 28;	
		}			
	}else{
		max_days = 31;
	}
	return max_days;
}


function setDate(objMM,objDD,objYY){
	
	var max_days;

	mm	= parseInt(objMM.options[objMM.selectedIndex].value);
	dd	= parseInt(objDD.options[objDD.selectedIndex].value);
	yy	= parseInt(objYY.options[objYY.selectedIndex].value);	
	
	max_days = getMaxDaysOfAMonth(mm,yy);
	
	
	l = objDD.length ;
	//deleting the day combo
	for(i=0;i<l;i++ ){
		objDD.options[0] = null;
	}				
		
	min_days = 1;
	l = (max_days -  min_days) + 1		
	//filling the data combo
	objDD.options[0] = new Option("Day",-1);
	for(i=1;i<=l;i++ ){
		objDD.options[i] = new Option(i-1+min_days,i-1+min_days);
	}	
	if(dd >= min_days && dd <= max_days){		
		objDD.options[dd].selected = true;
	}
		
}

function assignDateToHidden(objMM,objDD,objYY,objHidden){	
	
	var valMM = objMM.options[objMM.selectedIndex].value;
	var valDD = objDD.options[objDD.selectedIndex].value;	
	var valYY = objYY.options[objYY.selectedIndex].value;	
	
	if(valMM > 0 && valDD > 0 && valYY > 0){		
		if(parseInt(valMM) <10 ){
			valMM = "0"+valMM;
		}
		if(parseInt(valDD) <10 ){
			valDD = "0"+valDD;
		}
		objHidden.value = valMM+"/"+valDD+"/"+valYY;
	}else{
		objHidden.value = "";
	}
}

function onChangeDateCombo(objMM,objDD,objYY,objHidden,refillDay){
	if(parseInt(refillDay) == 1 ){
		setDate(objMM,objDD,objYY);
	}
	assignDateToHidden(objMM,objDD,objYY,objHidden);	
}

function valueToPercentage(gainValue,totalValue){
	
	var returnValue = 0.00;
	if(gainValue != "" && !isNaN(gainValue) && totalValue != "" && !isNaN(totalValue)){				
		returnValue = ((parseFloat(gainValue) * 100) / parseFloat(totalValue));	
		returnValue = round_decimals(returnValue,2);
	}	
	return returnValue;
}

function percentageToValue(perValue,ofValue){
	var returnValue = 0;
	removeCommas(perValue);
	removeCommas(ofValue);	
	if(perValue != "" && !isNaN(perValue) && ofValue != "" && !isNaN(ofValue)){				
		returnValue = ((parseFloat(ofValue) * parseFloat(perValue)) / 100);
		returnValue = round_decimals(returnValue,2);
	}	
	return returnValue;
}

function perValCalc(ObjAmount,ObjSrc,ObjDest,conversionFlag){	
	removeCommas(ObjAmount);
	removeCommas(ObjSrc);
	removeCommas(ObjDest);
	if(ObjAmount.value!="" && !isNaN(ObjAmount.value)){		
		if(conversionFlag == 'P'){								
			ObjDest.value = valueToPercentage(ObjSrc.value,ObjAmount.value);			
		}else if(conversionFlag == 'V'){			
			if(parseFloat(ObjSrc.value) > 100){				
				alert('Percentage cannot be greater than 100.')
				ObjSrc.value = 100;				
			}
			ObjDest.value  = percentageToValue(ObjSrc.value,ObjAmount.value);
		}		
	}else{
		if(conversionFlag == 'P'){								
			ObjDest.value = "";			
		}else if(conversionFlag == 'V'){						
			ObjDest.value  = "";
		}		
	
	}
}

function removeCommas(obj){
	var strValue = new String(obj.value);
	while(strValue.indexOf(',',0) > 0){
		strValue = strValue.replace(',','')
	}	
	obj.value = strValue;
}

function removeCommasVal(obj_val){
	var strValue = new String(obj_val);
	while(strValue.indexOf(',',0) > 0){
		strValue = strValue.replace(',','')
	}	
	return strValue;
}

function convertToFormatNumber(obj){
	var tempVar = eval(obj.value);
	obj.value = formatNumber(tempVar,",##0.00##");	
}

function initToZero(obj){
	//if(obj.value == "" || isNaN(obj.value)  ){	
	removeCommas(obj);
	if(obj.value == ""){
		obj.value = "0";
	}
	obj.value = obj.value;
}

function round_decimals(original_number, decimals) {
    var result1 = original_number * Math.pow(10, decimals)
    var result2 = Math.round(result1)
    var result3 = result2 / Math.pow(10, decimals)
    return pad_with_zeros(result3, decimals)
}

function pad_with_zeros(rounded_value, decimal_places) {

    var value_string = rounded_value.toString()
    var decimal_location = value_string.indexOf(".")

    if (decimal_location == -1) {
        
        decimal_part_length = 0
        
        value_string += decimal_places > 0 ? "." : ""
    }
    else {

        decimal_part_length = value_string.length - decimal_location - 1
    }
    
    var pad_total = decimal_places - decimal_part_length
    
    if (pad_total > 0) {
        
        for (var counter = 1; counter <= pad_total; counter++) 
            value_string += "0"
        }
    return value_string
}

function setDate(objMM,objDD,objYY){
	
	var max_days;

	mm	= parseInt(objMM.options[objMM.selectedIndex].value);
	dd	= parseInt(objDD.options[objDD.selectedIndex].value);
	yy	= parseInt(objYY.options[objYY.selectedIndex].value);	
	
	max_days = getMaxDaysOfAMonth(mm,yy);
	
	
	l = objDD.length ;
	//deleting the day combo
	for(i=0;i<l;i++ ){
		objDD.options[0] = null;
	}				
		
	min_days = 1;
	l = (max_days -  min_days) + 1		
	//filling the data combo
	objDD.options[0] = new Option("Day",-1);
	for(i=1;i<=l;i++ ){
		objDD.options[i] = new Option(i-1+min_days,i-1+min_days);
	}	
	if(dd >= min_days && dd <= max_days){		
		objDD.options[dd].selected = true;
	}
		
}

function assignDateToHidden(objMM,objDD,objYY,objHidden){	
	
	var valMM = objMM.options[objMM.selectedIndex].value;
	var valDD = objDD.options[objDD.selectedIndex].value;	
	var valYY = objYY.options[objYY.selectedIndex].value;	
	
	if(valMM > 0 && valDD > 0 && valYY > 0){		
		if(parseInt(valMM) <10 ){
			valMM = "0"+valMM;
		}
		if(parseInt(valDD) <10 ){
			valDD = "0"+valDD;
		}
		objHidden.value = valMM+"/"+valDD+"/"+valYY;
	}else{
		objHidden.value = "";
	}
}

function onChangeDateCombo(objMM,objDD,objYY,objHidden,refillDay){
	if(parseInt(refillDay) == 1 ){
		setDate(objMM,objDD,objYY);
	}
	assignDateToHidden(objMM,objDD,objYY,objHidden);	
}