// JavaScript Document

// When you check the Vendor/Consultant box on the user info forms (the Work Info tab),
// the rest of the fields on the right-hand side do not need to be filled in
function checkVendor(checkbox) {
	
	if (checkbox.checked) {
			document.getElementById('EMPLOYEES').disabled = true;
			document.getElementById('EXAMS PER YEAR').disabled = true;
			document.getElementById('BEDS').disabled = true;
			document.getElementById('SITES').disabled = true;
			document.getElementById('BUY_GROUP_ID').disabled = true;
			document.getElementById('DEPARTMENT_ID').disabled = true;
			document.getElementById('TYPE_FACILITY_ID').disabled = true;
			document.getElementById('DISCIPLINE_ID').disabled = true;
			document.getElementById('EMPLOYEES').value = '';
			document.getElementById('EXAMS PER YEAR').value = '';
			document.getElementById('BEDS').value = '';
			document.getElementById('SITES').value = '';
			document.getElementById('BUY_GROUP_ID').value = "NONE";
			document.getElementById('DEPARTMENT_ID').value = "NONE";
			document.getElementById('TYPE_FACILITY_ID').value = "NONE";
			document.getElementById('DISCIPLINE_ID').value = "NONE";
	} else {
			document.getElementById('EMPLOYEES').disabled = false;
			document.getElementById('EXAMS PER YEAR').disabled = false;
			document.getElementById('BEDS').disabled = false;
			document.getElementById('SITES').disabled = false;
			document.getElementById('BUY_GROUP_ID').disabled = false;
			document.getElementById('DEPARTMENT_ID').disabled = false;
			document.getElementById('TYPE_FACILITY_ID').disabled = false;
			document.getElementById('DISCIPLINE_ID').disabled = false;
	}
	
}

function showTab(tabID){
	document.getElementById('loginInformation').className='updateProfileHidden';
	document.getElementById('homeInformation').className='updateProfileHidden';
	document.getElementById('workInformation').className='updateProfileHidden';
	document.getElementById('equipmentInformation').className='updateProfileHidden';
	document.getElementById('affiliations').className='updateProfileHidden';
	document.getElementById('jobResponsibilities').className='updateProfileHidden';
	document.getElementById(tabID).className='updateProfileVisible';
	
	document.getElementById('loginInformationTab').className='updateProfileTabInactive';
	document.getElementById('homeInformationTab').className='updateProfileTabInactive';
	document.getElementById('workInformationTab').className='updateProfileTabInactive';
	document.getElementById('equipmentInformationTab').className='updateProfileTabInactive';
	document.getElementById('affiliationsTab').className='updateProfileTabInactive';
	document.getElementById('jobResponsibilitiesTab').className='updateProfileTabInactive';
	document.getElementById(tabID+'Tab').className='updateProfileTabActive';
	
	document.getElementById('loginInformationLink').className='updateProfileLinkInactive';
	document.getElementById('homeInformationLink').className='updateProfileLinkInactive';
	document.getElementById('workInformationLink').className='updateProfileLinkInactive';
	document.getElementById('equipmentInformationLink').className='updateProfileLinkInactive';
	document.getElementById('affiliationsLink').className='updateProfileLinkInactive';
	document.getElementById('jobResponsibilitiesLink').className='updateProfileLinkInactive';
	document.getElementById(tabID+'Link').className='updateProfileLinkActive';
}

function makeCommaFormatted(myString) {
	if (myString != null) {
		myString = removeCommas(myString);
		myString = addCommas(myString);
	}
	return myString;
}

function addCommas(nStr)
{
	nStr += '';
	x = nStr.split('.');
	x1 = x[0];
	x2 = x.length > 1 ? '.' + x[1] : '';
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(x1)) {
		x1 = x1.replace(rgx, '$1' + ',' + '$2');
	}
	return x1 + x2;
}


function removeCommas(myString) {
	if (myString != null) {
		myString = myString.replace(/,/g,"");
	}
	return myString;
}

window.onload = init;

function init(){
	// Set Exams Per Year to be formatted with commas
	if (document.getElementById("EXAMS PER YEAR")!=null) {
		var myString = document.getElementById("EXAMS PER YEAR").value;
		document.getElementById("EXAMS PER YEAR").value = makeCommaFormatted(document.getElementById("EXAMS PER YEAR").value);
	}
		
	// Format phone numbers
	formatPhoneNumber(document.getElementById("WORK PHONE"));
	formatPhoneNumber(document.getElementById("WORK FAX"));
	formatPhoneNumber(document.getElementById("HOME PHONE"));
	formatPhoneNumber(document.getElementById("HOME FAX"));
	
	// Disable the fields for non-vendors
	checkVendor(document.getElementById("MEM_USER_Vendor"));
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_validateForm() { //v4.0
  // Custom code to be executed on submit
  // Remove commas from Exams Per Year
  if (document.getElementById("EXAMS PER YEAR")!=null) {
	document.getElementById("EXAMS PER YEAR").value = removeCommas(document.getElementById("EXAMS PER YEAR").value);
  }
  
  // If the vendor/consultant box is checked, disable some fields
  // but before inserting, the values must be 0 or NONE (fields can't be disabled when submitting)
  if (document.getElementById('BUY_GROUP_ID').disabled == true) {
	  document.getElementById('BUY_GROUP_ID').disabled = false;
	  document.getElementById('BUY_GROUP_ID').value = "NONE";
  }
  if (document.getElementById('DEPARTMENT_ID').disabled == true) {
	  document.getElementById('DEPARTMENT_ID').disabled = false;
	  document.getElementById('DEPARTMENT_ID').value = "NONE";
  }
  if (document.getElementById('TYPE_FACILITY_ID').disabled == true) {
	  document.getElementById('TYPE_FACILITY_ID').disabled = false;
	  document.getElementById('TYPE_FACILITY_ID').value = "NONE";
  }
  if (document.getElementById('DISCIPLINE_ID').disabled == true) {
	  document.getElementById('DISCIPLINE_ID').disabled = false;
	  document.getElementById('DISCIPLINE_ID').value = "NONE";
  }
  
  var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
  for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
    if (val) { nm=val.name; if ((val=val.value)!="") {
      if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
        if (p<1 || p==(val.length-1)) errors+='- '+nm+' must contain an e-mail address.\n';
      } else if (test!='R') { num = parseFloat(val);
        if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
        if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
          min=test.substring(8,p); max=test.substring(p+1);
          if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
    } } } else if (test.charAt(0) == 'R') errors += '- '+nm+' is required.\n'; }
  } 
  if (document.getElementById("PASSWORD")!=null && document.getElementById("PASSWORD").value != document.getElementById("PASSWORD_CONFIRM").value) {
		errors += '- Password confirmation failed.\n';
  }
  if (document.getElementById("MEM_USER_Ultrasound").checked && document.getElementById("VENDOR FOR ULTRASOUND").value == '') {
	errors += '- VENDOR FOR ULTRASOUND is required.\n';
  }
  if (document.getElementById("MEM_USER_CT").checked && document.getElementById("VENDOR FOR CT").value == '') {
	errors += '- VENDOR FOR CT is required.\n';
  }
  if (document.getElementById("MEM_USER_Angio").checked && document.getElementById("VENDOR FOR ANGIO").value == '') {
	errors += '- VENDOR FOR ANGIO is required.\n';
  }
  if (document.getElementById("MEM_USER_MRI").checked && document.getElementById("VENDOR FOR MRI").value == '') {
	errors += '- VENDOR FOR MRI is required.\n';
  }
  if (document.getElementById("MEM_USER_CR").checked && document.getElementById("VENDOR FOR CR").value == '') {
	errors += '- VENDOR FOR CR is required.\n';
  }
  if (document.getElementById("MEM_USER_DR").checked && document.getElementById("VENDOR FOR DR").value == '') {
	errors += '- VENDOR FOR DR is required.\n';
  }
  if (document.getElementById("MEM_USER_PACS").checked && document.getElementById("VENDOR_PACS_ID").value == 'NONE') {
	errors += '- PACS VENDOR is required.\n';
  }

  if (!document.getElementById("MEM_USER_Vendor").checked &&
	!document.getElementById("MEM_USER_Radiography").checked &&
	!document.getElementById("MEM_USER_Ultrasound").checked &&
	!document.getElementById("MEM_USER_Mammography").checked &&
	!document.getElementById("MEM_USER_BMD").checked &&
	!document.getElementById("MEM_USER_NuclearMed").checked &&
	!document.getElementById("MEM_USER_CT").checked &&
	!document.getElementById("MEM_USER_Angio").checked &&
	!document.getElementById("MEM_USER_MRI").checked &&
	!document.getElementById("MEM_USER_CR").checked &&
	!document.getElementById("MEM_USER_DR").checked &&
	!document.getElementById("MEM_USER_Laboratory").checked &&
	!document.getElementById("MEM_USER_Respiratory").checked &&
	!document.getElementById("MEM_USER_PACS").checked) {
	  	errors += '- At least one type of EQUIPMENT is required.\n';
  }
	  
  if (errors) alert('The following error(s) occurred:\n'+errors);
  document.MM_returnValue = (errors == '');
}

function formatPhoneNumber(m){
	if (m!=null) {
		p=m.value;	
		if (p != null && p.length > 0) {
		
			// remove previous formatting
			p = p.replace(/-/g,"");
			p = p.replace(/\(/g,"");
			p = p.replace(/\)/g,"");
			p = p.replace(/ /g,"");
			var firstThree = p.substring(0,3);
			var secondThree = p.substring(3,6);
			var end = p.substring(6,p.length);
			p = "(" + firstThree + ") " + secondThree + "-" + end;
		
		}
		m.value = p;
	}
}

function FCO_validateDate(objDate) {

  // Define variables
  var strDate = objDate.value;
  var blnHasError = false;
  var strMessage = 'The following error(s) occurred:\n';
  var arrDaysInMonths = new Array(31,29,31,30,31,30,31,31,30,31,30,31);
  var strValidChars = "1234567890/";

  // If the date field is left empty, don't validate it
  if (strDate.length > 0) {

	// Verify that the entries are numeric
	for (var i=0; i<strValidChars.length; i++) {
		if (strValidChars.indexOf(strDate.substr(i,1)) < 0) {
			blnHasError = true;
			break;
		}
	}

	// Make sure that there are only two slashes
	var arrUnits = strDate.split('/');
	if (arrUnits.length != 3) blnHasError = true;

	if (!blnHasError) {

		// Get the different parts of the date
		var strMonth = strDate.substring(0,strDate.indexOf('/'));
		var strDay = strDate.substring(strDate.indexOf('/')+1,strDate.lastIndexOf('/'));
		var strYear = strDate.substring(strDate.lastIndexOf('/')+1,strDate.length);

		// Verify the length of the fields
		if (strMonth.length != 1 && strMonth.length != 2) blnHasError = true;
		if (strDay.length != 1 && strDay.length != 2) blnHasError = true;
		if (strYear.length != 2 && strYear.length != 4) blnHasError = true;

		// Verify that the month is valid
		if (eval(strMonth) < 1 || eval(strMonth) > 12) blnHasError = true;

		// Verify that the year is valid
		if (eval(strYear) < 1 || eval(strYear) > 9999) blnHasError = true;

		// Verify that the day of the month is valid
		if (eval(strDay) < 1 || eval(strDay) > arrDaysInMonths[eval(strMonth)-1]) blnHasError = true;

	  }

  }

  if (strDate.length > 0) {
  // If there is an error, the date format is invalid.  Append that to the error message.
  // Otherwise, verify that the date is a future date
  if (blnHasError) {

	strMessage += objDate.name + ' is an invalid date format.\n'

  } else {

	// If the date is okay so far, check that it is no earlier than tomorrow
	// Begin by getting tomorrow's date
	var datToday = new Date();	// Gets today's date (and time)
	var datTodayShort = new Date(datToday.getMonth()+1 + '/' + datToday.getDate() + '/' + datToday.getFullYear()); // gets today's midnight
    var intToday = Date.parse(datTodayShort);
    var intNewDate = intToday + 24*60*60*1000 * 1;
    var datTomorrow = new Date(intNewDate);

 	// If the strYear is only two digits, make it four
	if (strYear.length == 2) {
		// If the year entered is from 0-29 inclusive, make it the current century
		// Otherwise, make it the previous century.
		// Eg. 1/1/15 becomes 1/1/2015     1/1/76 becomes 1/1/1976
		if (eval(strYear) < 30) {
			strYear = String(datTomorrow.getFullYear()).substr(0,2) + strYear;
		} else {
			strYear = String(eval(String(datTomorrow.getFullYear()).substr(0,2))-1) + strYear;
		}
	}

	// Prepare the dates for calculation
	var datEntered = new Date(strMonth + '/' + strDay + '/' + strYear);		// Create a date object from the date entered
	intEnteredDate = Date.parse(datEntered);	// Convert the date entered to the number of milliseconds
	intMaxDate = intToday + 24*60*60*1000 * 366;	// The max date is one year from now (366 days)
	intTomorrowDate = intToday + 24*60*60*1000;		// Tomorrow's date is one day from now

	// If the date entered is more than a year away, show the error
	//if (intEnteredDate > intMaxDate) {
	//	blnHasError = true;
 	//	strMessage += objDate.name + ' cannot be more than a year in the future.\n';
	//}

  }
  }

  // Handle the error by displaying it and canceling any actions
  if (blnHasError) {
    alert(strMessage);	// Show the error
    objDate.focus();	// Don't let the user continue without fixing the date
    return false;		// Return false
  }

  return true;

}
