//Simon Champion, 2006,2007. Resold customer management functions.
var G_ListActive=true;
var G_AddMode=false;
var G_CurrRec='';
var G_MaxRec='';
var G_Table=new Array();

var bg_def='';
var bg_over='#BBBBFF';
var bg_sel='#FFC000';
var bg_selover='#E3D599';

var selbox_fieldlist=new Array('name','login','mob_t','rp_t','dp_t','fx_t','mb_t','qtynums');
selbox_align['qtynums']='right'; selbox_align['mob_t']='center'; selbox_align['rp_t']='center'; selbox_align['dp_t']='center'; selbox_align['fx_t']='center'; selbox_align['mb_t']='center';

function LoginCallback(userstring,errmessage) {
	if(errmessage) { userstring='';}
	HdrLoginFlip(userstring.length>0,userstring);
	if(userstring) {
		document.getElementById("loggedininfo").innerHTML="<p>You are now logged in to the Skycom management area.</p>";
		BuildResoldCustArray(G_Table,"items","BuildTable");
		document.getElementById("loginblock").className="hideblock";
		document.getElementById("mainblock").className="showblock";
	} else {
		document.getElementById("loginblock").className="showblock";
		document.getElementById("mainblock").className="hideblock";
		EmptyList();
	}
}
function LoggedIn(username) {G_LoginDisplayed=0; LoginLogout(username?0:1);}	//may be called this way too if user clicked on login/logout button at top of page.

function PressAddButton() {
	//Clear the form, ready for the user to start typing a new customer.
	if(!readCookie('cpt')) {
		alert("You must be logged in as a partner to use this feature.");
		return;
	}
	SelectRow(0);
	G_AddMode=true;
	ClearForm();
	document.getElementById("f_name").value="New Customer";
	document.getElementById("f_name").select();
}

function PressSaveButton() {
	if(!readCookie('cpt')) {
		alert("You must be logged in as a partner to use this feature.");
		return;
	}
	//Save the current record. (this may be either an existing record or a new one, depending on previous actions)
	if(!G_CurrRec && !G_AddMode) {return;}

	//do some data validation here...
	if(!document.getElementById('f_name').value) {
		alert("Please specify the Customer Name.");
		return;
	}
	if(!v_password(document.getElementById('f_pass').value)) {
		alert("Password must be between 8 and 50 characters long and must contain at least two digits.");
		return;
	}
	if(!v_username(document.getElementById('f_login').value)) {
		alert("Username must be between 5 and 50 characters. If it contains an @ sign, it must be valid email address.");
		return;
	}

	var TempTable={id:(G_AddMode?0:G_CurrRec),
			name:document.getElementById('f_name').value, login:document.getElementById('f_login').value,
			pass:document.getElementById('f_pass').value, comment:document.getElementById('f_comment').value,
			mob:(document.getElementById('f_mob').checked?1:0), mob_t:(document.getElementById('f_mob').checked?'Y':'-'),
			rp:(document.getElementById('f_rp').checked?1:0), rp_t:(document.getElementById('f_rp').checked?'Y':'-'),
			dp:(document.getElementById('f_dp').checked?1:0), dp_t:(document.getElementById('f_dp').checked?'Y':'-'),
			fx:(document.getElementById('f_fx').checked?1:0), fx_t:(document.getElementById('f_fx').checked?'Y':'-'),
			mb:(document.getElementById('f_mb').checked?1:0), mb_t:(document.getElementById('f_mb').checked?'Y':'-'),
			qtynums:(G_AddMode?0:G_Table[G_CurrRec]['qtynums'])
	};
	var apicall="updateresoldcusts.php?func="+(G_AddMode?"create":"edit");
	if(!G_AddMode) {apicall+="&id="+TempTable.id;}
	apicall+="&name="+TempTable.name;
	apicall+="&login="+TempTable.login;
	apicall+="&pass="+TempTable.pass;
	apicall+="&comment="+TempTable.comment;
	apicall+="&mob="+TempTable.mob;
	apicall+="&rp="+TempTable.rp;
	apicall+="&dp="+TempTable.dp;
	apicall+="&fx="+TempTable.fx;
	apicall+="&mb="+TempTable.mb;
	apilite_call(apicall, (G_AddMode?'CusAddRec_okay':'CusEditRec_okay'), TempTable, (G_AddMode?'CusAddRec_fail':'CusEditRec_fail'), TempTable);

	G_AddMode=false;
}

function PressDelButton() {
	if(!readCookie('cpt')) {
		alert("You must be logged in as a partner to use this feature.");
		return;
	}
	//User has asked to delete the current record, so confirm it's okay, and delete it.
	if(!G_CurrRec) {if(!G_AddMode){ClearForm();} return;}

	var okay=confirm(MSIE_MsgBox("Are you sure you want to delete customer \""+G_Table[G_CurrRec]['name']+"\"?\n(this customer has "+G_Table[G_CurrRec]['qtynums']+" numbers)"));
	if(okay) {
		var TempTable={id:G_CurrRec,name:document.getElementById('f_name').value, login:document.getElementById('f_login').value,pass:document.getElementById('f_pass').value,qtynums:G_Table[G_CurrRec]['qtynums']};
		var apicall="updateresoldcusts.php?func=delete";
		apicall+="&id="+TempTable.id;
		apilite_call(apicall, 'CusDelRec_okay', TempTable, 'CusDelRec_fail', TempTable);
	}
	G_AddMode=false;
}

function CusDelRec_okay(responsestring,args) {
	var rownum=document.getElementById('dtr_'+args.id).rowIndex;
	document.getElementById('datatable').tBodies[0].deleteRow(rownum);	//delete the table row.
	delete G_Table[args.id];						//delete the array element.
	G_CurrRec='';								//clear the current record pointer.
	ClearForm();
	EnableButton('del',false);						//disable the buttons until another record is selected.
	EnableButton('sav',false);
	alert("Thank you. Your customer has been deleted.");
}

function CusDelRec_fail(responsestring,args) {
	alert("Error deleting record.\n"+responsestring);
}

function CusAddRec_okay(responsestring,args) {
	G_CurrRec=responsestring;
	args.id=G_CurrRec;
	G_Table[G_CurrRec]=args;
	AddLineToList(G_Table[G_CurrRec]);
	SelectRow(G_CurrRec);
	RowMouseout(G_CurrRec);
	var mybox=document.getElementById('datatable').parentNode;
	if(mybox.scrollHeight>mybox.clientHeight) {
		//scroll the list down to the bottom so the user can see their new entry.
		mybox.scrollTop=mybox.scrollHeight-mybox.clientHeight;
	}
	alert("Record created.");
}

function CusAddRec_fail(responsestring,args) {
	alert("Error creating record.\n"+responsestring);
	G_AddMode=true; //if it's a fixable error, they'd probably quite like to fix it and try again.
}

function CusEditRec_okay(responsestring,args) {
	G_CurrRec=args.id;
	G_Table[G_CurrRec]=args;
	RefreshRow(G_Table[G_CurrRec]);
	alert("Record updated.");
}

function CusEditRec_fail(responsestring,args) {
	alert("Error updating record.\n"+responsestring);
}

function ClearForm() {
	//Blank out all the form fields. We do this even when we're about to populate them all again, so we can avoid any display errors with data being left behind from a previous record.
	var editable=(G_CurrRec||G_AddMode);
	document.getElementById("f_name").disabled=!editable;
	document.getElementById("f_comment").disabled=!editable;
	document.getElementById("f_login").disabled=!editable;
	document.getElementById("f_pass").disabled=!editable;
	document.getElementById("f_mob").disabled=!editable;
	document.getElementById("f_rp").disabled=!editable;
	document.getElementById("f_dp").disabled=!editable;
	document.getElementById("f_fx").disabled=!editable;
	document.getElementById("f_mb").disabled=!editable;

	document.getElementById("f_name").value="";
	document.getElementById("f_comment").value="";
	document.getElementById("f_login").value="";
	document.getElementById("f_pass").value="";
	document.getElementById("f_mob").checked=false;
	document.getElementById("f_rp").checked=false;
	document.getElementById("f_dp").checked=false;
	document.getElementById("f_fx").checked=false;
	document.getElementById("f_mb").checked=false;
}

function PopulateForm() {
	//Display the record currently selected in the list onto the form fields.
	ClearForm();
	if(!G_CurrRec) { return; }
	for(field in G_Table[G_CurrRec]) {
		if(document.getElementById("f_"+field)) {
			if(document.getElementById("f_"+field).type=='checkbox') {
				document.getElementById("f_"+field).checked=(G_Table[G_CurrRec][field]>0);
			} else {
				document.getElementById("f_"+field).value=G_Table[G_CurrRec][field];
			}
			document.getElementById("f_"+field).valid=true;	//already saved this value, so assume must be valid.
		}
	}
}

