
function preprocessMainForm(frmobj)
{	
	//alert("validation debug Start");
	
	if ( validateDate( "sel_ShareholdingDate", g_str_error_04 , frmobj) == false)
		{
			return false;
		}	
	
	if ( validateDateRangeWithInNYearMMonth( "sel_ShareholdingDate", g_str_error_04 , 1, 0, frmobj) == false)
		{
			return false;
		}
	
	if (frmobj.txt_stock_code != null
		 && frmobj.txt_stock_code.value != ""
		 && !isInteger(frmobj.txt_stock_code.value)) {
		alert(g_str_error_01);
		return false;
	}
	
	if (frmobj.txt_stock_code.value != "") {
		frmobj.txt_stock_code.value = addSTKCodeZero(frmobj.txt_stock_code.value);		
	}
	
	if (frmobj.txt_ParticipantID.value != "") {
		frmobj.txt_ParticipantID.value = frmobj.txt_ParticipantID.value.toUpperCase();		
	}	
	
	if (frmobj.txt_stock_name != null)
	{
		if (frmobj.txt_stock_code.value == "" && frmobj.txt_stock_name.value == "") 
		{
				alert(g_str_error_19);
				return false;
		}
	}
	
	if (frmobj.slt_stock_id != null)
	{		
		/*
		if (frmobj.slt_stock_id.value == "")
		{
				alert(g_str_error_22);
				return false;
		}
		*/
		// For alter checking
		// list exists, but not select from list
		if (frmobj.slt_stock_id.value == "" && frmobj.txt_stock_code.value == "")
		{
				alert(g_str_error_19);
				return false;			
		}	
	}
			
	if (frmobj.txt_stock_name != null)
	{
		if (frmobj.txt_stock_name.value != "" && frmobj.txt_stock_name.value.length < g_str_Parm_01) 
		{
				alert(g_str_error_20 + g_str_Parm_01 + g_str_error_23);
				return false;
		}	
	}

	if (frmobj.txt_Participant_name != null)
	{
		if (frmobj.txt_Participant_name.value != "" && frmobj.txt_Participant_name.value.length < g_str_Parm_01) 
		{
				alert(g_str_error_20 + g_str_Parm_01 + g_str_error_21);
				return false;
		}				
		
		/*
		if (g_str_Parm_01 == 1 && frmobj.txt_Participant_name.value.length == 1)
		{		
			if (isAlphabet(frmobj.txt_Participant_name.value) == true)
			{
				alert(g_str_error_24);
				return false;
			}
		}
		*/
	}
	
	if (frmobj.slt_stock_id != null)
	{
		if (frmobj.slt_stock_id.value != "")
		{
			frmobj.IsExist_Slt_Stock_Id.value = "True";
		}
	}
	
	if (frmobj.slt_part_id != null)
	{
		if (frmobj.slt_part_id.value != "")
		{
			frmobj.IsExist_Slt_Part_Id.value = "True";
		}
	}	
	
//alert(frmobj.slt_stock_id == null);	
//alert("validation debug end");
//return false;

	return true;
}

function validateDateRangeWithInNYearMMonth(d1_prefix, d1_desc, N_Year, M_Month, frmobj)
{
	var arrd1 = new Array(3);
	var arrd2 = new Array(3); // Today
	var arrd3 = new Array(3); // N year ago
	var d2_prefix = "txt_today";

	p_DateSelectBox1_d = frmobj[d1_prefix + "_d"];
	p_DateSelectBox1_m = frmobj[d1_prefix + "_m"];
	p_DateSelectBox1_y = frmobj[d1_prefix + "_y"];

	arrd1[0] = parseInt(p_DateSelectBox1_d.options[p_DateSelectBox1_d.selectedIndex].value, 10);
	arrd1[1] = parseInt(p_DateSelectBox1_m.options[p_DateSelectBox1_m.selectedIndex].value, 10);
	arrd1[2] = parseInt(p_DateSelectBox1_y.options[p_DateSelectBox1_y.selectedIndex].value, 10);

	arrd2[0] = parseInt(frmobj[d2_prefix + "_d"].value, 10);
	arrd2[1] = parseInt(frmobj[d2_prefix + "_m"].value, 10);
	arrd2[2] = parseInt(frmobj[d2_prefix + "_y"].value, 10);
	
	arrd3[0] = arrd2[0]
	
	if (arrd2[1] <= M_Month)
	{
		arrd3[1] = 12 + arrd2[1] - M_Month
		arrd3[2] = arrd2[2] - N_Year - 1
	}
	else
	{
		arrd3[1] = arrd2[1] - M_Month
		arrd3[2] = arrd2[2] - N_Year		
	}

	if (compareArray(arrd2, arrd1) <= 0) {
		alert(g_str_error_18);
		return false;
	}
	
	if (compareArray(arrd1, arrd3) < 0) {		
		alert(g_str_error_05);
		//alert(g_str_error_05 + ' ' + g_str_error_14 + N_Year + g_str_error_15 + g_str_error_16 + M_Month + g_str_error_17);
		return false;
	}	
	return true;
}





function compareArray(arrd1, arrd2)
{
	if ( arrd1[2] > arrd2[2] ) return 1;
	else if ( arrd1[2] < arrd2[2] ) return -1;

	if ( arrd1[1] > arrd2[1] ) return 1;
	else if ( arrd1[1] < arrd2[1] ) return -1;

	if ( arrd1[0] > arrd2[0] ) return 1;
	else if ( arrd1[0] < arrd2[0] ) return -1;
	else return 0;
}

function validateDate(d_prefix, d_desc, frmobj)
{
	var arrdate = new Array(3);

	p_DateSelectBox_d = frmobj[d_prefix + "_d"];
	p_DateSelectBox_m = frmobj[d_prefix + "_m"];
	p_DateSelectBox_y = frmobj[d_prefix + "_y"];

	arrdate[0] = parseInt(p_DateSelectBox_d.options[p_DateSelectBox_d.selectedIndex].value, 10);
	arrdate[1] = parseInt(p_DateSelectBox_m.options[p_DateSelectBox_m.selectedIndex].value, 10);
	arrdate[2] = parseInt(p_DateSelectBox_y.options[p_DateSelectBox_y.selectedIndex].value, 10);

	if (!isDateFormat(arrdate[0], arrdate[1], arrdate[2])) {
		alert( g_str_error_02 + d_desc + g_str_error_03);
		return false;
	}
	return true;
}

function isDateFormat(dd,mm,yyyy){
	// chk if standard date format, dd/mm/yyyy
	var febday, maxdd;
	febday = 28
	maxdd = 0
		
	if ((!isPosInteger(dd))||(!isPosInteger(mm))||(!isPosInteger(yyyy))) {
		return false;
	}
	if (yyyy ==0)
		return false;
	else {
		if ((yyyy % 4)==0) 
		{
			febday = 29 ;
		}
			
		if ((mm >= 13) || (mm <= 0))
		{		return false;
		}
		else {
			if (mm == 1)  
				maxdd = 31
			else if (mm == 2)  
				maxdd = febday
			else if (mm == 3)  
				maxdd = 31
			else if (mm == 4)  
				maxdd = 30
			else if (mm == 5)  
				maxdd = 31
			else if (mm == 6)  
				maxdd = 30
			else if (mm == 7)  
				maxdd = 31
			else if (mm == 8)  
				maxdd = 31
			else if (mm == 9)  
				maxdd = 30
			else if (mm == 10)  
				maxdd = 31
			else if (mm == 11)  
				maxdd = 30
			else if (mm == 12)  
				maxdd = 31
			if ((dd > maxdd) || (dd == 0)) return false;
		}
	}
	return true;
}

function isPosInteger( strVal ) {
	if(!(isInteger(strVal))) return false;
	else if(strVal<0) return false;
	else return true;
}

function isInteger( strVal ) {
	var bNum = isNumeric(strVal);
	if(bNum) {
		if(parseInt(strVal,10) != strVal) return false;
	}
	return bNum;
}

function isNumeric( strVal ) {
	if(isNaN( strVal * 1)) return false;
	else return true;
}

function isAlphabet(strVal){
	var alphaExp = /^[a-zA-Z]+$/;
	if(strVal.match(alphaExp)){
		return true;
	}else{
		return false;
	}
}
