
// Revealing module pattern
var membersScript = function () {

	var userLevel;
	var smfLevel;
	
	var setObservers = function () {
		clearObservers();
		if ($('kapelleUserLevel')) {
			$('kapelleUserLevel').addEvent('change', function(event) {membersScript.userPrivAlert(event)});
		}
		
		if ($('smfUserLevel')) {
			$('smfUserLevel').addEvent('change', function(event) {membersScript.smfPrivAlert(event)});
		}
		
		if ($('shippingkapelle_status')) $('shippingkapelle_status').addEvent('click', function(event) {membersScript.toggleShipping(event)});
		if ($('rp')) $('rp').addEvent('click', function(event) {membersScript.checkRP(event)});

		if($('increment_passes')) $('increment_passes').addEvent('click', function(event) {membersScript.incrementPasses(event)});
		if($('decrement_passes')) $('decrement_passes').addEvent('click', function(event) {membersScript.decrementPasses(event)});

	}




	var clearObservers = function () {
		if ($('kapelleUserLevel')) {
			$('kapelleUserLevel').removeEvent('change', function(event) {membersScript.userPrivAlert(event)});
		}
		
		if ($('smfUserLevel')) {
			$('smfUserLevel').removeEvent('change', function(event) {membersScript.smfPrivAlert(event)});
		}
		
		if ($('shippingkapelle_status')) $('shippingkapelle_status').removeEvents('click');
		if ($('rp')) $('rp').removeEvents('click');

		if($('increment_passes')) $('increment_passes').removeEvents('click');
		if($('decrement_passes')) $('decrement_passes').removeEvents('click');
		
	}




	var userPrivAlert = function(event) {
		e = $(event.target.id);
		if (e.value > 4) {
			var ans = confirm("Are you sure you want to give this member administrator privileges?");
			if (!ans) {
				e.value = membersScript.userLevel;
				return true;
			}
		}
		membersScript.userLevel = e.value;
		return true;
	}
	
	var smfPrivAlert = function(event) {
		e = $(event.target.id);
		if (e.value < 4) {
			var ans = confirm("Are you sure you want to give this member administrator/moderator privileges?");
			if (!ans) {
				e.value = membersScript.smfLevel;
				return true;
			}
		}
		membersScript.smfLevel = e.value;
		return true;
	}




	var memberDelete = function (memberID, loc) {
		var page="modules/members/ajax_deleteMember.php";
		var data="loc="+loc+"&memberID="+memberID;
		$('ajaxWait').setStyle('display', 'block');
		
		this.procSaving=new Request.JSON({
			url: page,
			method: 'get',
			data: data,
			onSuccess: function(jsonObj) {
				if(jsonObj.status) {
					$('ajaxWait').setStyle('display', 'none');
					$('membersItem_'+memberID).dispose();
				}
				else {
					$('ErrorCode').innerHTML = jsonObj.ErrorCode;
				}
			},
			onFail: function() {
				alert('AJAX failure in memberDelete');
			}
		}).send();
	}




	var validateForm = function(event) {
		event.stop();
		var p=$('password').value;
		var c=$('conf_password').value;
		
		//alert("P: "+p+"\n C:   "+c);
		
		if(p==c) {
			return true;
		}
		else {
			event.stop();
			alert("Password and Password Confirmation Fields do not match");
			return false;
			
		}
		
		
	}

	var checkRP = function() {
		var r=$('rp');
		
		if(r){
			
			if(r.checked){
				//$('pwordfields').setStyle('display', 'block');
				$('password').disabled=false;
				$('conf_password').disabled=false;
			}
			else{
				//$('pwordfields').setStyle('display', 'none');
				$('password').disabled=true;
				$('conf_password').disabled=true;
			}
			
		}
	}

	var searchMembers = function(p) {
		
		var page="http://admin.stormieomartian.com/kapelle/main.php?module=members";
		var query=$('memberSearch').value;
			
		if(query==''){
			alert("You must enter a valid search query");
		}
		else{
			window.location=page+"&searchQuery="+query;	
		}
	}




	var sortMembers = function(sortField, type){
		var query=$('searchQuery').value;
		var searchOrder=$('searchOrder').value;
		var searchPage=$('searchPage').value;
		var sortField=$('sortField').value;
		var page="modules/members/ajax_searchReorderMembers.php?loc=memberList&newSortField="+sortField+"&newSortOrder="+type+"&sortField="+sortField+"&searchOrder="+searchOrder+"&searchPage="+searchPage;
		
		waitResponse('Rendering Items');
		
		
		var t=new Request.JSON({
												 
					 url: page,
					 onComplete: function(jsonObj){
						 
									if(jsonObj.ErrorCode!=""){
										
										if( $("ErrorCode") )
											$("ErrorCode").innerHTML=jsonObj.ErrorCode;
										
																	
									}
									
									
										
									var val=jsonObj.memberList
										
									$('memberList').innerHTML=val;
									removeElement('delete', 'waitDiv');
									removeElement('delete', 'waitInner'); 
									window.removeEvent('scroll', scrollResponse); 
										
								 
					 }
					 
					}).send();
	}



	var incrementPasses = function(event) {
		var id = $('memberID').value;
		var res = new Request.JSON({
			url: '/kapelle/modules/members/ajax_modifyMNGPasses.php',
			data: 'memberID='+id+'&mode=increment',
			method: 'get',
			onSuccess: function(ret) {
				$('MNGPassesAvailable').innerHTML = ret.count;
			}
		}).send();
	}



	var decrementPasses = function(event) {
		var id = $('memberID').value;
		var res = new Request.JSON({
			url: '/kapelle/modules/members/ajax_modifyMNGPasses.php',
			data: 'memberID='+id+'&mode=decrement',
			method: 'get',
			onSuccess: function(ret) {
				$('MNGPassesAvailable').innerHTML = ret.count;
			}
		}).send();
	}


	
	var toggleShipping = function() {
		//event.stop();
		if ($('shippingkapelle_status')) {
			var btn = $('shippingkapelle_status');
			if (btn.checked) {
				$('shipping_address').setStyle('display', 'none');
			}
			else {
				$('shipping_address').setStyle('display', 'block');
			}
		}
	}
	
	var init = function () {
		setObservers();
		toggleShipping();
		if ($('kapelleUserLevel')) membersScript.userLevel = $('kapelleUserLevel').value;
		if ($('smfUserLevel')) membersScript.smfLevel = $('smfUserLevel').value;
		fixToScreen('ajaxWait');
	}
	
	return {
		init:init,
		memberDelete: memberDelete,
		validateForm: validateForm,
		checkRP: checkRP,
		searchMembers: searchMembers,
		sortMembers: sortMembers,
		setObservers: setObservers,
		clearObservers: clearObservers,
		userPrivAlert: userPrivAlert,
		smfPrivAlert: smfPrivAlert,
		userLevel: userLevel,
		smfLevel: smfLevel,
		toggleShipping: toggleShipping,
		decrementPasses: decrementPasses,
		incrementPasses: incrementPasses
	}
	
}();

// The following for backward compatibility, all depreciated!

function memberDelete(memberID, loc) {
	return membersScript.memberDelete(memberID, loc);
}

function checkRP() {
	return membersScript.checkRP();
}

function searchMembers(page) {
	return membersScript.searchMembers(page);
}

function sortMembers(sortField, type) {
	return membersScript.sortMembers(sortField, type);
}

window.addEvent('load', function(event) {membersScript.init();});
