function initializePopups(){
		 
	// DIALOG POP UPS
	var name = $("#name"),
	email = $("#email"),
	password = $("#password"),
	allFields = $([]).add(name).add(email).add(password);
	
	$("#dialogLayer").dialog({
		width: 340,
		bgiframe: true,
		autoOpen: false,
		modal: true,
		position: ["center", 80],
		closeOnEscape: false,
		resizable: false,
		draggable: false,
		close: function() {
			 allFields.val('').removeClass("ui-state-error");
		}
	});
	$("#dialogRefreshLayer").dialog({
		width: 340,
		bgiframe: true,
		autoOpen: false,
		modal: true,
		position: ["center", 80],
		closeOnEscape: false,		
		resizable: false,
		draggable: false,
		close: function() {
			window.location.reload();
		}
	});
	
}

function openDialogLayer(func) {
	var vars = "action=addDialogContent&func="+func+"&pathname="+encodeURIComponent(window.location.pathname);
	ajax_json_call_pop('resources/js/ajax_php/accountAJAX.php', 'POST', vars, "");
}

function closeDialogLayer() {
	if (document.getElementById("dialogLayer")) { 
		$('#dialogLayer').html('');
	}
	$('#dialogLayer').dialog('close');
}
function addCloseDialogToOverlay() {
	$('.ui-widget-overlay').unbind('click').click(function(){ 
		$('#dialogLayer').dialog('close');
	});
}
function addReloadToOverlay() {
	$('.ui-widget-overlay').unbind('click').click(function(){
        window.location.reload();
	});
}
function loadingFeedback(message) {
	var message = message || '<div class="msg_success">Loading...</div>';
	jQuery('#popup_layer_msg').html(message).fadeIn();
}
function loadingFeedbackPassword(message) {
	var message = message || '<div class="msg_success">Loading...</div>';
	jQuery('#retrieve_pw_layer_msg').html(message).fadeIn();
}
function loadingFeedbackOpen(div, message) {
	
	if (div) {
	
        var message = message || '<div class="msg_success">Loading...</div>';
        jQuery('#'+div).html(message).fadeIn();

    }
    
}
function closeDialog(layer) {
	$(layer).dialog('close');
}
function openDialog(layer) {
	$(layer).dialog('open');
}
function startPop(init) {

    /*
    title: Title,
    content: Content,
    width: 600,
    url: (AJAX ONLY),
    callBack,
    modal,
    refresh
    */
    
    var title = '';
    var content = '';
    var width = 340;
    
    //SET TITLE
    if (init.title) {
        title = init.title;
    }
    
    //SET WIDTH
    if (init.width) {
        width = init.width;
    }
    
    //OPEN DIALOG LAYER
    var $dialogLayer = $('#dialogLayer')
        .empty()
        .dialog('option', 'title', title)
        .dialog('option', 'width', width)
        .dialog('open');
	
    //ADD CONTENT
    if (init.content) {
        $('#dialogLayer').html(init.content);
    }
	
	//jquery load mask
	
	//MODAL
	if (init.modal) {
	    addCloseDialogToOverlay();
    }
    
    //REFRESH
    if (init.refresh) {
        addReloadToOverlay();
    }
    
    //AJAX CALL IF NECESSARY
    if (init.url) {
        ajax_json_call_pop(init.url, 'POST', init.vars, init.callBack);		
    }

}

//////////////////////ACCOUNT FUNCTIONS

function getFormFieldsByHoldingID(id) {
	var returnStr = '';
	if (jQuery("#"+id)) {
		//$('input[name=baz]:checked').val()
		var $inputs = jQuery('#'+id+' :input');
		$inputs.each(function() {
			if (this.name != '') {
				if (this.type != 'checkbox'  && this.type != 'radio' && this.type != 'file' && this.type != 'image') {
					returnStr += this.name+"="+encodeURIComponent(jQuery(this).val())+"&";
				} else if (this.type == 'checkbox') {
					if (jQuery(this).is(':checked')) {
						returnStr += this.name+"="+encodeURIComponent(jQuery(this).val())+"&";
					}
				} else if (this.type == 'radio') {
					if (jQuery(this).is(':checked')) {
						returnStr += this.name+"="+encodeURIComponent(jQuery(this).val())+"&";
					}
				}
			}
		});
		
		var $selects = jQuery('#'+id+' select');
		$selects.each(function() {
			if (this.type =='select-single') {
				returnStr += this.name+"="+encodeURIComponent(jQuery(this).val())+"&";
			} 
			/*
			else if (this.type =='select-multiple') {
				jQuery(this).each
			}
			*/
		});
		
		var $textarea = jQuery('#'+id+' textarea');
		$textarea.each(function() {						
			if (this.name != '') {
				returnStr += this.name+"="+encodeURIComponent(jQuery(this).val())+"&";
			}
		});
		
	}
	return returnStr;
}

// FUNCTIONS FOR LOGGING INTO ACCOUNT AND/OR CREATING AN ACCOUNT
function processLogin(type) {

    try {

	var onComplete = '';

	if (type == 'logout') {

		//create_account_layer
		if (document.getElementById("welcomeMessage")) { 
			$('#welcomeMessage').html('logging out...');
		}
		if (document.getElementById("accountLinks")) { 
			$('#accountLinks').html('logging out...');
		}

		onComplete = 'addReloadToOverlay';				
		var vars = 'action=logout';

	}
	if (type == 'create') {
		//create_account_layer
		var vars = getFormFieldsByHoldingID('create_account_layer')+'action=create&on_account_page=true&on_checkout_page=false';
	}
	if (type == 'login') {
		//login_layer
		var vars = getFormFieldsByHoldingID('login_layer')+'action=login&on_account_page=true&on_checkout_page=false';
	}
	if (type == 'dialog_create') {
	
		//create_account_layer
        loadingFeedback('<div class="msg_success">Creating account...</span>');		
		onComplete = 'addReloadToOverlay';			
		var vars = getFormFieldsByHoldingID('create_form')+'action=create';
		
	}
	if (type == 'dialog_login') {

        //PROVIDE FEEDBACK
        loadingFeedback('<div class="msg_success">Retrieving account...</div>');
		onComplete = 'addReloadToOverlay';				
		var vars = getFormFieldsByHoldingID('login_form')+'action=login';

	}
	if (type == 'change_password') {

		//PROVIDE FEEDBACK
        loadingFeedbackOpen('change_password_layer_msg', '<div class="msg_success">Updating password...</span>');		

	      //change_password_layer
	      var vars = getFormFieldsByHoldingID('change_password_layer')+'action=changePassword';
	}
	
	} 
	
	catch(e) {
	    alert(e);
	}
	
	ajax_json_call_pop('resources/js/ajax_php/accountAJAX.php', 'POST', vars, onComplete);
}

// FUNCTIONS FOR POSTING FORMS IN ACCOUNT
function  processAccount(type) {

    try {

	// UPDATE USER ACCOUNT ADDRESS
	if (type == 'update_manage_info') {

        //SCROLL TO TOP
        scrollTarget = getElementTop('account_layer_msg_editProfile') - 40;
        scrollToDivTopPixels(scrollTarget);

        //PROVIDE FEEDBACK
        loadingFeedbackOpen('account_layer_msg_editProfile', '<div class="msg_success">Saving...</div>');

		//login_form
		var vars = getFormFieldsByHoldingID('account_layer_editProfile')+'action=updateManageInfo';
		
	}

	// SUBMIT PROJECT
	if (type == 'outputSubmitProject') {

        //SCROLL TO TOP
        scrollTarget = getElementTop('account_layer_msg_submitProjects') - 40;
        scrollToDivTopPixels(scrollTarget);

        //PROVIDE FEEDBACK
        loadingFeedbackOpen('account_layer_msg_submitProjects', '<div class="msg_success">Saving...</div>');

		//login_form
		var vars = getFormFieldsByHoldingID('account_layer_submitProjects')+'action=setAccountProject';
		
	}
	
	ajax_json_call_pop('resources/js/ajax_php/accountAJAX.php', 'POST', vars);

    } 
    
    catch(e) {
        alert(e);
    }
}

function toggle_forgot_password() {
	if (document.getElementById("forgot_password_account")) {
        $("#forgot_password_account").slideToggle("fast");

        /*
		var obj = document.getElementById("forgot_password_account");
		if (obj.style.display != "block") obj.style.display = "block";
		else obj.style.display = "none";
		*/
	}
}

function getPassword() {

    //PROVIDE FEEDBACK
    loadingFeedbackPassword('<div class="msg_success">Retrieving account information...</span>');

	var vars = getFormFieldsByHoldingID('forgot_password_account')+'action=retrievePassword';
	ajax_json_call_pop('resources/js/ajax_php/accountAJAX.php', 'POST', vars);
	
}

function setUploadedPhotos() {

  //PROVIDE FEEDBACK
  loadingFeedbackOpen('popup_layer_msg', '<div class="msg_success">Uploading photos...</span>');

}

function displayProject(projectId) {

  //PROVIDE FEEDBACK
  loadingFeedbackOpen('accountReviewPastContent', '<div class="msg_success">Retrieving project...</span>');

    var vars = 'action=displayProject&projectId='+projectId;
    ajax_json_call_pop('resources/js/ajax_php/accountAJAX.php', 'POST', vars);

}

function displayAllProjects() {

  //PROVIDE FEEDBACK
  loadingFeedbackOpen('accountReviewPastContent', '<div class="msg_success">Retrieving projects...</span>');

    var vars = 'action=displayAllProjects';
    ajax_json_call_pop('resources/js/ajax_php/accountAJAX.php', 'POST', vars);

}

/////////////////////////// JSON ACTIONS

function ajax_json_call_pop(callUrl, callType, callVars, onCompleteFunc) {
	try {
		jQuery.ajax({
			type: callType,
			url: callUrl,
			data: callVars,
			dataType: "json",
			success: function(data) {
				if (data) {
					process_success_ajax_json_call_pop(data);
				} else {
					//error
				}
		 	},
			complete: function() {
				//if we need to run something discard if we get data or not
				if (onCompleteFunc!='') {
					if (eval("typeof " + onCompleteFunc + " == 'function'")) {
						eval(onCompleteFunc+'()');
					}
				}
			}
		});
	} catch (e) {
		alert(e);
		//nothing for now
	}
}
function process_success_ajax_json_call_pop(data) {
	
	if (data) {
	
		var alert_content="";
		$.each(data, function(id, dataHolder) {
			//alert(dataHolder.jAction+" "+dataHolder.jContentReturn+" "+id);
						
			// ALERT MSG
			if (id == 'alert_msg') {
				alert_content += content+"\n";
				
			// RELOAD PAGE			
			} else if (id=="reload_page") {
				window.location.reload();
				
			// CLOSE DIALOG
			} else if (id=="close_dialog") {
				$(dataHolder.jContentReturn).dialog('close');
				
			// OPEN DIALOG
			} else if (id=="open_dialog") {
				
				$(dataHolder.jContentReturn).dialog('open');
				addCloseDialogToOverlay();
			
			// INSERT/REPLACE HTML
			} else if ($("#"+id) && dataHolder.jAction) {
				//dataHolder is array (jAction,contentReturn,insertId)
				if (dataHolder.jAction.indexOf('insert')>-1) {
					//insertAfter, insertBefore
					$(dataHolder.jContentReturn)[dataHolder.jAction]('#'+dataHolder.jHelpId);
				} else {
					//replace/set new value
					//alert(dataHolder.jAction+" "+dataHolder.jContentReturn+" "+id);
					$("#"+id)[dataHolder.jAction](dataHolder.jContentReturn);
				}
				
			}						
		});
		if (alert_content != "") {
			alert(alert_content);
		}
	}
	else {
		//process error here...
	}
}

//METHOD TO UPDATE OVERLAY
function updateOverlayHeight() {
  $('.ui-widget-overlay').height($(document).height());
}
//FUNCTIONS FOR SCROLL TO TOP
function getElementTop(p_elm) {
	var y = 0;
	var elm;
	if(typeof(p_elm) == "object"){
	  elm = p_elm;
	} 
	else {
	  elm = document.getElementById(p_elm);
	}
	while (elm != null) {
	  y+= elm.offsetTop;
	  elm = elm.offsetParent;
	}
	return parseInt(y);
} 
function scrollToDivTopPixels(pixelsToScroll) {

    try {
    
    //GET X SCROLL - USE EXISTING
    xScroll = document.body.scrollLeft || document.documentElement.scrollLeft;    
    
    //GET Y SCROLL - USE TOP OF TARGET DOC
    yScroll = parseInt(pixelsToScroll);
    
    //SCROLL TO TOP OF ELEMENT
    window.scrollTo(xScroll, yScroll);
    
    }
    
    catch(e) {
        alert(e.description);
    }
    
}
