// JavaScript Document

function getElem(id) {
	if(document.getElementById)
		return document.getElementById(id);
	else if(document.all)
		return document.all[id];
	else if(document.layers)
		return document.layers[id];
}

function getStringAfterChar(str, char) {
		var idx = str.indexOf(char);
		return str.substring((idx+1));
}


function UpdateRoleDocs(roleID, docCategory) {
	var form = getElem('role_'+roleID+'_docs');
	var selected = '';
	var notSelected = '';
	
	for(i=0; i<form.elements.length; i++) {
		if (form.elements[i].checked == true) {
			//alert(form.elements[i].name+' is checked');
			var docID = getStringAfterChar(form.elements[i].name, '_');
			if (selected != '') selected = selected + ',';
			selected = selected + docID;
		} else {
			
			//alert(form.elements[i].name+' is not checked');
			var docID = getStringAfterChar(form.elements[i].name, '_');
			if (notSelected != '') notSelected = notSelected + ',';
			notSelected = notSelected + docID;
		}
	}
	
//	var params = 'roleID='+roleID+'&selected='+selected+'&notSelected='+notSelected+'&resourceCat='+docCategory;
	var docID = "#role_"+roleID+"_doc_list";
	
	if (roleID == 8) {
		$(docID).load("responders/UpdateAndRenderListOfDocsByRole.php", {roleID: roleID, selected: selected, notSelected: notSelected, docCategory: docCategory});
		$(docID).highlightFade({color:'yellow',speed:2000,iterator:'sinusoidal'});
		for (i=3; i<=7; i++) {
			docID = "#role_"+i+"_doc_list";
			$(docID).load("responders/UpdateAndRenderListOfDocsByRole.php", {roleID: i, renderOnly: 'true'});	
		}
		
				
		
		
		disableEditRoleDocPopup();
				
	} else {
	
		$(docID).load("responders/UpdateAndRenderListOfDocsByRole.php", {roleID: roleID, selected: selected, notSelected: notSelected, docCategory: docCategory});
		disableEditRoleDocPopup();
		
		$(docID).highlightFade({color:'yellow',speed:2000,iterator:'sinusoidal'});
	}
	$("#otherDocListDiv").highlightFade({color:'yellow',speed:2000,iterator:'sinusoidal'});
	//alert(params);
	
	
}




function HandleVacationLotteryChange() {
	var menu = getElem('vacationLotteryActiveMenu');
	var active = menu.value;
	$('#vacationLotteryActiveContainer').load("responders/UpdateVacationLotteryActive.php", {active: active});
	//alert('about to highlight');
	$('#vacationLotteryActiveForm').highlightFade({color:'yellow',speed:2000,iterator:'sinusoidal'});
}

function HandleRoleChange() {
	UpdateDocSectionsMenu();
	HandleDocSelectChange();
}

function HandleDocSelectChange() {
	var docCat = getElem('doc_category').value;
	var docYearLabel = getElem('doc_year_label');
	var docYearSelect = getElem('doc_year');
	if ((docCat.indexOf('_meeting_') != -1) || (docCat.indexOf('newsletters') != -1)) {
		docYearLabel.style.display = '';
		docYearSelect.style.display = '';
	}  else {
		docYearLabel.style.display = 'none';
		docYearSelect.style.display = 'none';
		
		
	}
	

	
}

/*
function UploadDocument() {
	
new Ajax_upload('#document', {
		//action: 'upload.php',
		action: 'responders/UploadDocument.php', // I disabled uploads in this example for security reaaons
		name: 'document',
		onComplete : function(file){
			$('<li></li>').appendTo('#otherDocList').text(file);	
		}	
	});		
//new AjaxUpload('document', {action: 'UploadDocument.php'});
var name = getElem('doc_name');
alert(name.value);
	
	
}
*/

function ShowRoleDiv(roleID) {
	$("#role_"+roleID+"_doc_list").css({"display": ""});
	$("#show_role_"+roleID).css({"background":"#ccc"});
	
	for (i=3; i<=8; i++) {
		if (i != roleID) {
			$("#role_"+i+"_doc_list").css({"display": "none"});
			$("#show_role_"+i).css({"background":""});
			
		}
		
		
	}
	
}
function ProcessUploadDocument() {
	var name = getElem('doc_name');
	var category = getElem('doc_category');
	var year = null;
	if ((category.value.indexOf('_meeting_') != -1) || (category.value.indexOf('newsletters') != -1)) {
		year = getElem('doc_year');
	}
	var role_id = getElem('doc_role');
	var newDocName = getElem('newDocName');
	if (year != null) {
	//	alert(trim(year.value));
		var fields = 'doc_name='+name.value+',doc_category='+category.value+',doc_role='+role_id.value+',newDocName='+newDocName.value+ ',doc_year='+trim(year.value);
	} else {
		var fields = 'doc_name='+name.value+',doc_category='+category.value+',doc_role='+role_id.value+',newDocName='+newDocName.value; 
	}
	var errors = '';
	var errorFields = '';
	
	if (name.value == '') {
		errors = 'Name can not be left blank.';
		errorFields = errorFields+'doc_name';
		
	}
	if (errors != '') {
		//failure
		$("#uploadFormContainer").load("responders/UploadDocument.php", {errors: errors, fields: fields, errorFields: errorFields});
	} else {
		//need to reset upload form
		var fieldString = 'fields='+fields;
		jQuery.ajax({
			   url: 'responders/CreateResourceAndPermission.php',
			   data: fieldString,
			   async: false

		 });
		
	
		var roles = Array();
		roles[3] = 'Partner Physician';
		roles[4] = 'Employed Physician';
		roles[5] = 'CRNA';
		roles[6] = 'RN';
		roles[7] = 'Office Staff';
		roles[8] = 'All Users';

		var section = '';
		switch (category.value) {
			case 'role_documents':
				section = 'Role-Specific Documents';
				break;
			case 'newsletters':
				section = 'Newsletters';
				break;
			case 'practice_params':
				section = 'Practice Parameters';
				break;
			case 'phys_schedule':
				section = 'Physicians Schedules';
				break;
			case 'hr_policy_manuals':
				section = 'Human Resources Policy Manuals';
				break;
			case 'hr_forms':
				section = 'Human Resources Forms';
				break;
			case 'phys_lottery_results_name':
				section = 'Physician Vacation Lottery Results By Name';
				break;
			case 'phys_lottery_results_week':
				section = 'Physician Vacation Lottery Results By Week';
				break;
			case 'crna_lottery_results':
				section = 'CRNA Vacation Lottery Results';
				break;
				
				
			case 'personnel_com_meeting_mins':
				section = 'Personnel Committee Meeting Minutes';
				break;
			case 'clinical_com_meeting_mins':
				section = 'Clinical Committee Meeting Minutes';
				break;
			case 'finance_com_meeting_mins':
				section = 'Finance Committee Meeting Minutes';
				break;
			case 'exec_com_meeting_mins':
				section = 'Executive Committee Meeting Minutes';
				break;
			case 'board_s_holders_com_meeting_mins':
				section = 'Board Stockholders Meeting Minutes';
				break;
			case 'phys_admin_com_meeting_mins':
				section = 'Physician/Administration Meeting Minutes';
				break;
			case 'pphys_special_meeting_mins':
				section = 'Physician Special Meeting Minutes';
				break;
			case 'crna_special_meeting_mins':
				section = 'CRNA Special Meeting Minutes';
				break;
			case 'liaison_com_meeting_mins':
				section = 'Liaison Committee Meeting Minutes';
				break;
		}


		if (role_id.value != 0) {
			if (category.value != 'liaison_com_meeting_mins') {
				alert('\''+name.value+'\' has been saved and assigned to the \''+section+'\' category for the \''+roles[role_id.value]+'\' role.');
			} else {
				alert('\''+name.value+'\' has been saved and assigned to the \''+section+'\' category for Partner Physicians and CRNAs.');
			}
			
			var docID = '';
			
			//if this is for 'any user'
			if (role_id.value == 8) {
				for (i=3; i<=8; i++) {
					docID = "#role_"+i+"_doc_list";
					$(docID).load("responders/UpdateAndRenderListOfDocsByRole.php", {roleID: i, renderOnly: 'true'});
					$(docID).highlightFade({color:'yellow',speed:2000,iterator:'sinusoidal'});	
				}
				
			} else {
				if (category.value != 'liaison_com_meeting_mins') {
					docID = "#role_"+role_id.value+"_doc_list";
					$(docID).load("responders/UpdateAndRenderListOfDocsByRole.php", {roleID: role_id.value, renderOnly: 'true'});
					$(docID).highlightFade({color:'yellow',speed:2000,iterator:'sinusoidal'});
					
				} else {
					docID = "#role_3_doc_list";
					$(docID).load("responders/UpdateAndRenderListOfDocsByRole.php", {roleID: role_id.value, renderOnly: 'true'});
					$(docID).highlightFade({color:'yellow',speed:2000,iterator:'sinusoidal'});
					docID = "#role_5_doc_list";
					$(docID).load("responders/UpdateAndRenderListOfDocsByRole.php", {roleID: role_id.value, renderOnly: 'true'});
					$(docID).highlightFade({color:'yellow',speed:2000,iterator:'sinusoidal'});
				}

			}
		
		} else {
			alert('\''+name.value+'\' has been saved and assigned to all roles.');
			$("#otherDocList").load("responders/RenderListOfOtherDocs.php");
			$("#otherDocListDiv").highlightFade({color:'yellow',speed:2000,iterator:'sinusoidal'});

		}
		//$('#popupAddForm').load("responders/UpdateEditDocList.php");
		//reset reload form
		
		$('#doc_category').attr('selectedIndex',0);
		$('#doc_role').attr('selectedIndex',0);
		$('#doc_name').attr('value','');
		$('#submitDocument').attr('disabled','disabled');
		$('#doc_year_label').attr('style','display:none');
		$('#doc_year').attr('selectedIndex', 0);
		$('#doc_year').attr('style','display:none');
		
		
		//do something here to re-enable the upload button?
		$('#document').text('Click Here to Select Document to Upload');
		
		

	}  //end no errors	
	
} //end function






function UpdateUser(userID) {
	var form = getElem('user_'+userID+'_form');
	var button = getElem('update_user_'+userID);
	button.innerHTML = 'Please Wait.';
	button.onclick = '';


	var vals = new Array();
	var errors = '';
	var fields =  '';
	var errorFields = '';
	for(i=0; i<form.elements.length; i++) {
		vals[form.elements[i].name] = form.elements[i].value;
		
		//keeping up with old values in case form is invalid
		if (fields != '') fields = fields + ',';
		fields = fields + form.elements[i].name + '=' + form.elements[i].value;
		//need to make sure there is something for all of these fields
		if ((form.elements[i].name == 'name') || (form.elements[i].name == 'username') || (form.elements[i].name == 'password')) {
			
			if (!isBetweenCharLen(form.elements[i].value, 1, 255)) {
				errors = errors + capWord(form.elements[i].name) + ' can not be left blank.<br/>';
				if (errorFields != '') errorFields = errorFields + ',';
				errorFields = errorFields + form.elements[i].name;
				
			}
					
					
				
				
		}
			
			
		
	
	}
	if (errors == '') {
		$("#edit_users_list").load("responders/UpdateAndRenderUserList.php", {id: vals['id'], name: vals['name'], username: vals['username'], password: vals['password'], email_address: vals['email_address'], phone_number: vals['phone_number'], role_id: vals['role_id'], note: vals['note'], fields: fields});
		
		
		
	} else {
		$("#edit_user_forms").load("responders/EditUser.php", {userID: userID, errors: errors, fields: fields, errorFields: errorFields});
		button.onclick = "UpdateUser('"+userID+"')";

	}
	
	
}

function DeleteUser(userID) {
	$("#edit_users_list").load("responders/DeleteUserAndRenderUserList.php", {id: userID});
	disableDeleteUserPopup();
}





function ChangeRole(newRoleID) {
	jQuery.ajax({
			   url: 'responders/ChangeRole.php',
			   data: 'newRoleID='+newRoleID,
			   dataType: "html",
			   async: false,
			   success: function(msg) {
				   alert(trim(msg));
				   window.location='index.php';
			   }

		 });	
	
	
}




//validation functions//

function isBetweenCharLen(str,minLen,maxLen) {
  tmp = (minLen <= str.length) && (maxLen >= str.length);
  return tmp;
}

function isEmail(str) {
  re=/^[^@\s]+@[^@\s.]+(\.[^@\s.]+)+$/;
  tmp = re.test(str);
  return tmp;
}

function isZip(str) {
   re=/^[0-9]{5}(-[0-9]{4})?$/;
   tmp = re.test(str);
   if (tmp == false) {
    re=/^[0-9A-Za-z]{3}\s?-?[0-9A-Za-z]{3}$/;
    tmp = re.test(str);
   }
  return tmp;
}

function isPhoneNum(str) {
  //re=/^\(?[0-9]{3}[-)\s.\/]+[0-9]{3}[-\s.\/]+[0-9]{4}$/;
  re = /^(\+\d)*\s*(\(\d{3}\)\s*)*\d{3}(-{0,1}|\s{0,1})\d{2}(-{0,1}|\s{0,1})\d{2}$/;
  tmp = re.test(str);
  return tmp;
}

function capWord(str){ 
   	var rv = ''; 
	var firLet = str.substr(0,1); 
	var rest = str.substr(1, str.length -1);
	rv = firLet.toUpperCase() + rest;
	return rv;
}

function trim(str, chars) {
	return ltrim(rtrim(str, chars), chars);
}
 
function ltrim(str, chars) {
	chars = chars || "\\s";
	return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}
 
function rtrim(str, chars) {
	chars = chars || "\\s";
	return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}

