//Detects browser type 
function makeObject() { // Check a browser type for create a object for use a AJAX Technology
    var x; 
    var browser = navigator.appName; 
    if(browser == "Microsoft Internet Explorer"){
        x = new ActiveXObject("Microsoft.XMLHTTP");
    }
    else{
        x = new XMLHttpRequest();
    }
    return x;
}

function isValidUserName(str) { // Alpabets, Numbers, Special Chars [._] only accepted
	if (/^(([a-zA-Z])+([._])*([0-9])*)+$/.test(str)) {
		return true;
	}
	return false;
}

function isValidEmail(emailStr) {
	if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/.test(emailStr)) { // Email Validation
		return (true)
	}
	return (false)
}

function isValidAlphaNumeric(str) { // Alpabets, Numbers only accepted
	if (/^(([a-z])*([A-Z])*([0-9])*)+$/.test(str)) {
		return true;
	}
	return false;
}

function isValidAlphabet(str) { // Alpabets only accepted, Space not accepted
	if (/^(([a-z])*([A-Z])*)+$/.test(str)) {
		return true;
	}
	return false;
}

function isValidString(str) {	// Alpabets with Space only accepted
	if (/^(([a-z])*([A-Z] )*)+$/.test(str)) {
		return true;
	}
	return false;
}

function isValidNumeric(str) { // Numbers only accepted
	if (/^(([0-9])*)+$/.test(str)) {
		return true;
	}
	return false;
}

function isValidTelephone(str) {	// Numbers, Special Chars ([-#()+ ]), Space not accepted, String not accepted
	if (/^(([0-9])*([-#()+ ])*)+$/.test(str)) {
		return true;
	}
	return false;
}

function isValidTelephoneWithString(str) { // Numbers,Alpabets, Special Chars ([-#()+ ]), Space accepted
	if (/^(([a-z])*([A-Z])*([0-9])*([-#()+ ])*)+$/.test(str)) {
		return true;
	}
	return false;
}

function isValidZipcode(str) { // Alpabets, Numbers only accepted
	if (/^(([a-z])*([A-Z])*([0-9])*)+$/.test(str)) {
		return true;
	}
	return false;
}

function isValidURL(urlStr){
	if (urlStr.indexOf(" ")!=-1){
		return false;	
	}
	if(urlStr==""||urlStr==null){
		return false;
	}
	urlStr=urlStr.toLowerCase();
	var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
	var validChars="\[^\\s" + specialChars + "\]";
	var atom=validChars + '+';
	var urlPat=/^http:\/\/(\w*)\.([\-\+a-z0-9]*)\.(\w*)/;
	var matchArray=urlStr.match(urlPat);
	if (matchArray==null){
		return false;
	}
	var user=matchArray[2];
	var domain=matchArray[3];
	for (i=0; i<user.length; i++) {
		if (user.charCodeAt(i)>127) {
			return false;
		}
	}
	for (i=0; i<domain.length; i++) {
		if (domain.charCodeAt(i)>127) {
			return false;
		}
	}
	var atomPat=new RegExp("^" + atom + "$");
	var domArr=domain.split(".");
	var len=domArr.length;
	for (i=0;i<len;i++) {
		if (domArr[i].search(atomPat)==-1) {
			return false;
		}
	}
	if (domArr[domArr.length-1].length!=2 && domArr[domArr.length-1].search(atomPat)==-1) {
		return false;
	}
  return true;
}

function isValidFile(str,type) {
	// type = image,text,video
	
	if(!type || !str) {
		alert("Missing argument!, The Arguments are (File Control Value,File Type)");
		return false;                            
	}
	
	var x;
	var flag = false;
	var file_type;
	
	var lc_fileext = str.toLowerCase();
	var file_array = lc_fileext.split('.');
	var array_len = file_array.length;
	var file_ext = file_array[array_len-1];
	//alert(file_ext);
	if(type == 'image') {
		file_type = 'bmp,jpg,jpeg,png,gif';
	}
	if(type == 'text') {
		file_type = 'txt,doc,pdf,rtf';
	}
	if(type == 'video') {
		file_type = 'mpeg,mpg,asf,dat,avi,wmv,dat';
	}
	
	var file_split = file_type.split(',');
	var file_array_len = file_split.length;
	
	for(x=0; x<file_array_len; x++)
	{
		if(file_ext == file_split[x])
		{
			flag = true;
			return true;
		}
	}
	if(!flag) {
		return false;
	}
}

function isValidNumber(num) { // Call this Function at a key press Event
	if(isNaN(num.value)) {
		var num_len = num.value.length;
		var num_value = num.value.substring(0, num_len-1);
		num.value = num_value;
		if(isNaN(num_value)) {
			num.value = "";
		}
		alert("Numbers Only Accepted");
	}
}

function charRemaining(tField, nField, maxAllowed) {
	if (tField.value.length > maxAllowed) {
		tField.value = tField.value.substring(0, maxAllowed);
	}
	nField.value = maxAllowed - tField.value.length;
}

function stripHTML(str) {
	ret_str = str.replace(/&/g," ZsW ");
	ret_str = ret_str.replace(/\n/g," ZbR ");
	ret_str = ret_str.replace(/</g," ZlT ");
	ret_str = ret_str.replace(/\+/g," ZpL ");
	ret_str = ret_str.replace(/\?/g," ZqS ");
	ret_str = ret_str.replace(/>/g," ZgT ");
	ret_str = ret_str.replace(/£/g," ZpD ");
	ret_str = ret_str.replace(/€/g," ZpR ");
	ret_str = ret_str.replace(/`/g," ZpQ ");
	return ret_str;
}

function trim(sString) {
	while (sString.substring(0,1) == ' ') {
		sString = sString.substring(1, sString.length);
	}
	while (sString.substring(sString.length-1, sString.length) == ' ') {
	    sString = sString.substring(0,sString.length-1);
	}
	return sString;
}

function rightTrim( strValue ) {
	var objRegExp = /^([\w\W]*)(\b\s*)$/;
	if(objRegExp.test(strValue)) {
		//remove trailing a whitespace characters
		strValue = strValue.replace(objRegExp, '$1');
	}
	return strValue;
}

function leftTrim( strValue ) {
	var objRegExp = /^(\s*)(\b[\w\W]*)$/;
	
	if(objRegExp.test(strValue)) {
		//remove leading a whitespace characters
		strValue = strValue.replace(objRegExp, '$2');
	}
	return strValue;
}

function roundNumber(num, dec) {
	if(!dec) {
		dec = 0;
	}
 	var num1 = new Number (parseFloat (num));
 	var return_num = num1.toFixed (dec);
 	return return_num;
}

/*
function roundNumbers(num, dec) { // Alternate Function
	if(!dec) {
		dec = 0;
	}
	var result = Math.round(num*Math.pow(10,dec))/Math.pow(10,dec);
	return result;
}
*/

function convertDMYtoMDY(datestr) {
	splt_dat = datestr.split("/");
	rtn_date = splt_dat[1]+"-"+splt_dat[0]+"-"+splt_dat[2];
	return rtn_date;
}

function convertDMYtoMDYWithSlash(datestr){
	splt_dat = datestr.split("/");
	rtn_date = splt_dat[1]+"/"+splt_dat[0]+"/"+splt_dat[2];
	return rtn_date;
}

function calcDays(date1,date2){
	// date format m/d/yyyy
  /*var date1 = document.getElementById('d1').lastChild.data;
  var date2 = document.getElementById('d2').lastChild.data;
  date1 = date1.split("-");
  date2 = date2.split("-");*/
  //var sDate = new Date(date1[0]+"/"+date1[1]+"/"+date1[2]);
  //var eDate = new Date(date2[0]+"/"+date2[1]+"/"+date2[2]);
  //alert(date1);
  var sDate = new Date(date1);
  var eDate = new Date(date2);
  var daysApart = Math.abs(Math.round((sDate-eDate)/86400000));
  return daysApart;
}

function getNewDateFormat(input_date,cur,new_format,sep,rep,err_msg,show_time,time_format) {
      var year = "";
      var month = "";
      var date = "";
      var res = "";
      
	  cur = cur.toUpperCase();
      new_format = new_format.toUpperCase();
      if(time_format) {
	      time_format = time_format.toUpperCase();
	  }
      
      var split_date_and_time = input_date.split(' ');
      input_date = split_date_and_time[0];
      var input_time = split_date_and_time[1];
      date_arr = input_date.split(sep);
      
      var cur_len = cur.length;

      for(i=0; i<cur_len; i++) {
            if(cur.charAt(i) == 'Y') {
                  year = date_arr[i];
            }
            if(cur.charAt(i) == 'M') {
                  month = date_arr[i];
            }
            if(cur.charAt(i) == 'D') {
                  date = date_arr[i];
            }                        
      }

      new_len = new_format.length;

      var ret_date = "";
      
      for(i=0; i<new_len; i++) {
            if(new_format.charAt(i) == 'Y') {
                  res = year;
            }
            if(new_format.charAt(i) == 'M') {
                  res = month;
            }
            if(new_format.charAt(i) == 'D') {
                  res = date;
            }
            if(i != new_len-1) {
                  ret_date += res+rep;
            } else {
                  ret_date += res;
            }
      }
      
      if(show_time=='YES' && input_time) {
            var split_time = input_time.split(":");
            if(time_format == '12') {
                  if(split_time[0]<12) {
                        //ret_date += " split_time[0] : split_time[1] AM";
                  } else {
                        var hours = split_time[0]-12;
                        //ret_date += " hours : split_time[1] PM";
                  }
            } else {
                 // ret_date += " split_time[0] : split_time[1]";      
            }
      }
            
      return ret_date;
}

function compareTwoDates(startdate,enddate,cur_date,msg) {
	var startdateStr = startdate;
	var enddateStr = enddate;

	if(!startdateStr) {
		alert("Enter From date");
		return false;
	}
	if(!enddateStr) {
		alert("Enter To date");
		return false;
	}	
	else {
		from_date = getNewDateFormat(startdateStr,'DMY','MDY','/','-');
		to_date = getNewDateFormat(enddateStr,'DMY','MDY','/','-');
		if (Date.parse(from_date) > Date.parse(to_date)) {
			if(msg) {
				alert(msg);
			} else {
				alert("The From date must not greater than the To date ");
			}
			return false;
		}
		if(cur_date) {
			startdateStr = enddate;
			enddateStr = cur_date;
			
			from_date = getNewDateFormat(startdateStr,'DMY','MDY','/','-');
			to_date = getNewDateFormat(enddateStr,'DMY','MDY','/','-');
				
			if (Date.parse(from_date) > Date.parse(to_date)) {
				alert("Invalid Date Range")
				return false;
			}	else {
				return true;
			}
		}
		return true;
	}
}

function compareGraterThanTodayDates(startdate,enddate,cur_date) {
	var startdateStr = startdate;
	var enddateStr = enddate;

	if(!startdateStr && enddateStr){
		alert("Enter Arrival date");
		return false;
	}
	else {
		from_date = convertDMYtoMDY(startdateStr);
		to_date = convertDMYtoMDY(enddateStr);
		if (Date.parse(from_date) > Date.parse(to_date)) {
			alert("The Departure date must not greater than the Arrival date ");
			return false;
		}
		else{
			startdateStr = startdate;
			enddateStr = enddate;
			
			if(!enddateStr || !startdateStr){
				alert("Enter start date or end date");
				return false;
			}
			else {
				from_date = convertDMYtoMDY(startdateStr);
				to_date = convertDMYtoMDY(enddateStr);	
				
				if (Date.parse(from_date) > Date.parse(to_date)) {
					alert("Invalid Date Range")
					return false;
				}	else {
					return true;
				}	
			}
		}
	}
}


/*

function isAlphaNumeric(str) 
{
 var checkOK = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
 var checkStr = str;
 var allValid = true;
	for (index = 0;  index < checkStr.length;  index++)
	{
		ch = checkStr.charAt(index);
		for (sub_index = 0;  sub_index  < checkOK.length;  sub_index ++)
		if (ch == checkOK.charAt(sub_index )) {
			break;
		}
		if (sub_index  == checkOK.length){
	 		allValid = false;
			break;
		}
	}
 return allValid;	
}

function isValidText(str) 
{
 var checkOK = "`";
 var checkStr = str;
 var allValid = true;
	for (index = 0;  index < checkStr.length;  index++)
	{
		ch = checkStr.charAt(index);
		for (sub_index = 0;  sub_index  < checkOK.length;  sub_index ++)
		if (ch != checkOK.charAt(sub_index)) {
			break;
		}
		if (sub_index  == checkOK.length){
	 		allValid = false;
			break;
		}
	}
 return allValid;	
}

function isValidZipcode(str) 
{
 var checkOK = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
 var checkStr = str;
 var allValid = true;
	for (index = 0;  index < checkStr.length;  index++)
	{
		ch = checkStr.charAt(index);
		for (sub_index = 0;  sub_index  < checkOK.length;  sub_index ++)
		if (ch == checkOK.charAt(sub_index )) {
			break;
		}
		if (sub_index  == checkOK.length){
	 		allValid = false;
			break;
		}
	}
 return allValid;	
}

function isValidpostcode(str) 
{
 var checkOK = "0123456789";
 var checkStr = str;
 var allValid = true;
	for (index = 0;  index < checkStr.length;  index++)
	{
		ch = checkStr.charAt(index);
		for (sub_index = 0;  sub_index  < checkOK.length;  sub_index ++)
		if (ch == checkOK.charAt(sub_index )) {
			break;
		}
		if (sub_index  == checkOK.length){
	 		allValid = false;
			break;
		}
	}
 return allValid;	
}

function isValidTelephone(str) 
{
 var checkOK = "0123456789-#()+ ";
 var checkStr = str;
 var allValid = true;
	for (index = 0;  index < checkStr.length;  index++)
	{
		ch = checkStr.charAt(index);
		for (sub_index = 0;  sub_index  < checkOK.length;  sub_index ++)
		if (ch == checkOK.charAt(sub_index )) {
			break;
		}
		if (sub_index  == checkOK.length){
	 		allValid = false;
			break;
		}
	}
 return allValid;	
}

function isValidTextbox(str) 
{
 var checkOK = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,-.#~!@$%^*(){}[]>:;/?|\\\"=_  ";
 var checkStr = str;
 var allValid = true;
	for (index = 0;  index < checkStr.length;  index++)
	{
		ch = checkStr.charAt(index);
		for (sub_index = 0;  sub_index  < checkOK.length;  sub_index ++)
		if (ch == checkOK.charAt(sub_index )) {
			break;
		}
		if (sub_index  == checkOK.length){
	 		allValid = false;
			break;
		}
	}
 return allValid;	
}

function isValidUserName(str) 
{
 var checkOK = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890_.";
 var checkStr = str;
 var allValid = true;
	for (index = 0;  index < checkStr.length;  index++)
	{
		ch = checkStr.charAt(index);
		for (sub_index = 0;  sub_index  < checkOK.length;  sub_index ++)
		if (ch == checkOK.charAt(sub_index )) {
			break;
		}
		if (sub_index  == checkOK.length){
	 		allValid = false;
			break;
		}
	}
 return allValid;	
}

function isValidTextarea(str) 
{
 var checkOK = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890~#,-!@$%^*(){}[]>.:;/?'|\\\"=_ ";
 var checkStr = str;
 var allValid = true;
	for (index = 0;  index < checkStr.length;  index++)
	{
		ch = checkStr.charAt(index);
		for (sub_index = 0;  sub_index  < checkOK.length;  sub_index ++)
		if (ch == checkOK.charAt(sub_index )) {
			break;
		}
		if (sub_index  == checkOK.length){
	 		allValid = false;
			break;
		}
	}
 return allValid;	
}

function isAlphabet(str) 
{
 var checkOK = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
 var checkStr = str;
 var allValid = true;
	for (index = 0;  index < checkStr.length;  index++)
	{
		ch = checkStr.charAt(index);
		for (sub_index = 0;  sub_index  < checkOK.length;  sub_index ++)
		if (ch == checkOK.charAt(sub_index )) {
			break;
		}
		if (sub_index  == checkOK.length){
	 		allValid = false;
			break;
		}
	}
 return allValid;	
}

function isValidString(str) 
{
 var checkOK = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ";
 var checkStr = str;
 var allValid = true;
	for (index = 0;  index < checkStr.length;  index++)
	{
		ch = checkStr.charAt(index);
		for (sub_index = 0;  sub_index  < checkOK.length;  sub_index ++)
		if (ch == checkOK.charAt(sub_index )) {
			break;
		}
		if (sub_index  == checkOK.length){
	 		allValid = false;
			break;
		}
	}
 return allValid;	
}

function isValidCategoryString(str) 
{
 var checkOK = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/- ";
 var checkStr = str;
 var allValid = true;
	for (index = 0;  index < checkStr.length;  index++)
	{
		ch = checkStr.charAt(index);
		for (sub_index = 0;  sub_index  < checkOK.length;  sub_index ++)
		if (ch == checkOK.charAt(sub_index )) {
			break;
		}
		if (sub_index  == checkOK.length){
	 		allValid = false;
			break;
		}
	}
 return allValid;	
}

function isValidAddress(str) 
{
 var checkOK = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789,/-#. ";
 var checkStr = str;
 var allValid = true;
	for (index = 0;  index < checkStr.length;  index++)
	{
		ch = checkStr.charAt(index);
		for (sub_index = 0;  sub_index  < checkOK.length;  sub_index ++)
		if (ch == checkOK.charAt(sub_index )) {
			break;
		}
		if (sub_index  == checkOK.length){
	 		allValid = false;
			break;
		}
	}
 return allValid;	
}

function isValidURLstring(str) {
 var checkOK = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789,-!&(){}[]>/_  ";
 var checkStr = str;
 var allValid = true;
	for (index = 0;  index < checkStr.length;  index++)
	{
		ch = checkStr.charAt(index);
		for (sub_index = 0;  sub_index  < checkOK.length;  sub_index ++)
		if (ch == checkOK.charAt(sub_index )) {
			break;
		}
		if (sub_index  == checkOK.length){
	 		allValid = false;
			break;
		}
	}
 return allValid;	
}

*/