// NOTICE:
// This is a development file. 
// Production files are generated from this file during build/release process.
// Code will be minified ie. Comments and whitespace will be stripped.
// File will be versioned to avoid browser cache issues. 
// We could also set far suture expire header.

	function checkForMessageCall(){
		MessageRemoteService.checkForMessage(checkForMessageCallback);
	}

	function checkForMessageCallback(returnValue) {
		if(returnValue){
			MessageRemoteService.getMessage(getMessageCallback);
		}
		else{
			// close any open message modal boxes if checkForMessageCall returned false
			setTimeout('try{Modalbox.hide();} catch(err) { }', 1000);
		}
	}

	function getTimeRemainingBeforeLogOff(){
		SessionRemoteService.getTimeRemainingBeforeLogOff(getTimeRemainingBeforeLogOffCallback);
	}
	
	function getTimeRemainingBeforeLogOffCallback(returnValue) {
		// ReturnValue is in seconds. JS likes milliseconds 
		returnValue = returnValue *1000;
		// default is for all pages to expire   
		if(!persistantSessionPage){
			if(returnValue <= 0){
				//Session has been Closed
				window.location = "/public/sessionExpire.jsp";
			}else{
				if(0 < returnValue < 60250){
					// minute or less remaining ask if want to extend the session.
					sessionExtendDialog(returnValue);
				}else{
					// returnValue has more than a minute remaining before timeout check again later
					clearTimeout(sessionTimeCheck);
					// console.log(returnValue);
					sessionTimeCheck = setTimeout("getTimeRemainingBeforeLogOff()", returnValue-60000);
				}
			}
		// some pages like vetInbox will bypass the check portion and simply reset periodically.
		}else{
			resetTimeRemainingBeforeLogOff();
		}
	}
	
	var modalKiller
	var sessionKiller
	function sessionExtendDialog(timeLeft) {
		modalKiller = setTimeout('Modalbox.hide()', timeLeft);
		sessionKiller = setTimeout('window.location = "/public/sessionExpire.jsp";', timeLeft+250);
		var modalButtons = '<input type="button" class="modalButton" value="Close" onclick="Modalbox.hide();" />';
		var modalContent = '<div class="urgentMessage"><p>Your login session is about to expire. Would you like to extend it?</p></div>';
		// modalButtons += '<input type="button" class="modalButton" value="No" onclick="Modalbox.hide();" />';
		modalButtons += '<input type="button" class="modalButton" value="Yes" onclick="clearTimeout(sessionKiller); clearTimeout(modalKiller); Modalbox.hide(); resetTimeRemainingBeforeLogOff();" />';
		Modalbox.show( modalContent + modalButtons, {title:"Extend Login?"});
	}
	
	function resetTimeRemainingBeforeLogOff() {
		SessionRemoteService.resetTimeRemainingBeforeLogOff(resetTimeRemainingBeforeLogOffCallback);
	}
	
	function resetTimeRemainingBeforeLogOffCallback(returnValue) {
		returnValue = returnValue *1000;
		if(returnValue<=0) {
			//Session has already been Closed
			window.location = "/public/sessionExpire.jsp";
		}
		//if(returnValue == 0 ) {
			// session has Timed out but not killed - reset didn't work...?
			// alert('sessiontimeoutReturn = 0 can still reset');
		//}
		//if(returnValue > 0) {
		else{
			// returnValue has been reset and this is time remaining before timeout
			// alert('sessiontimeoutReturn = Time Remaining:'+returnValue + ':');
			clearTimeout(sessionTimeCheck);
			// console.log(returnValue);
			sessionTimeCheck = setTimeout("getTimeRemainingBeforeLogOff()", returnValue-60000);
		}
	}

	function getMessageCallback(returnValue) {
		// check for valid message
		if(returnValue.id != -1){
			var commonTriggers = 'sendMessageResponse(this.value, '+returnValue.id+');';
			var commonButtonHTML = '<input type="button" class="modalButton" value="';
			var buttons;
			var modalWidth;
			switch(returnValue.buttonOption){
				case 'needsAcknowledge':
					buttons = commonButtonHTML+'Acknowledge" onclick="'+commonTriggers+'" />';
					buttons += commonButtonHTML+'Later" onclick="'+commonTriggers+'" />';
					break;
				case 'needsAgreement':
					buttons = commonButtonHTML+'I Agree" onclick="'+commonTriggers+'" />';
					buttons += commonButtonHTML+'Later" onclick="'+commonTriggers+'" />';
					break;
				case 'needsConditionalAgreement':
					buttons = commonButtonHTML+'I Agree" disabled="true" id="conditionalAgree" onclick="'+commonTriggers+'" />';
					buttons += commonButtonHTML+'Later" onclick="'+commonTriggers+'" />';
					break;
				case 'forcedAgreement':
					buttons = commonButtonHTML+'I Agree" onclick="'+commonTriggers+'" />';
					buttons += commonButtonHTML+'Log Out" onclick="'+commonTriggers+'" />';
					break;
				case 'forcedConditionalAgreement':
					buttons = commonButtonHTML+'I Agree" disabled="true" id="conditionalAgree" onclick="'+commonTriggers+'" />';
					buttons += commonButtonHTML+'Log Out" onclick="'+commonTriggers+'" />';
					break;
				default:
					buttons = commonButtonHTML+'Opps, message error" onclick="Modalbox.hide();" />';
			}
			switch(returnValue.messageSize){
				case 'small': modalWidth = 300; break;
				case 'large': modalWidth = 600; break;
				default: modalWidth = 450;
			}
			// build the content separately - easier to manage
			var modalContent = '<div class="urgentMessage"><p><b>' +returnValue.messageSummary +'</b></p><p>'+returnValue.messageBody+'</p>'+buttons+'</div>';
			Modalbox.show(modalContent, {title: returnValue.messageTitle, overlayClose:false, width: modalWidth});
		}
		else{
			// not sure what we want to do if we don't get a valid message... tell the user?
			Modalbox.show('<p>weirdness!!! sorry...</p>', {title:'fail...'});
			setTimeout('Modalbox.hide()', 2000);
		}
	}
	
	function modalPopupMessage(messageTitle, messageBody) {
		Modalbox.show('<p>' + messageBody + '</p><input type="button" class="modalButton" value="Close" onclick="Modalbox.hide();" />', {title:messageTitle});
		setTimeout('Modalbox.hide()', 200000);
	}
	
	function modalPopupConfirm(messageTitle, messageBody) {
		Modalbox.show('<p>' + messageBody + '</p><input type="button" class="modalButton" value="Close" onclick="Modalbox.hide();" /><input type="button" class="modalButton" value="No" onclick="Modalbox.hide();" /><input type="button" class="modalButton" value="Yes" onclick="Modalbox.hide();" />', {title:messageTitle});
		setTimeout('Modalbox.hide()', 200000);
	}

	function sendMessageResponse(userInput, messageId) {
		switch(userInput){
			case 'Later': MessageRemoteService.responseLater(messageId, messageReceiptConfirmation); break;
			case 'I Agree': MessageRemoteService.responseAgree(messageId, messageReceiptConfirmation);	break;
			//case 'Log Out': MessageRemoteService.responseDecline(messageId, messageReceiptConfirmation); break;
			case 'Log Out': window.location = '/login.jsp'; break;
			case 'Acknowledge': MessageRemoteService.responseAcknowledge(messageId, messageReceiptConfirmation); break;
		}
	}
	
	function messageReceiptConfirmation(received){
		if(received){
			Modalbox.show('<p>Your response was received.</p>', {title:'Thanks!'});
			setTimeout('checkForMessageCall();', 500);
		}
		else{
			Modalbox.show('<p>lost in translation!!! sorry...</p>', {title:'fail...'});
			setTimeout('checkForMessageCall();', 500);
		}
	}

	function showMenu(menuId) {
		Effect.toggle($(menuId), 'appear', { duration: 0.1 });
		$(menuId).previous("a.label").toggleClassName("open");
	}

	function processEnter(e) {
		if ((e.keyCode||e.charCode) == 13) {
			(e.srcElement||e.target).form.submit();
			return false;
		}
	}

	function confirmCertStep(newStep) {
		if (newStep <= 2) {
			return confirm("You are about to navigate to a previous step in the certificate creation process.\nCertain changes to this previous step may require reentry of data to subsequent steps.\n\nDo you want to continue?");
		}
		return true;
	}