/* ------------------------------------------------------------------------------------------------------------------------------ */
var url			= 'http://www.healingtaousa.com/cgi-bin/dev/cgitest.pl';
var frm			= document.rgform;
var editrgid	= 0;
var group		= new Object();
/* ------------------------------------------------------------------------------------------------------------------------------ */

/* ------------------------------------------------------------------------------------------------------------------------------ */
function processSelectProductRequest(prodselect) {

	var pcode	= prodselect[prodselect.selectedIndex].value;
	//var pname	= reviewprods[pcode];
	//var msg		= pname;
	//writeToElement('prodselectmsg',msg);
	requestProductData('request',pcode);

}
/* ------------------------------------------------------------------------------------------------------------------------------ */

/* ------------------------------------------------------------------------------------------------------------------------------ */
function requestProductData(mode,data) {

	if (mode == 'request') {
		// send the request
		var status = AjaxRequest.get(
			{	'url'		: url,
				'onSuccess'	: function(req){ requestProductData(data,req.responseText); },
				'onLoading'	: function(req) { writeToElement('prodselectmsg','fetching product...'); },
				'getprod'	: 1,
				'pcode'		: data,
			}
		);
		return status;
	} else {
		// process the response
		var msg		= 'response received';
	
		try {
			// load the response JSON
			eval("var result = ("+data+")");
			
			if (result) {
	
				if (result.prod	) {
					var pname	= result.prod[mode];
					writeToElement('prodselectmsg',pname);
					return;
				} else if (result.error) {	msg	= result.error;
				} else {					msg = 'unexpected error - invalid response received';	}
				
			} else { msg = 'unexpected error - empty response received'; }
	
		}
		catch(err) {
				msg		= "response error: " + err;
				msg		+= "<br>- " + data;
		}
	
		writeToElement('prodselectmsg',msg,'');
	}

}
/* ------------------------------------------------------------------------------------------------------------------------------ */

/* ------------------------------------------------------------------------------------------------------------------------------ */
function initReviewGroup() {

	var groupselect	= document.getElementById('reviewgroups');
	if (groupselect) {
		processGroupRequest(groupselect);
	}
}
/* ------------------------------------------------------------------------------------------------------------------------------ */

/* ------------------------------------------------------------------------------------------------------------------------------ */
function processGroupRequest(src) {
	
	var request		= src.name;
	if (request!='reviewgroups') {
		request			= src.value;
	} else {
		editrgid			= getSelectedGroup(request);
		getGroupProducts('request',editrgid)
	}

	// add to group
	if (request == 'add to group') {	addProductToGroup('request', request); };

	if (request.match(/edit|new/)) {
		var modelabel	= (request == 'edit') ? 'Edit' : 'New';
		writeToElement('addgroupdivmode', modelabel + ' Group');
		
		if (request == 'edit') {
			// edit group
			editrgid			= getSelectedGroup(request);
		} else {
			// new group
			editrgid	= 0;
		};
	
		hideElement('groupcontrols');
		hideElement('groupbuttons');
		showElement('addgroupdiv');
		editrgid	= 0;
	};

	// cancel new group
	if (request == 'cancel') {
		showElement('groupcontrols');
		showElement('groupbuttons');
		hideElement('addgroupdiv')
		editrgid	= 0;
	};
	
	// delete group
	//if (request == 'delete') {	deleteReviewGroup('request'); };
	if (request.match(/delete|save/)) {	processReviewGroupRequest(request); };

}
/* ------------------------------------------------------------------------------------------------------------------------------ */

/* ------------------------------------------------------------------------------------------------------------------------------ */
function addProductToGroup(mode,data) {

	// get the selected product
	var pcode		= getSelectedProduct();
	var rgid		= getSelectedGroup();
	
	if (isInProductArray(pcode)) {
		writeToElement('prodselectmsg','The selected product is a member of this group.');
		return;
	}
	
	// submit add to group request
	if (mode == 'request') {
		// send the request
		var status = AjaxRequest.get(
			{	'url'		: url,
				'onSuccess'	: function(req){ addProductToGroup(data,req.responseText); },
				'onLoading'	: function(req) { writeToElement('prodselectmsg','adding product...'); },
				'addprod'	: 1,
				'insert'	: 1,
				'rgid'		: rgid,
				'pcode'		: pcode
			}
		);
		return status;
	} else {
		// process the response
		var msg		= 'response received';
	
		try {
			// load the response JSON
			eval("var result = ("+data+")");
			
			if (result) {
	
				if (result.success	) {
					writeToElement('prodselectmsg',result.msg);
					writeToElement('groupselectmsg',result.prodlist);
					return;
				} else if (result.error) {	msg	= result.error;
				} else {					msg = 'unexpected error - invalid response received';	}
				msg		+= "data " + data;
				
			} else { msg = 'unexpected error - empty response received'; }
	
		}
		catch(err) {
				msg		= "response error: " + err;
				msg		+= "<br>- " + data;
		}
	
		writeToElement('prodselectmsg',msg,'');
	}

	return 1;
}
/* ------------------------------------------------------------------------------------------------------------------------------ */

/* ------------------------------------------------------------------------------------------------------------------------------ */
function removeProductFromGroup(mode,data) {

	// submit add to group request
	if (mode == 'request') {

		var msg		= 'Remove this '+ data + ' from this group?';
		if (!confirm(msg)) {
			return;
		}
	
		// get the selected product
		var rgid	= getSelectedGroup();

		// send the request
		var status = AjaxRequest.get(
			{	'url'			: url,
				'onSuccess'		: function(req){ removeProductFromGroup(data,req.responseText); },
				'onLoading'		: function(req) { writeToElement('groupselectmsg','removing product...'); },
				'removeprod'	: 1,
				'delete'		: 1,
				'rgid'			: rgid,
				'pcode'			: data
			}
		);
		return status;
	} else {
		// process the response
		var msg		= 'response received';
	
		try {
			// load the response JSON
			eval("var result = ("+data+")");
			
			if (result) {
	
				if (result.success	) {
					removeFromProductArray(mode);
					writeToElement('prodselectmsg',result.msg);
					writeToElement('groupselectmsg',result.prodlist);
					return;
				} else if (result.error) {	msg	= result.error;
				} else {					msg = 'unexpected error - invalid response received';	}
				msg		+= "data " + data;
				
			} else { msg = 'unexpected error - empty response received'; }
	
		}
		catch(err) {
				msg		= "response error: " + err;
				msg		+= "<br>- " + data;
		}
	
		writeToElement('prodselectmsg',msg,'');
	}

	return 1;
}
/* ------------------------------------------------------------------------------------------------------------------------------ */


/* ------------------------------------------------------------------------------------------------------------------------------ */
function getGroupProducts(mode,data) {

	// get the selected group
	var rgid	= getSelectedGroup();
	
	// submit add to group request
	if (mode == 'request') {
		// send the request
		var status = AjaxRequest.get(
			{	'url'		: url,
				'onSuccess'	: function(req){ getGroupProducts(data,req.responseText); },
				'onLoading'	: function(req) { writeToElement('groupselectmsg','loading products...'); },
				'getrgprods'	: 1,
				'rgid'		: rgid,
			}
		);
		return status;
	} else {
		// process the response
		var msg		= 'response received';
	
		try {
			// load the response JSON
			eval("var result = ("+data+")");
			
			if (result) {
	
				if (result.success	) {
					writeToElement('groupselectmsg',result.msg);
					//writeToElement('groupselectmsg','<br>test','a');
					group.products	= result.pcodes;
					//writeToElement('groupselectmsg','<br>'+group.products,'a');
					
					// load the reviews for the selected review group
					adminReviews();
					
					return;
				} else if (result.error) {	msg	= result.error;
				} else {					msg = 'unexpected error - invalid response received';	}
				msg		+= "<br>data " + data;
				
			} else { msg = 'unexpected error - empty response received'; }
	
		}
		catch(err) {
				msg		= "response error: " + err;
				msg		+= "<br>- " + data;
		}
	
		writeToElement('groupselectmsg',msg,'');
	}

	return 1;
}
/* ------------------------------------------------------------------------------------------------------------------------------ */

/* ------------------------------------------------------------------------------------------------------------------------------ */
function isInProductArray(pcode) {

	for (var i=0; i<group.products.length; i++) {
		if (group.products[i] == pcode) {	return true;	}
	}
	return false;
}
/* ------------------------------------------------------------------------------------------------------------------------------ */

/* ------------------------------------------------------------------------------------------------------------------------------ */
function removeFromProductArray(pcode) {

	for (var i=0; i<group.products.length; i++) {
		if (group.products[i] == pcode) {
			var removed	= group.products.splice(i,1);
			return removed;
		}
	}
	return 1;
}
/* ------------------------------------------------------------------------------------------------------------------------------ */

/* ------------------------------------------------------------------------------------------------------------------------------ */
function saveNewReviewGroup() {

	return 1;
}
/* ------------------------------------------------------------------------------------------------------------------------------ */

/* ------------------------------------------------------------------------------------------------------------------------------ */
function getSelectedProduct(request) {
	var frm					= document.rgform;
	var productselect		= frm.products;

	//writeToElement('groupselectmsg','dev... editrgid: '+editrgid+'<br>','a');
	//writeToElement('groupselectmsg','dev... rgname: '+frm.rgname.value+'<br>','a');
	//if (request=='edit') {
	//	frm.rgname.value	= productselect[productselect.selectedIndex].text;
	//}
	//writeToElement('prodselectmsg','dev... rgname: '+frm.rgname.value+'<br>','a');

	return productselect[productselect.selectedIndex].value;
}
/* ------------------------------------------------------------------------------------------------------------------------------ */


/* ------------------------------------------------------------------------------------------------------------------------------ */
function getSelectedGroup(request) {
	var frm					= document.rgform;
	var groupselect			= frm.reviewgroups;

	//writeToElement('groupselectmsg','dev... editrgid: '+editrgid+'<br>','a');
	//writeToElement('groupselectmsg','dev... rgname: '+frm.rgname.value+'<br>','a');
	if (request=='edit') {
		frm.rgname.value	= groupselect[groupselect.selectedIndex].text;
	}
	//writeToElement('groupselectmsg','dev... rgname: '+frm.rgname.value+'<br>','a');

	return groupselect[groupselect.selectedIndex].value;
}
/* ------------------------------------------------------------------------------------------------------------------------------ */

/* ------------------------------------------------------------------------------------------------------------------------------ */
function processReviewGroupRequest(mode,data) {
	
	var frm	= document.rgform;
	if (mode != 'result') {

		if (mode=='delete') {
			var msg		= 'Delete this group?';
			if (!confirm(msg)) {
				return;
			}
		}

		var rgid		= getSelectedGroup();

		//if (mode=='save') {  };

		if (mode=='save') { mode	= rgid>0 ? 'update' : 'insert' };

		// load the request parms
		var parms		= new Object();
		eval('parms.'+mode+' = 1');
		if (!mode.match(/insert/)) {parms.rgid	= rgid};
		
		if (mode.match(/insert|update/)) {parms.groupname	= frm.rgname.value}

		//var msg	= 'dev... mode: '+mode+' rgid: '+rgid+'<br>';
		//msg		 += parms.groupname;
		//writeToElement('groupselectmsg',msg,'a');
		//return;

		// send the request
		var status = AjaxRequest.get(
			{	'url'			: url,
				'onSuccess'		: function(req){ processReviewGroupRequest('result',req.responseText); },
				'onLoading'		: function(req) { writeToElement('groupselectmsg','processing request...'); },
				'parameters'	: parms
			}
		);
		return status;
	} else {
		// process the response
		var msg		= 'response received';
	
		try {
			// load the response JSON
			eval("var result = ("+data+")");
			
			if (result) {
	
				if (result.success	) {
					writeToElement('groupselectmsg',result.success);
					hideElement('addgroupdiv');
					showElement('groupcontrols');
					editrgid	= 0;
					window.location.reload();
					return;
				} else if (result.error) {	msg	= result.error;
				} else {					msg = 'unexpected error - invalid response received';	}
				
			} else { msg = 'unexpected error - empty response received'; }
	
		}
		catch(err) {
				msg		= "response error: " + err;
				msg		+= "<br>- " + data;
		}
	
		writeToElement('groupselectmsg',msg,'');
	}

}
/* ------------------------------------------------------------------------------------------------------------------------------ */


/* ------------------------------------------------------------------------------------------------------------------------------ */
function deleteReviewGroup(mode,data) {
	
	var frm	= document.rgform;
	if (mode == 'request') {
		var groupselect	= frm.reviewgroups;
		var rgid		= groupselect[groupselect.selectedIndex].value;
		
		// send the request
		var status = AjaxRequest.get(
			{	'url'			: url,
				'onSuccess'		: function(req){ deleteReviewGroup('result',req.responseText); },
				'onLoading'		: function(req) { writeToElement('prodselectmsg','fetching product...'); },
				'delete'		: 1,
				'rgid'			: rgid,
			}
		);
		return status;
	} else {
		// process the response
		var msg		= 'response received';
	
		try {
			// load the response JSON
			eval("var result = ("+data+")");
			
			if (result) {
	
				if (result.success	) {
					writeToElement('groupselectmsg',result.success);
					return;
				} else if (result.error) {	msg	= result.error;
				} else {					msg = 'unexpected error - invalid response received';	}
				msg		+= "data " + data;
				
			} else { msg = 'unexpected error - empty response received'; }
	
		}
		catch(err) {
				msg		= "response error: " + err;
				msg		+= "<br>- " + data;
		}
	
		writeToElement('groupselectmsg',msg,'');
	}

}
/* ------------------------------------------------------------------------------------------------------------------------------ */


/* ------------------------------------------------------------------------------------------------------------------------------ */
/* ------------------------------------------------------------------------------------------------------------------------------ */

