/********************************************************************************************
* @copyright Dinson Kadudhus
* @author    Dinson Kadudhus <dinsonk@gmail.com>
* Configuration section
* include DinsonMasterJs.js and DinsonErrorMessage.js
* over ride error message div id ErrDvId1 and ErrDvId2 
* expample
* ErrDvId1	= "error1";
* ErrDvId2	= "error"; in your html page
*********************************************************************************************/
// global illigal charachters 
var globalIllegalCharsALL = /[\~\`\!\@\#\$\%\^\&\*\(\)\-\_\=\+\[\]\{\}\\\|\;\:\"\'\,\<\>\.\/\?\ ]/; // allow only letters and numbers
var globalIllegalCharsTextFiled = /[\~\`\!\@\#\$\%\^\&\*\=\+\[\]\{\}\\\|\;\:\"\'\<\>\/\?]/; // allow only letters and numbers
// validate date field.......................................................................
// Declaring valid date character, minimum year and maximum year
var dtCh= "-";
var minYear=1900;
var maxYear=2100;

function DinIsInteger(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 DinStripCharsInBag(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 DinDaysInFebruary(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 DinDaysArray(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 DKIsDate(dtStr,id)
{
	var Dror = new Array()
	var daysInMonth = DinDaysArray(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)
	{
		//alert("The date format should be : dd-mm-yyyy");
		Dror['m'] ="The date format should be : dd-mm-yyyy";
		Dror['f'] =  false; 
		return Dror;
	}
	if (strMonth.length<1 || month<1 || month>12)
	{
		//alert("Please enter a valid month");
		Dror['m'] ="Please enter a valid month";
		Dror['f'] =  false; 
		return Dror;
	}
	if (strDay.length<1 || day<1 || day>31 || (month==2 && day>DinDaysInFebruary(year)) || day > daysInMonth[month])
	{
		//alert("Please enter a valid day");
		Dror['m'] ="Please enter a valid day";
		Dror['f'] =  false; 
		return Dror;
	}
	if (strYear.length != 4 || year==0 || year<minYear || year>maxYear)
	{
		//alert("Please enter a valid 4 digit year between "+minYear+" and "+maxYear);
		Dror['m'] ="Please enter a valid 4 digit year between "+minYear+" and "+maxYear;
		Dror['f'] =  false; 
		return Dror;
	}
	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || DinIsInteger(DinStripCharsInBag(dtStr, dtCh))==false)
	{
		//alert("Please enter a valid date");
		Dror['m'] ="Please enter a valid date";
		Dror['f'] =  false; 
		return Dror;
	}
		Dror['m'] ="Success";
		Dror['f'] =  true; 
		return Dror;
}
// function to validate date range......................................................................

function DKValidateDateRange(CtrlSDate,CtrlEDate)
{
    var SDate = document.getElementById(CtrlSDate).value;    	
    var EDate =  document.getElementById(CtrlEDate).value;
	var Dror = new Array()
    var Reason1 =  'End Date must be greater than or equal to  Start Date';
    var endDate = new Date(EDate);    	
    var startDate= new Date(SDate);
     
    if(SDate != '' && EDate != '' && startDate > endDate)
    {
	    document.getElementById(CtrlEDate).value = "";
		Dror['m'] ='End Date must be greater than or equal to  Start Date';
		Dror['f'] =  false; 
		return Dror;
    }
    else if(SDate == '')	
    {
		Dror['m'] ="Enter Start Date";
		Dror['f'] =  false; 
		return Dror;
    }
	else if(EDate == '')	
    {
		Dror['m'] ="Enter End Date";
		Dror['f'] =  false; 
		return Dror;
    }
	else
	{
		Dror['m'] ="Success";
		Dror['f'] =  true; 
		return Dror;
	}	    
}

// function to validate eMail address......................................................................
function DKEmailIdCheck(emailId) 
{
		var str=emailId;
		var at="@";
		var dot=".";
		var lat=str.indexOf(at);
		var lstr=str.length;
		var ldot=str.indexOf(dot);
		if(emailId == '')
		{
		    return false
		}
		else if (str.indexOf(at)==-1 || str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr || str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr || str.indexOf(at,(lat+1))!=-1 || str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot || str.indexOf(dot,(lat+2))==-1 || str.indexOf(" ")!=-1 )
		{
		   return false
		}
 		else
		{
			return true;
		}
}
// function to check user name.........................................................................

function DKCheckUsername(userName)
{
	var illegalChars = /\W/;
	if (userName == "") 
	{
		return false;
	}
	else if (illegalChars.test(userName)) 
	{
		return false;
    }
	else
	{
		return true;
	}
}
// function to check Password Field........................................................................
function DKCheckPassword(password)
{
	var illegalChars = /[\W_]/; // allow only letters and numbers
	if (password == "") 
	{
		return false;
 	}
	else if (illegalChars.test(password)) 
	{
		return false;
    }
	else if ((password.length < 6)) 
	{
		return false;
    }

/*
	else if (!((strng.search(/[a-z]+/) > -1) && (strng.search(/[A-Z]+/) > -1) && (strng.search(/[0-9]+/) > -1))) 
	{
		document.getElementById(ErrDvId2).innerHTML="The password must contain at least one uppercase letter, one lowercase letter,and one numeral.";
		return false;
  	}
*/
	else
	{
		return true;
	}	

}
// function to check Phone Field........................................................................
function DKCheckPhone(phoneNumber)
{
	//strip out acceptable non-numeric characters
	var stripped = phoneNumber.replace(/[\(\)\.\-\ ]/g, '');
	if (stripped == '') 
	{
		return false;
	}
	else if (isNaN(parseInt(stripped))) 
	{
		return false;
	}
	else if (!(stripped.length == 10)) 
	{
		return false;
	}
	else
	{
		return true;
	}
}
// function to check text Field........................................................................
function DKCheckTextField(value)
{
	if(globalIllegalCharsTextFiled.test(value)) 
	{
		return false;
    } 
	else
	{
		return true;
	}
}
function DKCheckTextFieldNull(value)
{
	if(value == "") 
	{
		return false;
    }
	else if(globalIllegalCharsTextFiled.test(value)) 
	{
		return false;
    } 
	else
	{
		return true;
	}
}
function DKCheckNumber(number)
{
	//strip out acceptable non-numeric characters
	var stripped = number.replace(/[\(\)\.\-\ ]/g, '');
	if (stripped == '') 
	{
		return false;
	}
	else if (isNaN(parseInt(stripped))) 
	{
		return false;
	}
	else
	{
		return true;
	}
}
function isUrl(s) {
        var regexp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/
        return regexp.test(s);
	}
