//Detects browser type 
function makeObject(){
    var x; 
    var browser = navigator.appName; 
    if(browser == "Microsoft Internet Explorer"){
        x = new ActiveXObject("Microsoft.XMLHTTP");
    }
    else{
        x = new XMLHttpRequest();
    }
    return x;
}
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 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;	
}




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 isValidEmail(emailStr)
{
	if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/.test(emailStr)){
		return (true)
	}
	return (false)
}
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 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 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 isValidNumber(num) {
	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 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 roundNumbers(num, dec) { // Alternate Function
	var result = Math.round(num*Math.pow(10,dec))/Math.pow(10,dec);
	return result;
}*/
function roundNumber(num, dec)
{
	dec = 0;
 	var num1 = new Number (parseFloat (num));
 	var return_num = num1.toFixed (dec);
 	return return_num;
}

function roundNumbers(num, dec)
{
 	var num1 = new Number (parseFloat (num));
 	var return_num = num1.toFixed (dec);
 	return return_num;
}

// Original
/*function roundNumber(num, dec)
{
 	var num1 = new Number (parseFloat (num));
 	var return_num = num1.toFixed (dec);
 	return return_num;
}*/ 
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 validDate(curr_date,disp_date){
  if (curr_date < disp_date){
          return true;
   }else {
    	  return false;
    }
}