
function preprocessMainForm(frmobj)
{
	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 != null) {
		frmobj.txt_stock_code.value = addSTKCodeZero(frmobj.txt_stock_code.value);
	}
	
	if (getRadioButtonSelectedValue (frmobj.rdo_SelectDateOfRelease)  == "ManualRange")
	{
		if ( validateDate( "sel_DateOfReleaseFrom", g_str_error_04 , frmobj) == false)
		{
			return false;
		}
		if ( validateDate( "sel_DateOfReleaseTo", g_str_error_04, frmobj) == false)
		{
			return false;
		}
		if ( validateDateRangeEqual ( "sel_DateOfReleaseFrom", "sel_DateOfReleaseTo", frmobj) == false)
		{
			return false;
		}
		if ( validateDateRangeToday ( "sel_DateOfReleaseFrom", g_str_error_04, frmobj) == false)
		{
			return false;
		}
		if ( validateDateRangeToday ( "sel_DateOfReleaseTo", g_str_error_04, frmobj) == false)
		{
			return false;
		}
		if (frmobj.txt_stock_code != null  && frmobj.txt_stock_code.value == ''
			&& frmobj.txt_stock_name != null  && frmobj.txt_stock_name.value == '' )
		 {
			if ( validateDateAllDocTypeSearchPeriod (frmobj) == false)
			{
				return false; 
			}
		}
	}
	else
	{
		if (frmobj.txt_stock_code != null  && frmobj.txt_stock_code.value == ''
			&& frmobj.txt_stock_name != null  && frmobj.txt_stock_name.value == '' )
		 {
		 	if ( validateDefaultDateRangeAllDocTypeSearchPeriod (frmobj) == false)
			{
				return false;
			}

			if ( isSearchForYear( frmobj) == false )
			{	
				return false;
			}
		}
	}
	
	return true;
}


function validateDateRangeToday(d1_prefix, d1_desc, frmobj)
{
	var arrd1 = new Array(3);
	var arrd2 = new Array(3);
	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);

	if (compareArray(arrd2, arrd1) < 0) {
		alert(g_str_error_06 + d1_desc + g_str_error_07);
		return false;
	}
	return true;
}

function validateDateRangeEqual(d1_prefix, d2_prefix, frmobj)
{
	var arrd1 = new Array(3);
	var arrd2 = new Array(3);

	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);

	p_DateSelectBox2_d = frmobj[d2_prefix + "_d"];
	p_DateSelectBox2_m = frmobj[d2_prefix + "_m"];
	p_DateSelectBox2_y = frmobj[d2_prefix + "_y"];

	arrd2[0] = parseInt(p_DateSelectBox2_d.options[p_DateSelectBox2_d.selectedIndex].value, 10);
	arrd2[1] = parseInt(p_DateSelectBox2_m.options[p_DateSelectBox2_m.selectedIndex].value, 10);
	arrd2[2] = parseInt(p_DateSelectBox2_y.options[p_DateSelectBox2_y.selectedIndex].value, 10);

	if (compareArray(arrd2, arrd1) < 0) {
		alert(g_str_error_05);
		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 getRadioButtonSelectedValue ( radioButton )
{
	var p_strButtonValue = "";
	for (p_intCounter = 0; p_intCounter < radioButton.length; p_intCounter ++ )
	{
		if (radioButton[p_intCounter].checked)
		{
			p_strButtonValue = radioButton[p_intCounter].value;
		}
	}
	return p_strButtonValue;
}

function monthDiff(d1_prefix, d2_prefix, frmobj)
{
	var arrd1 = new Array(3);
	var arrd2 = new Array(3);

	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);

	p_DateSelectBox2_d = frmobj[d2_prefix + "_d"];
	p_DateSelectBox2_m = frmobj[d2_prefix + "_m"];
	p_DateSelectBox2_y = frmobj[d2_prefix + "_y"];

	arrd2[0] = parseInt(p_DateSelectBox2_d.options[p_DateSelectBox2_d.selectedIndex].value, 10);
	arrd2[1] = parseInt(p_DateSelectBox2_m.options[p_DateSelectBox2_m.selectedIndex].value, 10);
	arrd2[2] = parseInt(p_DateSelectBox2_y.options[p_DateSelectBox2_y.selectedIndex].value, 10);

	var monthCount1 = arrd1[1] + arrd1[2] * 12;
	var monthCount2 = arrd2[1] + arrd2[2] * 12;
	
	return (monthCount2 - monthCount1);
}
