function check_dates (stdate, enddate) {
	var errMsg = "";
	res1 = date_validator(stdate);
	res2 = date_validator(enddate);

	var date1 = stdate.substring(0,2);
	var month1 = stdate.substring(2,4);
	var year1 = stdate.substring(4,stdate.length);

	var date1_int = eval(date1);
	var month1_int = eval(month1);
	var year1_int= eval(year1);
	
	var date2 = enddate.substring(0,2);
	var month2 = enddate.substring(2,4);
	var year2 = enddate.substring(4,enddate.length);

	var date2_int = eval(date2);
	var month2_int = eval(month2);
	var year2_int= eval(year2);
	
	if(res1 == "" && res2 == "") {
		if(year2_int <= year1_int) {
			if(year2_int < year1_int)
				errMsg = "Start date should be before end date";
			else if(month2_int <= month1_int) {
				if(month2_int < month1_int)
					errMsg = "Start date should be before end date";
				else if(date2_int <= date1_int) {
					errMsg = "Start date should be before end date";
				}
				else if(!checkPeriod(stdate, enddate, 15)) {
					errMsg = "Please select at least a 15 day period";
				}
			}
			else if(!checkPeriod(stdate, enddate, 15)) {
				errMsg = "Please select at least a 15 day period";
			}
		}
		else if(!checkPeriod(stdate, enddate, 15)) {
			errMsg = "Please select at least a 15 day period";
		}
	}
	else {
		if(res1 != "")
			errMsg = "Error in start date : " + res1; 
		else if(res2 != "")
			errMsg = "Error in end date : " + res2; 
	}
	
	return errMsg;
}

function date_validator(datevalue) {
	var date=datevalue.substring(0,2);
	var month=datevalue.substring(2,4);
	var year =datevalue.substring(4,datevalue.length);

	var date_int = eval(date);
	var month_int = eval(month);
	var year_int= eval(year);
	
	var errMsg = "";

	if(month_int <= 12) {
		if(date_int!=0 && month_int!=0 && year_int!=0) {
			//check for month with 30 days
			if((month_int==4||month_int==6||month_int==9||month_int==11)&& date_int > 30) {
				errMsg = "This month cannot have more than 30 days";
				return errMsg;
			}
			else {
				//check for feb
				if(month_int==2) {
					if((year_int % 4 !=0 && year_int % 400 !=0) && date_int > 28) {
						errMsg = "February cannot have more than 28 days in this year.";
						return errMsg;
					}
					else {
						if ((year_int % 4 ==0 || year_int % 400 ==0) && date_int > 29) {
							errMsg = "February cannot have more than 29 days in this year.";
							return errMsg;
						}
						else {
							errMsg = "";
							return errMsg;
						}
					}
				}
				else {
					if(date_int > 31) {
						errMsg = "A month cannot have more than 31 days.";
						return errMsg;
					}
					else {
						errMsg = "";
						return errMsg;
					}
				}
			}
		}// date or month or year greater than  zero
		else {
			errMsg = "Enter valid date";
			return errMsg;
		}
	}//valid month
	else {
		errMsg = "Not a valid month";
		return errMsg;
	}
}//end of date validator function


function checkPeriod(stdate, enddate, interval) {

	var flag = true;
	interval--;
	
	var date1 = stdate.substring(0,2);
	var month1 = stdate.substring(2,4);
	var year1 = stdate.substring(4,stdate.length);

	var d1 = eval(date1);
	var m1 = eval(month1);
	var y1 = eval(year1);
	
	var date2 = enddate.substring(0,2);
	var month2 = enddate.substring(2,4);
	var year2 = enddate.substring(4,enddate.length);

	var d2 = eval(date2);
	var m2 = eval(month2);
	var y2 = eval(year2);

	if(y1 == y2) {
		if(m1 == m2) {
			if(d2 - d1 < interval) {
				flag = false;
			}
		}
		else if(m2 - m1 == 1) {
			var mthdays = 0;
			if(m1 == 2) {
				if(y1 % 4 == 0 || y1 % 400 == 0) mthdays = 29;
				else mthdays = 28;
			}
			else if (m1 == 4 || m1 == 6 || m1 == 9 || m1 == 11) {
				mthdays = 30;
			}
			else {
				mthdays = 31;
			}
			if(mthdays - d1 + d2 < interval) {
				flag = false;
			}
		}
	}
	else if(y2 - y1 == 1) {
		if(m1 == 12 && m2 == 1) {
			if(31 - d1 + d2 < interval) {
				flag = false;
			}
		}
	}
	
	return flag;
}

function validate() {

	var chtype = document.chartfrm.charttype.value;
	
	if(chtype == 'ONLINE_STOCK' || chtype == 'ONLINE_STOCK_INDEX') {
		var sym = document.chartfrm.symbol.value;
		var mkt = document.chartfrm.mkttype.value;
		
		if(sym == "") {
			if(mkt == 'S')
				alert('Please enter the security');
			else
				alert('Please enter the symbol');
			document.chartfrm.symbol.focus();
			return false;
		}
		else if(sym.length < 2) {
			if(mkt == 'S')
				alert('Please enter the correct security');
			else
				alert('Please enter the correct symbol');
			document.chartfrm.symbol.focus();
			return false;
		}
	}
	else if(chtype == 'ONLINE_STOCK_COMOVE') {
		var sym1 = document.chartfrm.symbol1.value;
		var sym2 = document.chartfrm.symbol2.value;
		var mkt = document.chartfrm.mkttype.value;
		
		if(sym1 == "") {
			if(mkt == 'S')
				alert('Please enter the first security');
			else
				alert('Please enter the first symbol');
			document.chartfrm.symbol1.focus();
			return false;
		}
		else if(sym1.length < 2) {
			if(mkt == 'S')
				alert('Please enter the correct security');
			else
				alert('Please enter the correct symbol');
			document.chartfrm.symbol1.focus();
			return false;
		}

		if(sym2 == "") {
			if(mkt == 'S')
				alert('Please enter the second security');
			else
				alert('Please enter the second symbol');
			document.chartfrm.symbol2.focus();
			return false;
		}
		else if(sym2.length < 2) {
			if(mkt == 'S')
				alert('Please enter the correct security');
			else
				alert('Please enter the correct symbol');
			document.chartfrm.symbol2.focus();
			return false;
		}
		
		if(sym1.toUpperCase() == sym2.toUpperCase()) {
			if(mkt == 'S')
				alert('Please enter two different securities');
			else
				alert('Please enter two different symbols');
			document.chartfrm.symbol2.focus();
			return false;
		}
	}
	else if(chtype == 'HIST_INDEX') {
		var stdate = document.chartfrm.stdate.value + document.chartfrm.stmonth.value + document.chartfrm.styear.value;
		var enddate = document.chartfrm.enddate.value + document.chartfrm.endmonth.value + document.chartfrm.endyear.value;
		var errmsg = check_dates(stdate, enddate);
		if(errmsg != "") {
			alert(errmsg);
			return false;
		}
	}
	else if(chtype == 'HIST_STOCK') {
		var sym = document.chartfrm.symbol.value;
		if(sym == "") {
			if(mkt == 'S')
				alert('Please enter the security');
			else
				alert("Enter the symbol");
			document.chartfrm.symbol.focus();
			return false;
		}
		else if(sym.length < 2) {
			if(mkt == 'S')
				alert('Please enter the correct security');
			else
				alert('Please enter the correct symbol');
			document.chartfrm.symbol.focus();
			return false;
		}
		
		var plot1 = document.chartfrm.plot1.value;
		var plot2 = document.chartfrm.plot2.value;
		var mkt = document.chartfrm.mkttype.value;

		if(plot1 == "" && plot2 == "") {
			alert("Select at least one parameter to plot");
			document.chartfrm.plot1.focus();
			return false;
		}
		else {
			if(plot1 == plot2) {
				alert("Select two different parameters to plot");
				document.chartfrm.plot2.focus();
				return false;
			}
			else {
				if(plot1 == 'INDEX' || plot2 == 'INDEX') {
					var index = document.chartfrm.indexname.value;
					if(index == "") {
						alert('Please select index');
						document.chartfrm.indexname.focus();
						return false;
					}
				}
				if (plot1 == 'INDEX' && plot2 == '') {
					alert('Please select one more parameter');
					document.chartfrm.plot2.focus();
					return false;
				}
				if (plot2 == 'INDEX' && plot1 == '') {
					alert('Please select one more parameter');
					document.chartfrm.plot1.focus();
					return false;
				}
				
				var stdate = document.chartfrm.stdate.value + document.chartfrm.stmonth.value + document.chartfrm.styear.value;
				var enddate = document.chartfrm.enddate.value + document.chartfrm.endmonth.value + document.chartfrm.endyear.value;
				var errmsg = check_dates(stdate, enddate);
				if(errmsg != "") {
					alert(errmsg);
					return false;
				}
			}
		}
	}
	else if(chtype == 'HIST_STOCK_COMOVE') {
		var sym1 = document.chartfrm.symbol1.value;
		var sym2 = document.chartfrm.symbol2.value;
		var mkt = document.chartfrm.mkttype.value;
		
		if(sym1 == "") {
			if(mkt == 'S')
				alert('Please enter the first security');
			else
				alert('Please enter the first symbol');
			document.chartfrm.symbol1.focus();
			return false;
		}
		else if(sym1.length < 2) {
			if(mkt == 'S')
				alert('Please enter the correct security');
			else
				alert('Please enter the correct symbol');
			document.chartfrm.symbol1.focus();
			return false;
		}

		if(sym2 == "") {
			if(mkt == 'S')
				alert('Please enter the second security');
			else
				alert('Please enter the second symbol');
			document.chartfrm.symbol2.focus();
			return false;
		}
		else if(sym2.length < 2) {
			if(mkt == 'S')
				alert('Please enter the correct security');
			else
				alert('Please enter the correct symbol');
			document.chartfrm.symbol2.focus();
			return false;
		}
		
		if(sym1.toUpperCase() == sym2.toUpperCase()) {
			if(mkt == 'S')
				alert('Please enter two different securities');
			else
				alert('Please enter two different symbols');
			document.chartfrm.symbol2.focus();
			return false;
		}

		var stdate = document.chartfrm.stdate.value + document.chartfrm.stmonth.value + document.chartfrm.styear.value;
		var enddate = document.chartfrm.enddate.value + document.chartfrm.endmonth.value + document.chartfrm.endyear.value;
		var errmsg = check_dates(stdate, enddate);
		if(errmsg != "") {
			alert(errmsg);
			return false;
		}
	}
        else
        if(chtype == 'ONLINE_INDEX_INDEX') {
                //alert('Inside 1');
                var index1 = document.chartfrm.symbol[document.chartfrm.symbol.selectedIndex].value;
                var index2 = document.chartfrm.indexname[document.chartfrm.indexname.selectedIndex].value;

                if(index1 == index2) {
                        alert('Please select different indices.');
                        return false;
                }
        }

}
