/////////////////////////////////////////////////////////////
// Get user input, validate and send to database 
/////////////////////////////////////////////////////////////
//Global variables
var memberID = 0;
var curPage = 0;
var minPage = 0;
var maxPage = 0;
var memP = 0;
function memReg(memAct)
{
//load XML doc
  loadDocument();
//  loadDocument is routine from General js to create XML doc
//  setXMLValue is routine from General js to insert info into the XML doc
//  sendDoc is routine from General js to send the document to backend
//  getXMLValue is routine from General js to get info from XML Doc
//Call function to validate user input  
  val = memRegValidate(memAct);
//Continue if validation is good  
  if (val == true)
  {
//if user is registering set function name and put user input in XML doc
    if(memAct == "1")
    {
		setXmlValue("functionName", "addEveryInfo");
    }
//if user is updating registration set function name and put user input in(including donate) in XML doc
// memAct = 0 update registration
// memAct = 1 new Registration
// setXmlValue is a Routine in General js that puts data in XML doc
    else
    {
		setXmlValue("functionName", "updateEveryInfo");
    } 
	setXmlValue("message", "test Message");
	setXmlValue("userName", document.getElementById("txtUName").value);
	if(memAct == "1")
	{
		setXmlValue("pWord", document.getElementById("txtPword").value);
	}
	/*else
	{
		alert(memAct);	
	}*/

	setXmlValue("fName", document.getElementById("txtFName").value);
	setXmlValue("lName", document.getElementById("txtLName").value);
	setXmlValue("sal", document.getElementById("txtSal").value);
	setXmlValue("address", document.getElementById("txtAddress").value);
	setXmlValue("city", document.getElementById("txtCity").value);
	setXmlValue("state", document.getElementById("state").value);
	setXmlValue("zip", document.getElementById("txtZip").value);
	setXmlValue("phone", document.getElementById("txtPhone").value);
	setXmlValue("eMail", document.getElementById("txtEmail").value);
	setXmlValue("age", document.getElementById("Age").value);
	setXmlValue("party", document.getElementById("party").value);

	if(document.getElementById("union").checked == true)
	{ 
		setXmlValue("unionMem", "Y");
	}
	else
	{
		setXmlValue("unionMem", "N");
	} 
	setXmlValue("laborName", document.getElementById("LName").value);
	setXmlValue("education", document.getElementById("Ed").value);
	setXmlValue("politics", document.getElementById("Pol").value);
	if(document.getElementById("candidate").checked == true)
	{ 
		setXmlValue("candidate", "Y");
	}
	else
	{
		setXmlValue("candidate", "N");
	} 
	setXmlValue("curMemberId", memberID);
	//alert(xmlDoc.xml);
	xmlDoc = sendDoc();
	//alert(xmlDoc.xml);
	alert(getXmlValue("message"));
// If registering for firstime switch to page for donations
// memAct = 1 called from register page
	if(memAct == "1")
	{
        if(getXmlValue("message") != "You are already registered. Please enter a different username password combination.")
        {
    		document.getElementById("spnMemReg").style.display = "none"; 
	    	document.getElementById("spnDonate").style.display = "block";
	    }
	}
// if memberlist called this routine go back there
// memAct = 2 called from memlist page
	if(memAct == "2")
	{
		document.getElementById("memListing").style.display = "none"; 
		document.getElementById("memPage").style.display = "block";
	}
  }
  
}

////////////////////////////////////////////////////////
// Validate each field to make sure each field 
// is in correct form
////////////////////////////////////////////////////////
function memRegValidate(memAct){
// Name must at least 2 characters and be alphabetic
	sNameString = "^[a-z ]{2,}\\s*$";
// Login must be at least 2 characters and alphabetic 
	sLoginString = "^[A-Za-z0-9!@#$%^&*()_ ]{2,}\\s*$"; 
// Password must be at least 4 characters
	sPassString = "^[A-Za-z0-9!@#$%^&*()_]{6,10}\\s*$";
	//sAddString = "^(([p]{1,1]\\.[o]{1,1}\\.\\s[b]{1,1}[o]{1,1}[x]{1,1}\\s\\d{2,5})|([p]{1,1][o]{1,1}\\s[b]{1,1}[o]{1,1}[x]{1,1}\\s\\d{2,5})|([r]{2,2}[1-3]{1,1})|(\\d{3,}((\\s\\w+\\.?){2,})))\\s*$";
// City must be at least 2 characters  and be alphabetic with a period possible
	sCityString ="^[a-z]{2,}((\\.)(\\s)[a-z]{2,})?((\\s)[a-z]{2,})?\\s*$";
// zip code must at least five digits with a possible - and four more digits
	sZipString = "^[0-9]{5,5}(-[0-9]{4,4})?\\s*$";
// phone must be ten digits or ten digits with - and theremust be a nonzero for the first and fourth digits
	sPhoneString = "^[1-9]{1,1}[0-9]{2,2}-?[1-9]{1,1}[0-9]{2,2}-?[0-9]{4,4}\\s*$";
// email must be a with @ and another word with a . and two or three characters
	sEmailString = "^(\\w+(\\.\\w+)*){2,}@(\\w+(\\.\\w+)*){2,}\\.\\w{2,3}\\s*$";
// amount must be up to seven digits wit a . and two digits optional
	sAmt = "^[0-9]{1,7}(\\.[0-9]{2,2})?\\s*$";
// Validate fields - some fields will be set to dummy values to avoid problems with NULL database values
	if (!validateField("txtUName", sLoginString) ){
		alert("Invalid username.\nUsername must be at least 2 characters of letters and digits.");
		document.getElementById("txtUName").select();
		return false;
	}
	if(memAct == "1")
	{	
		if (!validateField("txtPword", sPassString) ){
			alert("Invalid Password.\nPassword must be 6 to 10 characters of letters and digits.");
			document.getElementById("txtPword").select();
			return false;
		}
	}
	if (document.getElementById("txtFName").value == "")
	{
		document.getElementById("txtFName").value = "None";
	}
	if (!validateField("txtFName", sNameString) ){
		alert("Invalid First Name");
		document.getElementById("txtFName").select();
		return false;
	}
	if (document.getElementById("txtLName").value == "")
	{
		document.getElementById("txtLName").value = "None";
	}

	if (!validateField("txtLName", sNameString) ){
		alert("Invalid Last Name");
		document.getElementById("txtLName").select();
		return false;
	}
	if (document.getElementById("txtAddress").value == "")
	{
		document.getElementById("txtAddress").value = "Unspecified";
	}
	else
	{
		if (document.getElementById("txtAddress").value.length > 100)
		{
			alert("Invalid Address");
			document.getElementById("txtAddress").select();
			return false;
		}
	}		
	if (document.getElementById("txtCity").value == "")
	{
		document.getElementById("txtCity").value = "Unspecified";
	}
	else
	{
		if (!validateField("txtCity", sCityString) )
		{
			alert("Invalid City");
			document.getElementById("txtCity").select();
			return false;
		}
	}
	if (document.getElementById("txtZip").value == "")
	{
		document.getElementById("txtZip").value = "00000";
	}
	else
	{
		if (!validateField("txtZip", sZipString) )
		{
			alert("Invalid Zip");
			document.getElementById("txtZip").select();
			return false;
		}
	}
	if (document.getElementById("txtPhone").value == "")
	{
		document.getElementById("txtPhone").value = "1001000000";
	}
	else
	{
		if (!validateField("txtPhone", sPhoneString) ){
			alert("Invalid Phone ex.(1231231234 or 123-123-1234)");
			document.getElementById("txtPhone").select();
			return false;
		}
	}
	if(document.getElementById("LName").value == ""){
	
		document.getElementById("LName").value= "None";	
	}
	if(document.getElementById("Pol").value == ""){
	
		document.getElementById("Pol").value = "None";
	
	}
	if (!validateField("txtEmail", sEmailString) ){
		alert("Invalid Email ex(m_2.m2u2@m_2.m2u2.tv)");
		document.getElementById("txtEmail").select();
		return false;
	}
	return true;		
}
////////////////////////////////////////////////////////
// Get donation information fro new registration 
// separatly from the rest of hte regiostration fields
////////////////////////////////////////////////////////
function memDonate(memDon)
{
// amount must be up to seven digits wit a . and two digits optional
//	sAmt = "^[0-9]{1,7}(\\.[0-9]{2,2})?\\s*$";
// if user wants to donate switch to page to get amount
//  memDon - 1 has selected to donate or not
//  memDon - 2 has selected amount to donate
	if(memDon == "1")
	{
// user has decided to donate so switch to page to get amount
// donate flag set to 1  means donate
		if(document.getElementById("donate").value == "1")
		{
			document.getElementById("spnPaypal").style.display = "block"; 
		}
// user has decided not to donate  so load XML doc and put user input in XML doc
// donate flag set to 2  means does not want to donate
		if(document.getElementById("donate").value == "2")
		{
			alert("you have chosen not to donate");
			document.getElementById("spnDonate").style.display = "none"; 
			location='index.htm'; 
		}
// user has not selected whether or not to donate so send back to page with alert
		if(document.getElementById("donate").value == "0")
		{
			alert("Please select either Yes or No to continue");
		}		
	}
}
////////////////////////////////////////////////////////
// Get registration information from database and  
// insert it into the HTML document
////////////////////////////////////////////////////////
function initUp(memAct,memId)
{
// load XML doc and insert XML doc information into HTML document
//  loadDocument is routine from General js to create XML doc
//  setXMLValue is routine from General js to insert info into the XML doc
//  sendDoc is routine from General js to send the document to backend
//  getXMLValue is routine to get info from XML Doc
	if(memAct == '1')
	{
		blogList('nBlog','1');
	}
	loadDocument();
	setXmlValue("functionName", "getEveryInfo");
	if(memAct == "2")
	{
		setXmlValue("curMemberId", memId);
		memberID = memId;
	}
	else
	{
		setXmlValue("curMemberId", "0");
		memberID = "0";	
	}
	//alert(xmlDoc.xml);
	xmlDoc = sendDoc();
	//alert(xmlDoc.xml);
	if(memAct == "2")
	{
		document.getElementById("memPage").style.display = "none"; 
		document.getElementById("memListing").style.display = "block";
	}
	alert(getXmlValue("message"));
	if(getXmlValue("message") != "You must be logged in")
	{
		memberID = getXmlValue("curMemberId");
		document.getElementById("txtUName").value = getXmlValue("userName");
		//document.getElementById("txtPword"}.value = getXmlValue("pWord");
		//memP = getXmlValue("pWord");
		document.getElementById("txtFName").value = getXmlValue("fName");
		document.getElementById("txtLName").value = getXmlValue("lName");
		document.getElementById("txtSal").value = getXmlValue("sal");
		document.getElementById("txtAddress").value = getXmlValue("address");
		document.getElementById("txtCity").value = getXmlValue("city");
		document.getElementById("state").value = getXmlValue("state");
		document.getElementById("txtZip").value = getXmlValue("zip");
		document.getElementById("txtPhone").value = getXmlValue("phone");
		document.getElementById("txtEmail").value = getXmlValue("eMail");
		document.getElementById("Age").value = getXmlValue("age");
		document.getElementById("party").value = getXmlValue("party");
		if(getXmlValue("unionMem") == "Y")
		{ 
			document.getElementById("union").checked = true;
		}
		else
		{
			document.getElementById("union").checked = false;
		} 
		document.getElementById("LName").value = getXmlValue("laborName");
		document.getElementById("Ed").value = getXmlValue("education");
		document.getElementById("Pol").value = getXmlValue("politics");

		if(getXmlValue("candidate") == "Y")
		{ 
			document.getElementById("candidate").checked = true;
		}
		else
		{
			document.getElementById("candidate").checked = false;
		}
	}
}
////////////////////////////////////////////////////////
// Get first list of members to display when 
//user first enters page to get list of members
////////////////////////////////////////////////////////
function memList()
{
// Create XML doc and insert list of members in XML doc
//  loadDocument is routine from General js to create XML doc
//  setXMLValue is routine from General js to insert info into the XML doc
//  sendDoc is routine from General js to send the document to backend
//  getXMLValue is routine from General js to get info from XML Doc
	loadDocument();
	setXmlValue("functionName", "getInitMemList");
	setXmlValue("message", "member test Message");
	//alert(xmlDoc.xml);
	xmlDoc = sendDoc();
	//alert(xmlDoc.xml);
	message = getXmlValue("message");
	if(message == "Not logged in")
	{
		alert("You not logged in");
		document.getElementById("memPage").style.display = "none"; 
        location = 'login.htm';
	}
	else
	{
// Get paging information from XML doc
// maxPage is last page 
		document.getElementById("memPage").style.display = "block"; 
		maxPage = parseInt(getXmlValue("maxPage"));
// curPage is current page user is viewing
		curPage = parseInt(getXmlValue("curPage"));
// extras page is number members from last page that do not fit in a regular member page
// if there is only one page and there are no members then tell user there are no blogs
		if(getXmlValue("maxPage") == "0" && getXmlValue("extrasPage") == "0")
		{
			alert("There no members available at this time. Please try again later");
		}
		else
// if this is the first page then disable Back Button
		{
			if(getXmlValue("curPage") == "0")
			{
				document.getElementById("btnBack").disabled = true; 
			
			}
// if this is the last page then disable Next Button
			if(getXmlValue("curPage") == getXmlValue("maxPage"))
			{
				document.getElementById("btnNext").disabled = true; 
			
			}
// Insert bloglist into HTML doc
            pageNum = parseInt(getXmlValue("curPage")) + 1;
			document.getElementById("memSel").innerHTML = "Page " + pageNum + "<br /><br />" + getXmlValue("mems");
		}
	}
}
////////////////////////////////////////////////////////
// Get first list of blogs to display when 
//user first enters page to get list of blogs
////////////////////////////////////////////////////////
function getMemPage(dir)
{
// Get a new listing of members and display them
//  loadDocument is routine from General js to create XML doc
//  setXMLValue is routine from General js to insert info into the XML doc
//  sendDoc is routine from General js to send the document to backend
//  getXMLValue is routine from General js to get info from XML Doc
	loadDocument();
// Next button =1 to get next page
	if(dir == "1")
	{
// Increment current page count
		curPage = curPage + 1;
// if current page is first page then enable Back Button
		if(curPage == "1")
		{
			document.getElementById("btnBack").disabled = false; 
		}
// if current page is last page then disable Next  Button
		if(curPage == maxPage)
		{
			document.getElementById("btnNext").disabled = true; 
		}
	}
	if(dir == "0")
	{
// Decrement current page count
		curPage = curPage - 1;
// if current page is first page then disable Back Button
		if(curPage == 0)
		{
			document.getElementById("btnBack").disabled = true; 
		}
// if current page is last page then enable Next Button
		if(curPage == (maxPage - 1))
		{
			document.getElementById("btnNext").disabled = false; 
		}
	}
// Get a new page of blog listings
	setXmlValue("functionName", "getMemPage");
	setXmlValue("message", "member test Message");
	setXmlValue("curPage", curPage);
	setXmlValue("maxPage", maxPage);
	//alert(xmlDoc.xml);
	xmlDoc = sendDoc();
	//alert(xmlDoc.xml);
	pageNum = parseInt(curPage) + 1;
	document.getElementById("memSel").innerHTML = "Page " + pageNum + "<br /><br />" +  getXmlValue("mems");
}

////////////////////////////////////////////////////////
// Allow user to go back to member listing page to get  
// another member to view
////////////////////////////////////////////////////////
function goBackMemList()
{
	document.getElementById("memPage").style.display = "block"; 
	document.getElementById("memListing").style.display = "none";
}
////////////////////////////////////////////////////////
// Allow user to go back to member listing page to get  
// another member to view
////////////////////////////////////////////////////////
function goBackMemManager()
{
	document.getElementById("memPage").style.display = "none"; 
    location = 'manager.htm';
	document.getElementById("manager").style.display = "block";
}
