

/**
	Some of the constants and error message is prefixed here
*/

var DATE_ERROR = "Please enter valid calendar date in [1]";

/**
	This function display error message in alert box to the user. This function takes n number of parameters.

	@input errorMsg string which error message has to be displayed
	@params n number of parameter will replace the place holder in the error message

*/

function jsfDisplayErrorMessage(errorMsg) {
	var argv = arguments;
	var argc = arguments.length;
	for ( var i = 0; i < argc ; i++ ) {
		var re = new RegExp("\\["+i+"\\]","g");
		errorMsg = errorMsg.replace(re, argv[i]);
	}
	alert(errorMsg);
	return true;
}


/**
	This function checks the given value in the form is an valid calendar date

	@input objElement as Form Element
	@output value boolean true if it is an valid calendar date or false
*/


function jsfCheckDate(objElement) {
	if ( !jsfCheckDateByValue(objElement.value) ) {
		jsfDisplayErrorMessage(DATE_ERROR, objElement.getAttribute("errname"));
		objElement.focus();
		return false;
	}
	return true;
}


/**
	This function change date to long
*/
function jsfGetLongDate(dd,mm,yy){
	dd=dd.toString()
	mm=mm.toString()
	yy=yy.toString()
	return parseInt(yy+mm+dd)
}

/**
	Extract date from given form date 
*/
function jsfGetFormDate (date) {
	//var re = /\d{4}[\/-]0?\d{1,2}[\/-](0?\d{1,2})/g
	var re = /(0?\d{1,2})[\/-]0?\d{1,2}[\/-]\d{4}/g
	var arr= re.exec(date);
	var ret = false;
	for (i in arr) {
		if ( i==1) ret = true;
	}
	if (ret) return jsfCheckDateLength( arr[1] );
	return 0;
}

/**	
	Extract month from given form date 
*/
function jsfGetFormMonth (date) {
	//var re = /\d{4}[\/-](0?\d{1,2})[\/-]0?\d{1,2}/g
	var re = /0?\d{1,2}[\/-](0?\d{1,2})[\/-]\d{4}/g
	var arr= re.exec(date);
	var ret = false;
	for (i in arr) {
		if ( i==1) ret = true;
	}
	if (ret) return jsfCheckDateLength( arr[1] );
	return 0;
}

/**
	Extract year from given form date 
*/

function jsfGetFormYear (date) {
	//var re = /(\d{4})[\/-]0?\d{1,2}[\/-]0?\d{1,2}/g
	var re = /0?\d{1,2}[\/-]0?\d{1,2}[\/-](\d{4})/g
	var arr= re.exec(date);
	var ret = false;
	for (i in arr) {
		if ( i==1) ret = true;
	}
	if (ret) return arr[1];
	return 0;
}
 
 /**
	This function compare two dates
 */
function jsfCompareDate (date1,date2) {
	//alert('hai' + date1 + ' and ' + date2);
	var date1 = jsfGetLongDate ( jsfGetFormDate(date1), jsfGetFormMonth(date1), jsfGetFormYear(date1));
	
	var date2 = jsfGetLongDate ( jsfGetFormDate(date2), jsfGetFormMonth(date2), jsfGetFormYear(date2));

   
	if (date1 == date2) return 0;
	if (date1 > date2) return 1;
	if (date1 < date2) return -1;
}

function jsfCheckDateLength (date) {
	var strDate = date.toString();
	if ( strDate.length == 1) strDate = "0"+strDate;
	return strDate;
}

function trim(strInput) {
	return strInput.replace(/(^\s*|\s*$)/gi,"");
}
