dojo.addOnLoad(function(){
	var popUps = new Array();
	popUps['privacyStatement'] = 'privacyStatement';
	popUps['benefitsStatement'] = 'benefitsStatement';
	popUps['newUserTerms'] = 'newUserTerms';
	
	var processingPath = '/assets/processing/';
	var pageName = /mymassgeneral.aspx/i;
	var homePage = "/default.aspx";
	var pageLocation = '/myMassGeneral.aspx';	
	
	var popUpWidth = 650;
	var popUpHeight = 700;
	var popUpMargin = 10;
	var currentPopUp = '';
	var popUpsDisplaying = 0;
	var nodeName = '';
	var currentDialog = '';
	var currentEmail = '';
	var currentUser = '';
	var itemToDelete = '';
	var defaultFontSize = 12;
	var originalPanelPosition;
	var panelY;
	var panelWidth = 638;	
	var panelSpacing = 20;
	var login = {
		fields 	: ["loginEmail","loginPassword"],
		dialog 	: "loginDialog",
		form 	: "loginForm",
		show 	: "showLogin",
		hide 	: "closeLoginDialog",	
		button 	: "loginButton",
		counter : 0,
		width 	: panelWidth,
		height 	: 400
	};
	
	var getPassword = {
		fields	: ["getPasswordEmail"],
		dialog	: "getPasswordDialog",
		form 	: "getPasswordForm",		
		show	: "getPasswordLink",
		hide	: "closeGetPasswordDialog",
		button	: "getPasswordButton",
		counter	: 0,
		width 	: panelWidth,		
		height	: 460		
	};
	
	var newUser = {
		fields	: ["newUserEmail","newUserPassword","newUserConfirmPassword","newUserPageTitle","newUserAcceptTerms"],
		dialog	: "newUserDialog",
		form	: "newUserForm",		
		show	: "newUserLink",
		hide	: "closeNewUserDialog",		
		button	: "newUserButton",
		counter	: 0,
		width	: panelWidth,		
		height	: 435
	};
	
	var addPage = {
		fields	: ["addPageCustomLabel"],
		dialog	: "addPageDialog",
		form	: "addPageForm",		
		show	: "showAddPage",
		hide	: "closeAddPageDialog",		
		button	: "addPageButton",
		counter	: 0,
		width	: panelWidth,		
		height	: 336
	};	
	
	var editCustomLabel = {
		fields	: ["editCustomLabel"],
		dialog	: "editLabelDialog",
		form	: "editLabelForm",		
		show	: "showEditLabel",
		hide	: "closeEditLabelDialog",		
		button	: "editLabelButton",
		counter	: 0,
		width	: panelWidth,		
		height	: 426
	};	
	
	var deleteItem = {
		fields	: [],
		dialog	: "deleteItemDialog",
		form	: "deleteItemForm",		
		show	: "showDeleteItem",
		hide	: "closeDeleteItemDialog",		
		button	: "deleteItemButton",
		counter	: 0,
		width	: panelWidth,		
		height	: 426
	};	
	
	var deleteAccount = {
		fields	: [],
		dialog	: "deleteAccountDialog",
		form	: "deleteAccountForm",		
		show	: "showDeleteAccount",
		hide	: "closeDeleteAccountDialog",		
		button	: "deleteAccountButton",
		counter	: 0,
		width	: panelWidth,		
		height	: 426
	};

	var emailPage = {
		fields	: ["emailPageSenderName","emailPageSenderEmail","emailPageReceipientEmail"],
		dialog	: "emailPageDialog",
		form	: "emailPageForm",		
		show	: "showEmailPage",
		hide	: "closeEmailPageDialog",		
		button	: "emailPageButton",
		counter	: 0,
		width	: panelWidth,		
		height	: 468
	};
	
	var sharePage = {
		fields	: [],
		dialog	: "sharePageDialog",
		form	: "sharePageForm",		
		show	: "showSharePage",
		hide	: "closeSharePageDialog",		
		button	: "sharePageButton",
		counter	: 0,
		width	: panelWidth,		
		height	: 375
	};

	//searchAsYouType.initialize(document.getElementById('searchBox'), false);
	//Notes: changes made to dojo include using dojo.regex 1.2 and dijit.dialog 1.2 instead of their 1.3 versions
	//********************************** initialize screens, called at the very bottom *************************************
	initMyMgh = function(){
		//dojo.byId('redirectOptions').style.display = 'none';	
		dojo.xhrGet({
			url: processingPath + "checkEmail.aspx",
			handleAs: "json",
			load: function(response, ioArgs){
				try {										
			  		if (response.email == '' || response.email == null){
						//not logged in
						if (pageName.test(window.location)){
							initPanelForms(login.dialog);
							dojo.byId('login').style.display = 'block';
							dojo.byId('addPage').style.display = 'none';
							dojo.byId('emailPage').style.display = 'none';
						} else {
							dojo.byId('login').style.display = 'none';
							dojo.byId('addPage').style.display = 'block';
							dojo.byId('emailPage').style.display = 'none';							
						}										
			  		} else {
			  			//logged in
						currentEmail = response.email;
						currentUser = response.name;
			  			if (pageName.test(window.location)){
							dojo.byId('login').style.display = 'none';
							dojo.byId('emailPage').style.display = 'none';
							dojo.byId('addPage').style.display = 'none';		  			
			  			} else {
							dojo.byId('login').style.display = 'none';
							dojo.byId('emailPage').style.display = 'none';	
							dojo.byId('addPage').style.display = 'block';
			  			}		  								
	
						if (pageName.test(window.location)){
							//dojo.byId('addPage').style.display = 'none';
							jQuery('#myMghLinksTable').tablesorter();
							
							//only when logged in add this event listener
						//********************************** mymgh top nav event listeners *************************************						
							dojo.connect(dojo.byId('showLogoutRight'),'onclick',function (){
								dojo.xhrGet({
								url: processingPath + "logOut.aspx",
								handleAs: "json",
								mimetype: "text/json-comment-filtered",
								load: function(response, ioArgs){
									logOut(response.status);								
									return response;
								},
								error: function(response, ioArgs){
								  alert("An error occurred, with response: " + response);
								  return response;
								}
							  });
							});
							
							dojo.connect(dojo.byId('showEmailPageRight'),'onclick',function (){
						        dojo.byId('emailPageSenderEmail').value = currentEmail;
								initPanelForms(emailPage.dialog);
								if (pageName.test(window.location)){
									try {
										getMyMghLinks();					
									} catch (e) {
										console.log(e);	
									}
								} else {
									dojo.byId("emailPageLocation").value = window.location;
								}							
							});
					
						//********************************** delete item panel event listeners *************************************						
							dojo.connect(dojo.byId(deleteItem.button),'onclick', function(){	
								dojo.xhrGet({
									url: processingPath + "deleteItem.aspx?pageId=" + itemToDelete,
									handleAs: "json",
									mimetype: "text/json-comment-filtered",
									load: function(response, ioArgs){
										dijit.byId(deleteItem.dialog).hide();
										alert("Item Deleted Successfully");									
										itemToDelete = '';
										location.reload();
										return response;
									},
									error: function(response, ioArgs){
									  alert("An error occurred, with response: " + response);
									  return response;
									}
								});								
							});
							
							dojo.connect(dojo.byId('cancelDeleteItemButton'),'onclick', function(){	
								dijit.byId(deleteItem.dialog).hide();
							});
							
							dojo.connect(dojo.byId(deleteItem.hide),'onclick', function(){	
								dijit.byId(deleteItem.dialog).hide();
							});						
						
						//********************************** delete account panel event listeners *************************************						
							dojo.connect(dojo.byId(deleteAccount.button),'onclick', function(){	
								dojo.xhrGet({
									url: processingPath + "deleteMyMghAccount.aspx",
									handleAs: "json",
									mimetype: "text/json-comment-filtered",
									load: function(response, ioArgs){
										if (response.status != 'fail'){
											dijit.byId(deleteAccount.dialog).hide();
											//alert("Item Deleted Successfully");									
											//location.reload();
											location.replace(homePage);
											return response;
										} else {
											alert ('Account was not deleted');
										}
									},
									error: function(response, ioArgs){
									  alert("An error occurred, with response: " + response);
									  return response;
									}
								});								
							});
							
							dojo.connect(dojo.byId('cancelDeleteAccountButton'),'onclick', function(){	
								dijit.byId(deleteAccount.dialog).hide();
							});
							
							dojo.connect(dojo.byId(deleteAccount.show),'onclick', function(){	
								initPanelForms(deleteAccount.dialog);
							});	
							
							dojo.connect(dojo.byId(deleteAccount.hide),'onclick', function(){	
								dijit.byId(deleteAccount.dialog).hide();
							});							
						} else {
							//dojo.byId('addPage').style.display = 'block';				
						}
			  		}
			  	jQuery(window).keydown(function(event){
					switch (event.keyCode) {
						case 27 :
							jQuery('.popUpMenu:visible').each(function(){
								fadeNodeOut(jQuery(this).attr('id'));
							});
						break;
					}
				});
				 
				} catch (ex) {
					
				}
			}
		});		
	};
	
	//********************************** login panel event listeners *************************************
	dojo.connect(dojo.byId(login.show),'onclick',function(){
		initPanelForms(login.dialog);
	});

	dojo.connect(dojo.byId(login.hide),'onclick', function(){					
		dijit.byId(login.dialog).hide();
		fadeNodeOut(currentPopUp);
	});

	dojo.connect(dojo.byId(login.button),'onclick',function(){ 
		logIn(login.form)
	});
	
	dojo.connect(dojo.byId('newUserLink'),'onclick', function(){		
		initPanelForms(newUser.dialog);
	});

	//********************************** get password panel event listeners *************************************
	dojo.connect(dojo.byId(getPassword.show),'onclick', function(){					
		initPanelForms(getPassword.dialog);	
		dojo.byId('getPasswordEmail').value = '';
	});
	
	dojo.connect(dojo.byId(getPassword.hide),'onclick', function(){					
		dijit.byId(getPassword.dialog).hide();
		fadeNodeOut(currentPopUp);
	});
	
	dojo.connect(dojo.byId('getPasswordLoginLink'),'onclick', function(){					
		initPanelForms(login.dialog);
		fadeNodeOut(currentPopUp);
	});	
	
	dojo.connect(dojo.byId('getPasswordNewUserLink'),'onclick', function(){		
		initPanelForms(newUser.dialog);
	});		
	
	dojo.connect(dojo.byId(getPassword.button),'onclick',function(){ 
		dojo.xhrPost({
		url: processingPath + "getPassword.aspx",
		handleAs: "json",
		mimetype: "text/json-comment-filtered",
		load: function(response, ioArgs){
			if (response.status == 'found'){
				alert("Your password information was sent to the following address:\n" + response.email);
				dijit.byId(getPassword.dialog).hide();
				fadeNodeOut(currentPopUp);
			} else {
				alert("Your email address was not found. \n Please, either re-enter it, or create a \n new user account.");
				document.forms[getPassword.form].reset();
			}
			return response;
		},
		error: function(response, ioArgs){
		  alert("An error occurred, with response: " + response);
		  return response;
		},			
		form: getPassword.form
	  });
	});	
	
	//********************************** new user panel event listeners *************************************
	dojo.connect(dojo.byId(newUser.hide),'onclick', function(){			
		dijit.byId(newUser.dialog).hide();
		fadeNodeOut(currentPopUp);
	});
		
	dojo.connect(dojo.byId('newUserLoginLink'),'onclick', function(){		
		initPanelForms(login.dialog);
	});
	
	dojo.connect(dojo.byId(newUser.button),'onclick',function(){
		var confirmed = dojo.byId('newUserConfirmPassword');
		var password = dojo.byId('newUserPassword');
		
		if (password.value != confirmed.value){
			confirmed.value = '';
			confirmed.focus();
			enableSubmitButton(newUser.fields,newUser.button);
		} else {
			dojo.xhrPost({
			url: processingPath + "newUser.aspx",
			handleAs: "json",
			mimetype: "text/json-comment-filtered",
			load: function(response, ioArgs){
				if (response.status == 'found'){
					alert("Your email address, " + response.email + ", is an existing address. \n Please Log-in.");
					dijit.byId(newUser.dialog).hide();
					initPanelForms(login.dialog);
				} else {
					//alert("Your account has been created. You will be logged in automatically.");
					logIn(newUser.form);
				}
				return response;
			},
			error: function(response, ioArgs){
			  alert("An error occurred, with response: " + response);
			  return response;
			},			
			form: newUser.form
		  });					
		}		
	});		
	
	//********************************** addPage panel event listeners *************************************	
	dojo.connect(dojo.byId(addPage.show),'onclick', function (){								
		dojo.xhrGet({
			url: processingPath + "checkEmail.aspx",
			handleAs: "json",
			load: function(response, ioArgs){
				//console.log('not logged in -' + ' ' + response.email);
				if (response.email == '' || response.email == null){
					initPanelForms(login.dialog);	
					//console.log(login.counter);								
				} else {
					initPanelForms(addPage.dialog);											
				}
			}
		});	

		var titleRoot = 'Massachusetts General Hospital - ';
		var title = jQuery("title").html();
		//var description = jQuery(".introTxt").text();
		var description = jQuery("meta[name='Description']").attr('content');
		//alert(description);
		//title = title.substring(titleRoot.length,title.length);
		
		dojo.byId("addPageLocation").value = window.location;
		dojo.byId("addPageUrl").innerHTML = '<b>"' + title + '"</b>';
		dojo.byId("addPageTitle").value = title;
		dojo.byId("addPageDescription").value = description;
		dojo.byId("addPageCustomLabel").value = 'Insert label';		
	});	
	
	dojo.connect(dojo.byId('goToMyMghPageButton'),'onclick', function(){					
		dijit.byId(addPage.dialog).hide();
		fadeNodeOut(currentPopUp);
		location.replace(pageLocation);
	});	

	dojo.connect(dojo.byId(addPage.hide),'onclick', function(){					
		dijit.byId(addPage.dialog).hide();
		fadeNodeOut(currentPopUp);
	});

	dojo.connect(dojo.byId(addPage.button),'onclick',function(){ 
		dojo.xhrPost({
		url: processingPath + "addPage.aspx",
		handleAs: "json",
		mimetype: "text/json-comment-filtered",
		load: function(response, ioArgs){
			if (response.status == "success"){
				//alert("Page added succesfully. To go to your MyMGH page press the button in the panel. To close press the close button");
				//dijit.byId(addPage.button).setDisabled(true);
				//dijit.byId(addPage.dialog).hide();
				//6/18 change: when page is added, redirect to MyMassGeneral
				location.replace(pageLocation);
			} else{
				alert("Invalid email address. Page was not added")
			}
			return response;
		},
		error: function(response, ioArgs){
		  alert("An error occurred, : " + response);
		  return response;
		},			
		form: addPage.form
	  });
	});
	
	
	//********************************** editLabel panel event listeners *************************************
	dojo.connect(dojo.byId('editLabelPrivacyLink'),'onclick',function(){
		fadeNodeIn('privacyStatement');
	});
	
	dojo.connect(dojo.byId(editCustomLabel.hide),'onclick', function(){					
		dijit.byId(editCustomLabel.dialog).hide();
		fadeNodeOut(currentPopUp);
	});		

	dojo.connect(dojo.byId('editLabelButton'),'onclick',function(){ 
		dojo.xhrPost({
		url: processingPath + "editLabel.aspx",
		handleAs: "json",
		mimetype: "text/json-comment-filtered",
		load: function(response, ioArgs){
			if (response.status == "success"){
				//alert("Page Label Edited Succesfully.");
				
				//close panel
				dijit.byId('editLabelDialog').hide();
				
				//reload if page is mymgh
				if (pageName.test(window.location)){
					location.reload();
				}
			} else{
				alert("Invalid email address. Page was not added")
			}
			return response;
		},
		error: function(response, ioArgs){
		  alert("An error occurred, : " + response);
		  return response;
		},			
		form: editCustomLabel.form
	  });
	});	
	
	//********************************** emailPage panel event listeners *************************************

	dojo.connect(dojo.byId(emailPage.show),'onclick',function (){
        dojo.byId('emailPageSenderEmail').value = currentEmail;
		initPanelForms(emailPage.dialog);
		if (pageName.test(window.location)){
			try {
				getMyMghLinks();					
			} catch (e) {
				console.log(e);	
			}
		} else {
			dojo.byId("emailPageLocation").value = window.location;
		}							
	});

	dojo.connect(dojo.byId(emailPage.hide),'onclick', function(){					
		dijit.byId(emailPage.dialog).hide();
		fadeNodeOut(currentPopUp);
	});

	dojo.connect(dojo.byId(emailPage.button),'onclick',function(){ 
		getCheckedLinks();
		dojo.xhrPost({
		url: processingPath + "emailPage.aspx",
		handleAs: "json",
		mimetype: "text/json-comment-filtered",
		load: function(response, ioArgs){
			if (response.status == "success"){
				alert("This page was sent to the following email address: \n" + response.receipient);					
			} else {
				alert("Invalid email address. Page was not sent. Please try again");
			}
			dojo.byId('myMghLinks').style.display = 'none';
			dijit.byId(emailPage.dialog).hide();
			dojo.byId('emailPageName').value = 'regular';
			return response;
		},
		error: function(response, ioArgs){
			alert("An error occurred, : " + response);
			return response;
		},			
		form: emailPage.form
	  });
	});		
	
	//********************************** privacy statement event listeners *************************************
	dojo.connect(dojo.byId('privacyLink'),'onclick', function(){	
		fadeNodeIn('privacyStatement');
	});	
	
	dojo.connect(dojo.byId('getPasswordPrivacyLink'),'onclick', function(){
		fadeNodeIn('privacyStatement');
	});
	
	dojo.connect(dojo.byId('newUserPrivacyLink'),'onclick', function(){
		fadeNodeIn('privacyStatement');
	});	
			
	dojo.connect(dojo.byId('addPagePrivacyLink'),'onclick', function(){
		fadeNodeIn('privacyStatement');
	});

	dojo.connect(dojo.byId('emailPagePrivacyLink'),'onclick', function(){
		fadeNodeIn('privacyStatement');
	});
	
	dojo.connect(dojo.byId('closePrivacyStatement'),'onclick',function(){
		fadeNodeOut('privacyStatement');
	});
		
	//********************************** benefits event listeners *************************************
	dojo.connect(dojo.byId('benefitsLink'),'onclick', function(){	
		fadeNodeIn('benefitsStatement');
	});
	
	dojo.connect(dojo.byId('newUserBenefitsLink'),'onclick', function(){	
		fadeNodeIn('benefitsStatement');
	});			

	dojo.connect(dojo.byId('emailPageBenefitsLink'),'onclick', function(){	
		fadeNodeIn('benefitsStatement');
	});
	
	dojo.connect(dojo.byId('getPasswordBenefitsLink'),'onclick', function(){	
		fadeNodeIn('benefitsStatement');
	});	
	
	dojo.connect(dojo.byId('closeBenefitsStatement'),'onclick',function(){
		fadeNodeOut('benefitsStatement');
	});		

	//************************* new user terms and conditions event listeners *********************
	dojo.connect(dojo.byId('newUserTermsLink'),'onclick', function(){	
		fadeNodeIn('newUserTerms');
	});
	
	dojo.connect(dojo.byId('closeNewUserTerms'),'onclick',function(){
		fadeNodeOut('newUserTerms');
	});
	
	//************************* print and largerText event listeners *********************
	/*dojo.connect(dojo.byId('largerText'),'onclick', function(){	
		defaultFontSize += 2;
		var biggerSize = defaultFontSize;
		var fontSize;
		if(biggerSize > 16){
			biggerSize = defaultFontSize = 12;	
		}
		
		biggerSize == 16 ? dojo.byId('toolText').innerHTML = 'Smaller Text' : dojo.byId('toolText').innerHTML = 'Larger Text';
		fontSize = biggerSize + 'px';
		dojo.byId("contentLabel").style.fontSize = fontSize;
	});	
	
	dojo.connect(dojo.byId('printPage'),'onclick', function(){	
		var text = dojo.byId("contentLabel").innerHTML;
		window.print();
	});	*/	

	//********************************** animation functions *************************************	
	fadeNodeIn = function(nodeName){
		var dialogId = '#' + currentDialog;
		var popUpId = '#' + nodeName;
		var opacity; 
		var pos = jQuery(dialogId).position();
		var opacity = dojo.byId(nodeName).style.opacity;
		var panelHeight;
		var contentHeight;
		var dialogHeight;
		var newContentHeight;
		var h;
		if (pos.left == 10){
			
		} else {
			originalPanelPosition = pos.left;
		}
		
		panelY = pos.top;			
		
		var fade = dojo.fadeIn({node : nodeName,
			onEnd: function(){
				
				if (currentPopUp != ''){
					fadeNodeOut(currentPopUp);
				}				
				panelHeight = parseInt(jQuery(dialogId).height());
				contentHeight = parseInt(jQuery(popUpId + ' .dialogContentClass').height());
				dialogHeight = parseInt(jQuery(popUpId).height());
				
				newContentHeight = panelHeight > dialogHeight ? 
				(contentHeight + (panelHeight-dialogHeight)).toString() + 'px' :
				(contentHeight - (dialogHeight-panelHeight)).toString() + 'px' ;				
				
				if (panelHeight != dialogHeight){
					jQuery(popUpId + ' .dialogContentClass').animate({
						height: newContentHeight
					},500);
				}
				currentPopUp = nodeName;
			}
		});
		
		jQuery(dialogId).animate({
			left: "10px"
		},500, function(){	
			if (currentPopUp != nodeName){
				setPopUpPosition(nodeName);
				fade.play();
			}
		});
	}	
	
	fadeNodeOut = function (nodeName){
		var dialogId = '#' + currentDialog;
		var popUpId = '#' + nodeName;	
		jQuery(popUpId).fadeOut('normal',function(){
			popUpsDisplaying = jQuery(".popUpMenu:visible").length;
			if (popUpsDisplaying == 0){
				jQuery(dialogId).animate({
					left: originalPanelPosition + 'px' 
				},500);
				currentPopUp = '';
			}
		});		
	}
	
	fadeNodeOut1 = function (nodeName){
		var dialogId = '#' + currentDialog;
		var popUpId = '#' + nodeName;
		var counter = 0;		
		jQuery(popUpId).fadeOut('normal',function(){	
			jQuery(".popUpMenu").each(function(){
				//console.log(jQuery(this).css('display'));
				if(jQuery(this).css('display') == 'block'){
					counter ++;
				}
			});
			console.log(counter);
			if (counter == 0){
				jQuery(dialogId).animate({
					left: originalPanelPosition + 'px' 
				},500);								
			}
		});
	}	
	
	setPopUpPosition = function(nodeName){							
		dojo.byId(nodeName).style.top = panelY + 'px';
		dojo.byId(nodeName).style.left = (panelWidth + panelSpacing).toString() + 'px';
		dojo.byId(nodeName).style.display = 'block';
		dojo.byId(nodeName).style.opacity = '0';
	}	
	
        
	//********************************** general functions *************************************
	toggleVisibility = function (node){
		dojo.byId(node).style.visibility == 'visible' ? 
		dojo.byId(node).style.visibility = 'hidden' : 
		dojo.byId(node).style.visibility = 'visible';
	}
	
	toggleDisplay = function (node){
		dojo.byId(node).style.display == 'block' ? 
		dojo.byId(node).style.display = 'none' : 
		dojo.byId(node).style.display = 'block';
	}		
	
	toggleMenuVisibility = function (){
		//toggleDisplay('login');
		//toggleDisplay('myMgh');
		//toggleDisplay('addPage');
		//toggleDisplay('emailPage');
	}		
	
//********************************** Panel functions *************************************
	showHideDialog = function (dialog){
		//console.log(dialog + ' ' + currentDialog);
		if (currentDialog != ''){
			dijit.byId(currentDialog).hide();
		}
		dijit.byId(dialog).show();	
		toggleVisibility(dialog);
		//currentDialog = dialog;				
	}
	
	addFieldListeners = function (rField,buttonId){
		for (var i=0; i<rField.length; i++){
			dojo.connect(dojo.byId(rField[i]),'onblur',function(){
				enableSubmitButton(rField,buttonId);
			});
			dojo.connect(dojo.byId(rField[i]),'onkeypress',function(){
				enableSubmitButton(rField,buttonId);
			});
			dojo.connect(dojo.byId(rField[i]),'onfocus',function(){
				enableSubmitButton(rField,buttonId);
			});
			
			dojo.connect(dojo.byId(rField[i]),'onclick',function(){
				enableSubmitButton(rField,buttonId);
			});							
		}
	}

	enableSubmitButton = function(rField,buttonId){
		var complete = 0;
		var button = dijit.byId(buttonId);
		var valid = false;
		
		//always set the button to false, this way, it is evaluated always and only when the fields are valid is it
		//set to true
		button.setDisabled(true);
		var current;
		for (var i=0; i<rField.length; i++){
			current = dijit.byId(rField[i]);
			//console.log(current.id + ' ' + current.value + ' ' + current.state);

			//if (current.value != ""){
				if (current.state == ""){
					complete += 1;
				}
			//}
			
			if (current.type == "checkbox" && current.checked == true){
				complete += 1;
			}
			
			//console.log(current.id + ' complet: ' + complete + ' counter: ' + i + ' current state: ' + current.state + ' required field length' + rField.length);			
		}
		
		if (complete == rField.length){
			button.setDisabled(false);
			valid = true;
		}
		
		return valid;	
	}
	
	initPanelForms = function (dialogName){
		try {
			var currentPanelObject = selectCurrentDialog(dialogName);
			
			showHideDialog(currentPanelObject.dialog);
			currentDialog = currentPanelObject.dialog;
					
			if (currentPanelObject.counter > 0){
				document.forms[currentPanelObject.form].reset();
			}
			//add fieldListeners only the first time around
			if (currentPanelObject.counter == 0){
				addFieldListeners(currentPanelObject.fields,currentPanelObject.button);
				currentPanelObject.counter += 1;	
			}
			//fade any popUps
			fadeNodeOut(currentPopUp);
		} catch (e) {
			console.log(e);
		}
	}
	
	selectCurrentDialog = function (dialogName){
		var selected;
		switch (dialogName) {
			case "loginDialog" :
				selected = login;
				break;
				
			case "getPasswordDialog" :
				selected = getPassword;
				break;
				
			case "newUserDialog" :
				selected = newUser;
				break;

			case "addPageDialog" :
				selected = addPage;
				break;	
				
			case "emailPageDialog" :
				selected = emailPage;
				break;	
				
			case "editLabelDialog" :
				selected = editCustomLabel;
				break;	
				
			case "deleteItemDialog" :
				selected = deleteItem;
				break;
				
			case "deleteAccountDialog" :
				selected = deleteAccount;
				break;
				
			case "sharePageDialog" :
				selected = sharePage;
				break;				
		
		}
		return selected;
	}
	
	getMyMghLinks = function () {
		dojo.xhrGet({
			url: processingPath + "getMyMghLinks.aspx",
			handleAs: "text",
			load: function(response, ioArgs){
				if (response != ''){
					dojo.byId('myMghLinks').style.display = 'block';
					dojo.byId('myMghLinks').innerHTML = response;
					dojo.byId('emailPageName').value = 'emailPage';
				}
				return response;
			},
			error: function(response, ioArgs){
			  alert("An error occurred, with response: " + response);
			  return response;
			}
		  });			
	}

	getCheckedLinks = function () {
		var parts;
		var links = '';
		jQuery("input[@id=mghLinks]:checked").each(function(){
			parts = this.value.split('|');
			links += '<a href="' + parts[0] + '">' + parts[1] + '</a><br>';
		});	
		dojo.byId('emailLinks').value = links;
	}
	
	editLabel = function (id,label){
		initPanelForms(editCustomLabel.dialog);
		dojo.byId('editLabelId').value = id;
		dojo.byId('editCustomLabel').value = label;
		dojo.byId(editCustomLabel.dialog).style.top = '200px';
	}
	
	deleteItemFromMyMgh = function (id) {
		itemToDelete = id;
		//console.log(id);
		//console.log(id + ' ' + deleteItem.dialog);
		initPanelForms(deleteItem.dialog);
		dojo.byId(deleteItem.dialog).style.top = '200px';		
	}
	
	logOut = function(rStatus){
		if (rStatus == 'logout'){
			//alert("Logout successful");
			location.replace(homePage);
		} else {
			console.log(response);
		}		
	}
	
	logIn = function(formName){
		dojo.xhrPost({
		url: processingPath + "login.aspx",
		handleAs: "json",
		mimetype: "text/json-comment-filtered",
		load: function(response, ioArgs){
			if (response.status == 'found'){
				//alert("Login successful");
				//alert('login function email : ' + response.email);
				if (pageName.test(window.location)){				
					currentEmail = response.email;
					location.reload();
					toggleMenuVisibility();
				} else {
					initPanelForms(addPage.dialog);
				}

			} else {
				alert("Login failed! Please try again")
			}
			return response;
		},
		error: function(response, ioArgs){
		  alert("An error occurred, with response: " + response);
		  return response;
		},			
		form: formName
	  });		
	}
	//play it out
	initMyMgh();
});