function freereminder()
{	
	var reminderName		=	document.getElementById("remindername");
	var reminderMobileNo	=	document.getElementById("remindermobileNo");
	var reminderEmailId		=	document.getElementById("reminderEmailid");
	var product				=	document.getElementById("product");
	var otherProduct		=	document.getElementById("otherProduct");
	var companyName			=	document.getElementById("companyName");
	var policyNo			=	document.getElementById("policyNo");
	var policyStartDate		=	document.getElementById("policyStartDate");
	var policyExpireDate	=	document.getElementById("policyExpireDate");
	var policyTerm			=	document.getElementById("policyTerm");
	var paymentType			=	document.getElementById("paymentType");
	var sumInsured			=	document.getElementById("sumInsured");
	var premium				=	document.getElementById("premium");
	var remarks				=	document.getElementById("remarks");
	var days				=	document.getElementById("days");
	var reminder1			=	document.getElementById("reminder1").checked;
	var reminder2			=	document.getElementById("reminder2").checked;
	var reminder3			=	document.getElementById("reminder3").checked;
	
	//to validate name
	if(reminderName.value.trim().length == 0){
	 	alert('Please enter your Name');
		reminderName.focus();
		reminderName.select();
		return false;
	}else if(isValidName(reminderName.value)==false){
		alert('Name should be in alphabets');
		reminderName.focus();
		reminderName.select();
		return false;
	}else if(reminderName.value.length > 50){
		alert('Name cannot be greater than 50 characters');
		reminderName.focus();
		reminderName.select();
		return false;
	}

	//to validate mobile no	
	if(reminderMobileNo.value.trim().length == 0){
	 	alert('Please enter Mobile Number');
		reminderMobileNo.focus();
		reminderMobileNo.select();
		return false;
	}else if(isInteger(reminderMobileNo.value)==false){
		alert('Please enter valid Mobile Number');
		reminderMobileNo.focus();
		reminderMobileNo.select();
		return false;
	}else if(reminderMobileNo.value.length > 10){
		alert('Mobile Number cannot be greater than 10 digits');
		reminderMobileNo.focus();
		reminderMobileNo.select();
		return false;
	}else if(reminderMobileNo.value.length < 10){
		alert('Mobile Number should be 10 digits');
		reminderMobileNo.focus();
		reminderMobileNo.select();
		return false;
	}

	//to validate email id
	if(reminderEmailId.value.trim().length == 0){
		alert('Please enter E-mail ID');
		reminderEmailId.focus();
		reminderEmailId.select();
		return false;
	}else if(reminderEmailId.value.length > 100){
		alert('Email Id cannot be greater than 100 characters');
		reminderEmailId.focus();
		reminderEmailId.select();
		return false;
	}else if(isEmail(reminderEmailId.value)==false){
		alert('Please Enter Valid Email ID');
		reminderEmailId.focus();
		reminderEmailId.select();
		return false;
	}


	//to validate products
	if((product.value=="selectproducts")){
		alert('Please select the Product');
		product.focus();
		return false;
	}

	//to validate other product name
	if(product.value=="others"){
		if(otherProduct.value.trim().length == 0){
			alert('Please enter product name');
			otherProduct.focus();
			otherProduct.select();
			return false;
		}else if(otherProduct.value.length > 30){
			alert('Product name cannot be greater than 30 characters');
			otherProduct.focus();
			otherProduct.select();
			return false;
		}else if(isValidProductName(otherProduct.value)==false){
			alert('Invalid product name');
			otherProduct.focus();
			otherProduct.select();
			return false;
		}
	}

	//to validate company name
	if(companyName.value.trim().length == 0){
		alert('Please enter company name');
		companyName.focus();
		companyName.select();
		return false;
	}else if(companyName.value.length > 100){
		alert('Company name cannot be greater than 100 characters');
		companyName.focus();
		companyName.select();
		return false;
	}else if(isValidCompanyName(companyName.value)==false){
		alert('Invalid company name');
		companyName.focus();
		companyName.select();
		return false;
	}

	//to validate policy no
	if(policyNo.value.trim().length > 0){
		if(policyNo.value.length > 50){
			alert('Policy No cannot be greater than 50 characters');
			policyNo.focus();
			policyNo.select();
			return false;
		}
	}

	//to validate policy start date
	if(product.value=="Life"){
		if(policyStartDate.value.trim().length == 0){
			alert('Please enter your Policy Start Date');
			policyStartDate.focus();
			policyStartDate.select();
			return false;
		}else if(testDate(policyStartDate.value)==0){
			alert('Please enter valid Policy Start Date in (dd/mm/yyyy) format');
			policyStartDate.focus();
			policyStartDate.select();
			return false;
		}
		 
	}

	//to validate policy expiry date
	if(policyExpireDate.value.trim().length == 0){
	 	alert('Please enter your Policy Expiry Date');
		policyExpireDate.focus();
		policyExpireDate.select();
		return false;
	}else if(testDate(policyExpireDate.value)==false){
		alert('Please enter valid Policy Expiry Date in (dd/mm/yyyy) format');
		policyExpireDate.focus();
		policyExpireDate.select();
		return false;
	}else if(policyStartDate.value.trim() == policyExpireDate.value.trim()){
		alert('Policy start date and Policy expiry date should not be same');
		policyExpireDate.focus();
		policyExpireDate.select();
		return false;
	}else if(isGreaterThenCurrentDate(policyExpireDate.value)==false){
		alert('Policy expiry date should be future date');
		policyExpireDate.focus();
		policyExpireDate.select();
		return false;
	}
	
	//validation for 5 days difference between start and end date
	if(product.value=="Life"){
		if(checkDateDiff(policyStartDate.value.trim(),policyExpireDate.value.trim())==false){
			alert('Policy start date and expiry date difference should be five days');
			policyExpireDate.focus();
			policyExpireDate.select();
			return false;
		}
	}


	// to validate policy term
	if(product.value=="Life"){
		if(policyTerm.value.trim().length == 0){
			alert('Please enter policy term');
			policyTerm.focus();
			policyTerm.select();
			return false;
		}else if(policyTerm.value.length > 3){
			alert('Policy term value cannot be greater than 3 digits');
			policyTerm.focus();
			policyTerm.select();
			return false;
		}else if(isInteger(policyTerm.value) == false){
			alert('Please enter only numbers in policy term field');
			policyTerm.focus();
			policyTerm.select();
			return false;
		}

		//to validate mode of payment
		if(paymentType.value == "select"){
			alert('Please select mode of payment');
			paymentType.focus();
			return false;
		}

		//to validate sum insured
		if(sumInsured.value.trim().length == 0){
			alert('Please enter sum insured value');
			sumInsured.focus();
			sumInsured.select();
			return false;
		}else if(sumInsured.value.length > 10){
			alert('Sum Insured value cannot be greater than 10 digits');
			sumInsured.focus();
			sumInsured.select();
			return false;
		}else if(isInteger(sumInsured.value) == false){
			alert('Please enter only numbers in sum insured field');
			sumInsured.focus();
			sumInsured.select();
			return false;
		}else if(sumInsured.value.trim() <=0){
			alert('Sum Insured value cannot be zero');
			sumInsured.focus();
			sumInsured.select();
			return false;
		}
	}

	//to validate policy term with start date and end date
	if(product.value=="Life"){
		var yr1  = parseInt(policyStartDate.value.substring(6,10),10); 
		var yr2  = parseInt(policyExpireDate.value.substring(6,10),10); 
		var yrDifference=parseInt(yr2)-parseInt(yr1);
		//alert("yr Diff-->"+yrDifference);
		//alert("Policy Term-->"+policyTerm.value);
		if(yrDifference < policyTerm.value){
			alert("Please Check Policy Term with Policy Start Date and Policy end Date");
			policyTerm.focus();
			policyTerm.select();
			return false;
		}
		if(yrDifference > policyTerm.value){
			alert("Please Check Policy Term with Policy Start Date and Policy end Date");
			policyTerm.focus();
			policyTerm.select();
			return false;
		}	
	}

	//to validate premium
	if(premium.value.trim().length == 0){
		alert('Please enter premium value');
		premium.focus();
		premium.select();
		return false;
	}else if(premium.value.length > 10){
		alert('Premium value cannot be greater than 10 digits');
		premium.focus();
		premium.select();
		return false;
	}else if(isInteger(premium.value) == false){
		alert('Please enter only numbers in premium field');
		premium.focus();
		premium.select();
		return false;
	}else if(premium.value.trim() <=0){
			alert('Premium value cannot be zero');
			premium.focus();
			premium.select();
			return false;
		}

	//to validate remarks
	if(remarks.value.length > 200){
		remarks.focus();
		remarks.select();
		alert('Remarks contents cannot be greater than 200 characters');
		return false;
	}

	if((days.value=="selectproducts")){
		alert('Please select the Reminder Days');
		days.focus();
		return false;
	}

	
	//To validate Policy EndDate with Reminder Days
	var calcRemindDays=parseInt(days.value);
	//alert("calcDay-->"+calcRemindDays);
	var currDate=new Date(commonServerDate.getFullYear(), commonServerDate.getMonth(), commonServerDate.getDate());
	var remindDate = new Date(commonServerDate.getFullYear(), commonServerDate.getMonth(), commonServerDate.getDate());
	remindDate.setTime(currDate.getTime());
	remindDate.setDate(commonServerDate.getDate()+calcRemindDays);
	//alert("remindDate-->"+remindDate.getTime());

	var endDate=new Date(commonServerDate.getFullYear(), commonServerDate.getMonth(), commonServerDate.getDate());
	var expDateArr=policyExpireDate.value.split("/");
	var expDateTemp = new Date(expDateArr[2], expDateArr[1]-1, expDateArr[0]);
	endDate.setTime(expDateTemp.getTime());
	//alert("endDate-->"+endDate.getTime());

	if(endDate.getTime() < remindDate.getTime()){
		alert("Reminder Duration Date already elapsed");
		days.focus();
		return false;
	}
	


	if(reminder1 == false && reminder2 == false && reminder3 == false){
		alert('Please check any one of the Reminder Mode');
		return false;
	}
}

//******Regular expression starts here****//


//VALIDATION FOR CHECK NAMES

var defaultEmptyOK = false

function isEmpty(s){ 
	return ((s == null) || (s.length == 0))
}

//VALIDATION FOR CHECK NAMES
var nameExpression = /^[A-Za-z][ \'\-\.A-Za-z]+[A-Za-z]$/
function isValidName(s){  
	var i;
    if (isEmpty(s)) 
       if (isValidName.arguments.length == 1) return defaultEmptyOK;
       else return (isValidName.arguments[1] == true);
    else {
       return nameExpression.test(s)
    }
}


//VALIDATION FOR CHECK E-MAIL
var reEmail = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/
function isEmail(s){  
	if (isEmpty(s)) 
       if (isEmail.arguments.length == 1) return defaultEmptyOK;
       else return (isEmail.arguments[1] == true);
    else {
       return reEmail.test(s)
    }
}

//VALIDATION FOR PRODUCT NAME
var alphanum=/^[A-Za-z][ \'\-\.\,\/A-Za-z]+[A-Za-z]$/
function isValidProductName(s){

	if (isEmpty(s)) 
       if (isValidProductName.arguments.length == 1) return defaultEmptyOK;
       else return (isValidProductName.arguments[1] == true);
    
    else {
       return alphanum.test(s)
    }
}

//VALIDATION FOR COMPANY NAME
var companynum=/^[A-Za-z][ \'\-\.\,\/A-Za-z]+[A-Za-z \.\,]$/
function isValidCompanyName(s){

	if (isEmpty(s)) 
       if (isValidCompanyName.arguments.length == 1) return defaultEmptyOK;
       else return (isValidCompanyName.arguments[1] == true);
    
    else {
       return companynum.test(s)
    }
}


//VALIDATION FOR NUMBER
var reInteger = /^\d+$/
function isInteger(s){
	var i;
    if (isEmpty(s)) 
       if (isInteger.arguments.length == 1) return defaultEmptyOK;
       else return (isInteger.arguments[1] == true);

    return reInteger.test(s)
}



//VALIDATION FOR CHECK DATE NOT LESS THAN CURRECT DATE

function isGreaterThenCurrentDate(dateStr)
{
	
	var mydate=new Date(commonServerDate.getFullYear(), commonServerDate.getMonth(), commonServerDate.getDate());
var a1=new Array();
a1=dateStr.split("/");
var userdate=new Date(a1[2],a1[1]-1,a1[0]);
var one_day=1000*60*60*24
var noOfDays=Math.ceil((mydate.getTime()-userdate.getTime())/(one_day));

if(noOfDays>=0){
		  
			
return false;
}
return true;
}


/**
 * DHTML date validation script for dd/mm/yyyy. Courtesy of SmartWebby.com (http://www.smartwebby.com/dhtml/)
 */
// Declaring valid date character, minimum year and maximum year
var dtCh= "/";
var minYear=1900;
var maxYear=2100;

function isIntegers(s){
	var i;
    for (i = 0; i < s.length; i++){   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

function stripCharsInBag(s, bag){
	var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++){   
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function daysInFebruary (year){
	// February has 29 days in any year evenly divisible by four,
    // EXCEPT for centurial years which are not also divisible by 400.
    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}
function DaysArray(n) {
	for (var i = 1; i <= n; i++) {
		this[i] = 31
		if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
		if (i==2) {this[i] = 29}
   } 
   return this
}
function testDate(dtStr){
	var daysInMonth = DaysArray(12)
	var pos1=dtStr.indexOf(dtCh)
	var pos2=dtStr.indexOf(dtCh,pos1+1)
	var strDay=dtStr.substring(0,pos1)
	var strMonth=dtStr.substring(pos1+1,pos2)
	var strYear=dtStr.substring(pos2+1)
	strYr=strYear
	if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)
	if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)
	for (var i = 1; i <= 3; i++) {
		if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
	}
	month=parseInt(strMonth)
	day=parseInt(strDay)
	year=parseInt(strYr)
	if (pos1==-1 || pos2==-1){
		return false
	}
	if (strMonth.length<1 || month<1 || month>12){
		return false
	}
	if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
		return false
	}
	if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){
		return false
	}
	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isIntegers(stripCharsInBag(dtStr, dtCh))==false){
		return false
	}
return true
}


//Trim function 
String.prototype.trim = function() {
// Strip leading and trailing white-space
return this.replace(/^\s*|\s*$/g, "");
}

//TO CHECK THE DATE DIFFERENCE BETWEEN START DATE AND EXPIRY DATE
function checkDateDiff(sDate,eDate){
	
	var a1=new Array();
	a1=sDate.split("/");
	var startDate=new Date(a1[2],a1[1]-1,a1[0]);

	var a2=new Array();
	a2=eDate.split("/");
	var endDate=new Date(a2[2],a2[1]-1,a2[0]);
	endDate.setDate(endDate.getDate()-5);

	//alert(startDate.getTime()+"-"+endDate.getTime());
	if(startDate.getTime()>endDate.getTime()){
		return false;
	}
	return true;
}