﻿// Global //////////////////////////////////////////////////
var user_select = 0;
var glob_pg = 1;
var uArray = new Array();
var gArray = new Array();
var eleLoaded = false;
var HTMLEdit = true;

 window.onload = function()
{
  Nifty("div#menu", "big top");
  Nifty("ul#nav a","small transparent top");
  Nifty("div.TitleBar","transparent top");
  Nifty("div.TitleBar2","transparent top");
}
	
// Key handlers /////////////////////////////////////////////
function LoginHandler(e) {
   var asc = document.all ? event.keyCode : e.which;
   
   if(asc == 13) {
	  QuickUserSearch();
	  return true;
   }
   return asc != 13;
}

 
function ToggleView(ele)
{
    new Effect.toggle(ele,"slide",{duration: 0.3});
}

function LoadMyPage()
{
    var u = GetMyElement("userID");
    if(u >= 1)
    {
        BuildAlphaSearch('AlphaSearch');
    }
    else
    {
        SetMyHTML('GuestListHolder','<b>Please login or create an account to edit your guest list...</b>');
    }
}

function ImportAccounts()
{
	popWinNoHide('ImportAccounts.aspx', 600, 700);
}

// Array Functions //////////////////////////////////////////////////////////////
function CheckAll(ele, tot_ele, box)
{
	var tot = document.getElementById(tot_ele).value;
	var cbtn = document.getElementById("btnSendInvite")
	
	if(ele.checked)
	{
		//alert(tot);
		for(var i = 0; i<tot; i++)
		{
			var chk = document.getElementById(box+i);
			chk.checked = true;
			uArray.push(chk.value);
		}
		//cbtn.focus();
	}
	else
	{
		for(var i = 0; i<tot; i++)
		{
			var chk = document.getElementById(box+i);
			chk.checked = false;
		}
		
		uArray = new Array();
	}
	
	SetMyElement("gGuestArray", uArray);
}
	
function AddUser(ele)
{
	var val = ele.value;
	if(ele.checked)
	{
		uArray.push(val);
	}
	else
	{
		uArray =  RemoveArrayItems(uArray,val);
	}
	SetMyElement("gGuestArray", uArray);
}


function RemoveArrayItems(array, item)
{
	var i = 0;
	while (i < array.length) {
		if (array[i] == item) {
		   array.splice(i, 1);
		} 
		else 
		{
		   i++;
		 }
	}
	return array;
}


// Guest List Functions
function GetUserPaging(pg)
{
	glob_pg = pg;
	QuickUserSearch();
}

function GuestSortRows()
{    
	if(document.getElementById('guestList1'))
	{
	tigra_tables('guestList1',1,0, '#EBE4D4', '#F7F5EF', '#FFECC6', '#FFECC6');
	 
	var st = new SortableTable( document.getElementById('guestList1'), 
	  ['None','None','CaseInsensitiveString','CaseInsensitiveString','Number','CaseInsensitiveString','Number','None','CaseInsensitiveString'] );
	}
}

function BuildAlphaSearch(ele)
{
	var alphs = new Array("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z");
	var html = "";
	
	for(var i = 0; i <= 25; i ++)
	{
		html += "<input type='button' onclick=QuickAlphaSearch('" + alphs[i] + "') value=" + alphs[i] + " class='alpha_btn' />";
	}
	
	var box = document.getElementById(ele);
	box.innerHTML = html;
}

function QuickAlphaSearch(alpha)
{
	glob_pg = 1;
	var cd = GlobalAjax.GetGuestClass().value;
	cd.UserID = myuserid;
	cd.LastName = alpha;
	cd.GuestType = GetMyElement("gTypeFilter");
	cd.PageGet = glob_pg;
	GlobalAjax.QuickGuestSearch(cd, QuickUserSearchCallback);
}

function QuickUserSearch()
{
	var cd = GlobalAjax.GetGuestClass().value;
	var stext = GetMyElement("LNFilter");
	var gtype = GetMyElement("gTypeFilter");
	var showall = GetChecked("ShowAll");
	var Invited = GetChecked("Invited");
	
	uArray = new Array();
	
	//Do Full Search if query
	if(stext != "")
	{
		glob_pg = 1;
	}
	
	if(showall)
		cd.PageSize = 1000;
	
	if(Invited)
	{
		cd.Invited = 1;
		cd.PageSize = 1000;
	}
		
	cd.UserID = myuserid;
	cd.LastName = stext;
	cd.GuestType = gtype;
    cd.PageGet = glob_pg;
	
	GlobalAjax.QuickGuestSearch(cd, QuickUserSearchCallback);
}

function QuickUserSearchCallback(res)
{
	var d = document.getElementById("UserSearchList");
	res.value == null || res.error != null ? d.innerHTML = res.error.Message: 
	d.innerHTML = res.value;
	GuestSortRows();
}

function GetGuest(gID)
{
	if(gID >= 1)
	{
		window.scroll(0,0);
		ShowAlertManual('QuickUserAdd',false);
		//new Draggable('QuickUserAdd');
			
		GlobalAjax.GetGuest(gID, FillGuestForm);
	}
}

function FillGuestForm(res)
{
	if(res.value == null || res.error != null)
	{
		return false;
	}
	
	var dTable = res.value.Tables[0].Rows[0];   
	
	//Fill Fields
	SetMyElement('GuestID',escapeNull(dTable.GuestID,0));
	SetMyElement('GuestType',escapeNull(dTable.GuestType,''));
	SetMyElement('GuestCount',escapeNull(dTable.GuestCount,'1'));
	SetMyElement('FirstName',escapeNull(dTable.FirstName,''));
	SetMyElement('LastName',escapeNull(dTable.LastName,''));
	SetMyElement('Salutation',escapeNull(dTable.Salutation,''));
	SetMyElement('Email',escapeNull(dTable.Email,''));
	SetMyElement('Address',escapeNull(dTable.Address,''));
	SetMyElement('City',escapeNull(dTable.City,''));
	SetMyElement('State',escapeNull(dTable.State,''));
	SetMyElement('Zip',escapeNull(dTable.Zip,''));
	SetMyElement('Phone',escapeNull(dTable.Phone,''));
	SetMyElement('Mobile',escapeNull(dTable.Mobile,''));
	SetChecked('SendFlag',escapeNull(dTable.SendFlag,false));
	SetMyElement("Sal1", ''); 
	SetMyElement("Sal2", ''); 
	SetMyHTML("date_row",'Created: ' + dTable.create_date);
	SetMyHTML("user_err_text","");
}

function Validate_GuestList(){
	var pass = true;
	var ChkFields = new Array('FirstName','LastName','Email','Salutation');
	// grab all input fields to validate
	var ip = document.getElementsByTagName('input');
    //alert(ChkFields.length);
	for (var i=0;i < ChkFields.length; i++){
	    //Find Element
	    var ele = document.getElementById(ChkFields[i]);
	    val = ele.value;
	    if(val == '')
	    {
	    ele.style.backgroundColor = '#FFFF00';
	    pass = false;
	}
    else
    {
	    ele.style.backgroundColor = '';
	    }
    }
	
	//Check Guest Count
	if(GuestCountErr())
	{
		SetMyHTML('user_err_text', 'Guest members are only allowed up to 25 guests...');
		return false;
	}
	
    if(!pass)
    {
	    SetMyHTML('user_err_text', 'Please complete hi-lighted fields before saving...');
    }
	return pass;
}

function GuestCountErr()
{
	//Check for valid MEMBER account - 25 guests allowed for guest account only
	var u = GetMyElement("userID");
	var ut = GetMyElement("MemberType");
	var g = GetMyElement('GuestID');
	
	if(g == 0)
	{
		var cnt = GlobalAjax.CheckGuestCount(u, ut).value;
		//alert(cnt);
		if(cnt == 1)
			return true;
		else
			return false;
	}
	else
	{
		return false;
	}
}

function SaveGuestList(){
	if(Validate_GuestList()){
		var cd = GlobalAjax.GetGuestClass().value;
		cd.GuestID = GetMyElement('GuestID');
		cd.UserID = GetMyElement('userID');
		cd.GuestType = GetMyElement('GuestType');
		cd.GuestCount = GetMyElement('GuestCount');
		cd.Salutation = GetMyElement('Salutation');
		cd.FirstName = GetMyElement('FirstName');
		cd.LastName = GetMyElement('LastName');
		cd.Email = GetMyElement('Email');
		cd.Address = GetMyElement('Address');
		cd.City = GetMyElement('City');
		cd.State = GetMyElement('State');
		cd.Zip = GetMyElement('Zip');
		cd.Phone = GetMyElement('Phone');
		cd.Mobile = GetMyElement('Mobile');
		cd.SendFlag = JYesNo(GetChecked('SendFlag'));
		
		//Pass class to server, Save data
		GlobalAjax.ProcessGuest(cd, SaveGuestListCallback);
	}
}

function SaveGuestListCallback(res){
	if(res.value == null || res.error != null)
	{
		alert(res.value + ', ' + res.error.Message);
	}
	else
	{
		if(res.value >= 1)
		{
			SetMyElement('user_err_text', "Guest saved successfully...");
			QuickUserSearch();
			MyGuestSummary();
		}
		else
		{
			SetMyElement('user_err_text', res.value);
		}
	}
}

function NewGuest()
{
	window.scroll(0,0);
	NewGuestClear();
	ShowAlertManual('QuickUserAdd',false);
	//new Draggable('QuickUserAdd');
}

function NewGuestClear()
{
	var cd = GlobalAjax.GetGuestClass().value;
	SetMyElement("GuestID", cd.GuestID); 
	SetMyElement("GuestCount", cd.GuestCount); 
	SetMyElement("GuestType", cd.GuestType); 
	SetMyElement("FirstName", cd.FirstName); 
	SetMyElement("LastName", cd.LastName); 
	SetMyElement("Salutation", cd.Salutation); 
	SetMyElement("Email", cd.Email); 
	SetMyElement("Address", cd.Address); 
	SetMyElement("City", cd.City); 
	SetMyElement("State", cd.State); 
	SetMyElement("Zip", cd.Zip); 
	SetMyElement("Phone", cd.Phone); 
	SetMyElement("Mobile", cd.Mobile); 
	SetChecked("SendFlag", false);
	SetMyElement("Sal1", ''); 
	SetMyElement("Sal2", ''); 
	SetMyHTML('user_err_text', '');
}

function DeleteGuest(gID)
{
	if(confirm("Are you sure you want to delete this guest?"))
	{
		GlobalAjax.DeleteGuest(gID, DeleteGuestCallback);
	}
}

function DeleteGuestCallback(res){
	var d = document.getElementById('UserSearchList');
	res.value == null || res.error != null ? d.innerHTML = res.error.Message: 
	QuickUserSearch();
}

function DeleteSelected()
{
	var Member = myuserid;
	var myArray = GetMyElement("gGuestArray");
	var ArrLen = uArray.length;
	
	//alert("Member:" + Member + " - " + myArray);
	
	if(ArrLen >= 1)
	{
		if(confirm("Are you sure you want to delete these " + ArrLen + " account(s)?"))
		{
			GlobalAjax.DeleteMultipleGuest(Member, myArray, DeleteSelectedCallback);
		}
	}
	else
	{
		ShowAlert("No Accounts Selected...", "Please select some accounts first...");
	}
}

function DeleteSelectedCallback(res)
{
	var d = document.getElementById("UserSearchList");
	res.value == null || res.error != null ? d.innerHTML = res.error.Message: 
	QuickUserSearch();
	MyGuestSummary();
}

function MyGuestSummary()
{
	var Member = myuserid;
	var txt = GuestList.GetGuestSummary(Member).value;
	SetMyHTML('GuestSummary', txt);
}

function InviteSelected()
{
	var Member = myuserid;
	var myArray = GetMyElement("gGuestArray");
	var ArrLen = uArray.length;
	
	//alert("Member:" + Member + " - " + myArray);
	
	if(ArrLen >= 1)
	{
		if(confirm("Are you sure you want to invite these " + ArrLen + " account(s)?"))
		{
			GlobalAjax.ProcessInviteBatch(myArray, 1, DeleteSelectedCallback);
		}
	}
	else
	{
		ShowAlert("No Accounts Selected...", "Please select some accounts first...");
	}
}

function UnInviteSelected()
{
	var Member = myuserid;
	var myArray = GetMyElement("gGuestArray");
	var ArrLen = uArray.length;
	
	//alert("Member:" + Member + " - " + myArray);
	
	if(ArrLen >= 1)
	{
		if(confirm("Are you sure you want to un-invite these " + ArrLen + " account(s)?"))
		{
			GlobalAjax.ProcessInviteBatch(myArray, 0, DeleteSelectedCallback);
		}
	}
	else
	{
		ShowAlert("No Accounts Selected...", "Please select some accounts first...");
	}
}

// Lookup Guest Types //////////////////////////////////////////////////////
function GuestLookupList()
{
	var UserID = myuserid;
	GuestList.GuestLookupValues(UserID, GuestLookupCallback);
}

function GuestLookupCallback(res)
{
	var d = document.getElementById("GroupList");
	res.value == null || res.error != null ? d.innerHTML = res.error.Message: 
	d.innerHTML = res.value;
}

function RemoveLookup(LookupID)
{
	if(confirm("Are you sure you want to remove this lookup value?  This will also remove the types set on your guest accounts..."))
	{
		GuestList.DeleteGuestLookup(LookupID, GuestTypeChangeCallback);
	}
}

function SaveGuestType()
{
	if(GetMyElement("NewGroupValue") != "")
	{
		var LookID = 0;
		var UserID = myuserid;
		var LookVal = GetMyElement("NewGroupValue");
		GuestList.ProcessGuestLookup(UserID, LookID, LookVal, GuestTypeChangeCallback);
	}
}

function ChangeLookup(ele)
{
	var LookID = ele.id;
	var UserID = myuserid;
	var LookVal = ele.value;
	GuestList.ProcessGuestLookup(UserID, LookID, LookVal, GuestTypeChangeCallback);
}

function GuestTypeChangeCallback(res)
{

	if(res.value == null || res.error != null)
	{
		alert(res.value + ', ' + res.error.Message);
	}
	else
	{
		if(res.value >= 1)
		{
			GuestLookupList();
			RefreshListLookup();
			SetMyElement("NewGroupValue", "");
		}
		else
		{
			alert(res.value);
		}
	}
}

function RefreshListLookup()
{
	var UserID = myuserid;
	GuestList.RefreshGuestLookup(UserID, LookupDropCallback);
}

function LookupDropCallback(res)
{
	//alert(res.value);
	var d = document.getElementById("gTypeDrop");
	var e = document.getElementById("UTypeLook");
	res.value == null || res.error != null ? d.innerHTML = res.error.Message: 
	d.innerHTML = "<select id='gTypeFilter'>" + res.value + "</select>";
	e.innerHTML = "<select id='GuestType'>" + res.value + "</select>";
}

function ExportGuests()
{
	var UserID = myuserid;
	var sql = "SELECT * FROM GuestList WHERE UserID = " + UserID;
	if(UserID >= 1)
	{
		var str = GlobalAjax.SQLEncrypt(sql).value;
		window.open('toExcel.aspx?sql=' + str);
	}
}

function AddName(ele)
{
	var val = ele.value;
	var name = GetMyElement('FirstName') + ' ' + GetMyElement('LastName');
	SetMyElement('Sal2', name);
}

function BuildSalutation()
{
	var val = GetMyElement('Sal1');
	var name = GetMyElement('Sal2');
	SetMyElement('Salutation', val + ' ' + name);
}