// JScript File

<!-- Hide Code //


/******************************************************************************
Save Confirm logic
******************************************************************************/

/***************************************************
--Requirements to use save confirm functionality(applies to all methods):
*Page must contain a function SaveAndResponseRedirect(args). This will be
called for save. Args can be passed from the link to the page via the parameter.

*Form must contain hidden field with id 'hdSaveConfirmRedirectLink'. This will
be used by the architecture.

*If not deriving from MoonshotAdminBasePage, the following has to be set (applies to all methods).
document.body.setAttribute("Dirty_Check", "true");


--OPTIONAL
--If page wants to use confirmation method other than default
document.body.setAttribute("SaveConfirmMethod", "default|NoSave")

--If page has more then 1 form, then the form to be checked must be specified.
document.body.setAttribute("SaveConfirmFormToCheck", "form id/name") .

--If page doesn't want to show the default save confirm message:
document.body.setAttribute("SaveConfirmMessage", "Save Confirm \n Select ok to save");

--To ignore the check on entire page, specify this:
document.body.setAttribute("Dirty_Check", "false")

--to ignore an element when changes are being checked.
element.setAttribute('Dirty_Check', 'false') 

--
document.body.setAttribute("IsDirty", "true")
******************************************************/

    //Member Variables
    
    //Multidimensional array that hold the initial form values
    var initialFormArray;

    //Stores the initial values so they can be compared for changes later.
    function LMWAdmin_StoreInitialFormValues()
    {
        //setTimeout('alert(document.getElementById("OrderList").value);', 5000);
        if (LMWAdmin_CanPageSaveAndRedirect() && document.forms.length > 0)
        {
            var frm = LMWAdmin_GetFormToCheck();
            
            if (frm)
                initialFormArray = LMWAdmin_GetFormValues(frm);
        }
    }

    function LMWAdmin_GetFormToCheck()
    {
        if (document.forms.length == 0)
            return false;
        else if (document.forms.length == 1)
        {
            return document.forms[0];
        }
        else if (document.forms.length > 1)
        {
            //alert(document.body.getAttribute("SaveConfirmFormToCheck"));
            if (document.body.getAttribute("SaveConfirmFormToCheck"))
            {
                return eval("document.forms['" + document.body.getAttribute("SaveConfirmFormToCheck") + "']");
            }
            else
                return false;
        }
    }

    //Returns a multidimensional array of a given forms values    
    function LMWAdmin_GetFormValues(frm)
    {
        var retVal = [];
        
        var frmElements = frm.elements;
    
        IDs = new Array(frmElements.length);
        Values = new Array(frmElements.length);
        ignoreElements = new Array(frmElements.length);

        if (typeof(RichTextGetHTML) == "function")
        {
            GetInitialRichTextValue();
        }

        for (var i=0; i < frmElements.length; i++) 
        {
            var currentElement = frmElements[i];

            if (currentElement.id != '__VIEWSTATE')
            {    
                //Set ID
                switch (currentElement.type)
                {
                    case "file": 
                        IDs[i] = "";
                        break;
                    default : 
                        IDs[i] = currentElement.id;
                }
                
                //Set Value                
                switch (currentElement.type)
                {
                    case "radio": 
                        Values[i] = currentElement.checked;
                        break;
                    case "file": 
                        Values[i] = "";
                        break;
                    default : 
                        Values[i] = currentElement.value;
                }
                //Set Ignore check
                ignoreElements[i] = currentElement.getAttribute('Dirty_Check') == "false" ? 1 : 0;
            }
        }
        
        retVal[0] = IDs;
        retVal[1] = Values;
        retVal[2] = ignoreElements;
        
        return retVal;
    }
    
    function LMWAdmin_ExitWizard()
    {
        if (confirm('Please click OK to save your changes and permanently \nexit the Guide Me tool. Click Cancel if you do not wish to \nexit the Guide Me tool.'))
        {
            if (document.getElementById('hdExitWizard'))
                document.getElementById('hdExitWizard').value = "True";

            ExitWizardSave();                
        }

    }
    
    
    //This logic is needed to get values for RichTextbox.
    //This is to avoid the race condition between loading of iframe data and this logic.
    //Set to 5 tries right now.
    var timeOut = 500;
    var currentTime = 0;
    function GetInitialRichTextValue()
    {
        try
        {
            RichTextGetHTML();
        }
        catch (e)
        {
            if (timeOut >= currentTime)
            {
                setTimeout('GetInitialRichTextValue();', 100);
                currentTime = currentTime + 100;
            }
        }
    }
    
    //Checks the requirements for page to use the Save Confirm functionality.
    function LMWAdmin_CanPageSaveAndRedirect()
    {
        if (document.body.getAttribute("Dirty_Check") != "true" 
            || !document.getElementById('hdSaveConfirmRedirectLink')
            || !(typeof(SaveAndResponseRedirect) == "function" ))
        {
            return false;
        }
        else
            return true;
    }

    //Initial function called when link is clicked.    
    function LMWAdmin_SaveConfirm(link, args)
    {

        if (typeof(OnBeforeSaveConfirm) == "function")
        {
            OnBeforeSaveConfirm(args);
        }
        //alert(document.getElementById("OrderList").value);

        //Figure out which method of save and confirm is being used by the page.
        if (document.body.getAttribute("SaveConfirmMethod"))
        {
            var method = document.body.getAttribute("SaveConfirmMethod");
            
            if (method == "default")
            {
                LMWAdmin_SaveConfirmDefaultMethod(link, args);
            }
            else (method == "nosave")
            {
                LMWAdmin_SaveConfirmNoSaveMethod(link, args)
            }
            
        }
        else
        {
            LMWAdmin_SaveConfirmDefaultMethod(link, args)
        }
    }
    
    function LMWAdmin_SaveConfirmNoSaveMethod(link, args)
    {
            //Check if the page is dirty.
        if ( (LMWAdmin_CanPageSaveAndRedirect() && LMWAdmin_IsPageDirty()) )
        {
            if (!confirm(LMWAdmin_GetNoSaveSaveConfirmMessage()))
            {
                document.location.href = link;
            }
            //else stay on the page
        }
        else
        {
                document.location.href = link;
        }
        
    }

    function LMWAdmin_GetNoSaveSaveConfirmMessage()
    {
        if (document.body.getAttribute("SaveConfirmMessage"))
            return document.body.getAttribute("SaveConfirmMessage");
        else
            return 'Please Confirm\n\nYour transaction has not been completed. Please click "OK" to complete your site sponsorship. Click "Cancel" to continue without sponsoring this site.'
    }

    function LMWAdmin_SaveConfirmDefaultMethod(link, args)
    {
    
        //Check if the page is dirty.
        if ( (LMWAdmin_CanPageSaveAndRedirect() && LMWAdmin_IsPageDirty()) )
        {
            //Prompt the user if they want to save.
            if (confirm(LMWAdmin_GetDefaultMethodSaveConfirmMessage()))
            {
                //Link where the page will be redirected to
                document.getElementById('hdSaveConfirmRedirectLink').value = link;

                //Transfer control to page                
                SaveAndResponseRedirect(args);
            }
            else
            {
                //Redirect if confirm dialog returned false
                document.location.href = link;
            }
        }
        else
        {
            //Redirect if Page not dirty
            document.location.href = link;
        }
    }

    function LMWAdmin_GetDefaultMethodSaveConfirmMessage()
    {
        if (document.body.getAttribute("SaveConfirmMessage"))
            return document.body.getAttribute("SaveConfirmMessage");
        else
            return 'Confirm Changes\n\nThe changes you have made to this page have not been saved.\n Please click "OK" to save your changes. Click "Cancel" to continue without saving.'
    }

    //Compares previous and current values to see if they are different
    function LMWAdmin_IsPageDirty()
    {
        var dirty = false;
        
        //Check if the page was marked dirty explicitely        
        if (document.body.getAttribute("IsDirty"))
        {
            dirty = document.body.getAttribute("IsDirty");
        }
        
        if (!dirty && document.forms.length > 0)
        {
            var frm = LMWAdmin_GetFormToCheck();

            if (frm) 
            {           
                var frmValues = LMWAdmin_GetFormValues(frm);
                dirty = LMWAdmin_CompareFormValues(initialFormArray, frmValues); 
            }
        }
        return dirty;        
    }

    function LMWAdmin_CompareFormValues(initialArray, finalArray)
    {        
        var valuesDiffer = false;

        var initialIDs = initialArray[0];
        var initialValues = initialArray[1];
        var ignoreElements = initialArray[2];

        var finalIDs = finalArray[0];
        var finalValues = finalArray[1];

        if (finalIDs.length == initialIDs.length)
        {
            //Compare each value
            for (var i = 0; i < finalIDs.length; i++) 
            {
                if (finalIDs[i] != initialIDs[i] 
                    || (ignoreElements[i] != 1 && finalValues[i] != initialValues[i]))
                {
                    //*********************************************
                    //Remove Alert
                    //*********************************************
                    //alert(finalIDs[i] + " | " + initialIDs[i] + " | " + finalValues[i] + " | " + initialValues[i]);

                    valuesDiffer = true;
                    break;
                }
            }
        }
        else
        {
            valuesDiffer = true;
        }

        return valuesDiffer; 
    }

 
/******************************************************************************
END Save Confirm logic
******************************************************************************/


var request;
var fnId;
var bURLAvailable = false;
var bValidUser = false;

function GoToStep(currStep, step)
{
    if (step == "" || step == "undefined")
    {
        step = 1;
    }
    
    if (currStep > step || ValidateRegistration(currStep, step))
    {
		document.RegistrationForm.PageMode.value = step;
		document.RegistrationForm.PrevPage.value = currStep;
	    document.RegistrationForm.submit();
	}
}

function IsDOBAfterDOD()
{
    var retVal = false;
    
    var dob = document.getElementById("DOB").value;
    var dod = document.getElementById("DOD").value;

    if (dob != "" && dod != "" && ValidateDate(dod) && ValidateDate(dob))
    {
        var dDOB = new Date(dob);
        var dDOD = new Date(dod);
        
        var diff = dDOD - dDOB;
        
        if (diff < 0)
            retVal = true;
    }
    
    return retVal;
}

function ValidateRegistration(currStep, step)
{
	var bOk = false;
	var field1, field2, field3, field4, field5, field6, field7;
	
	switch (currStep)
	{
		case 1:
			// Check First name
			if (document.getElementById("FirstName").value == "")
			{
				DisplayWarning("FirstNameWarning", "This field is required, and cannot be left blank.", true);
				field1 = false;
			}
			else
			{
				DisplayWarning("FirstNameWarning", "", false);
				field1 = true;
			}
			
			// Check Last name
			if (document.getElementById("LastName").value == "")
			{
				DisplayWarning("LastNameWarning", "This field is required, and cannot be left blank.", true);
				field2 = false;
			}
			else
			{
				DisplayWarning("LastNameWarning", "", false);
				field2 = true;
			}
			
			// Check DOB
			if (document.getElementById("DOB").value == "" || !ValidateDate(document.getElementById("DOB").value))
			{
				DisplayWarning("DOBWarning", "You have entered an invalid date. Please enter a valid date in <b>mm/dd/yyyy</b> format.", true);
				field3 = false;
			}
			else
			{
				DisplayWarning("DOBWarning", "", false);
				field3 = true;
			}
			
			// Check DOD
			if (document.getElementById("DOD").value == "" || !ValidateDate(document.getElementById("DOD").value))
			{
				DisplayWarning("DODWarning", "You have entered an invalid date. Please enter a valid date in <b>mm/dd/yyyy</b> format.", true);
				field4 = false;
			}
			else
	        {
	            if (IsDOBAfterDOD())
	            {
			        DisplayWarning("DODWarning", "Date of Death has to be greater then Date of Birth.", true);
			        field4 = false;
	            }
	            else
	            {
		            DisplayWarning("DODWarning", "", false);
		            field4 = true;
		        }
	        }
			/*
			else
			{
				DisplayWarning("DODWarning", "", false);
				field4 = true;
			}*/
			
			bOk = field1 && field2 && field3 && field4;
			break;
		case 2:
			// Check Website Name
			if (document.getElementById("WebsiteName").value == "")
			{
				DisplayWarning("WebsiteNameWarning", "This field is required, and cannot be left blank.", true);
				field1 = false;
			}
			else
			{
				DisplayWarning("WebsiteNameWarning", "", false);
				field1 = true;
			}
			
			// Check Website URL
			if (!ValidateURL(document.getElementById("WebsiteURL").value))
			{
				//DisplayWarning("WebsiteURLWarning", "The Website Address you entered is invalid. Your site must be between 3 to 30 characters long and include only letters or numbers. No special characters and no spaces.", true);
				DisplayWarning("WebsiteURLWarning", "The Website Address you entered is invalid.", true);
				field2 = false;
			}
			else
			{
				if (step > currStep && document.getElementById("WebsiteURL").value.toUpperCase() != document.getElementById("CheckedURL").value.toUpperCase())
				{
					AvailableURL(document.getElementById("WebsiteURL").value);
					field2 = bURLAvailable;
				}
				else
				{
					field2 = true;
				}
			}
			
			bOk = field1 && field2;
			break;
		default:
			bOk = true;
	}
	
	return bOk;
}

function DisplayWarning(id, msg, display)
{
	document.getElementById(id).innerHTML = "<img src='" + strImagePath + "Warning.png' border=0 align='left'><div style='margin: 3px 0px 0px 25px;'>" + msg + "</div>";
	document.getElementById(id).style.display = (display) ? "block" : "none";
}

function HasSpecialChar(str) 
{
	var regEx = new RegExp("[^0-9a-zA-Z]");
	return regEx.test(str);
}

function ValidateURL(url)
{
	var regEx = new RegExp(/^[a-zA-Z0-9][a-zA-Z0-9\-]{1,28}[a-zA-Z0-9]$/);
	return regEx.test(url);
}

function ValidateUser(str)
{
	createRequest();
	fnId = 1;
	var param = "email=" + str + "&rand=" + Math.random();
	var url = "LMWServices.aspx?fn=" + fnId;
	
	request.open("POST", url, false);
	//request.onreadystatechange = displayResult;
	request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	request.setRequestHeader("Content-Length", param.length);
	request.send(param);
	displayResult();

}

function AvailableURL(str)
{
	createRequest();
	fnId = 2;
	var param = "url=" + str + "&rand=" + Math.random();
	var url = "LMWServices.aspx?fn=" + fnId;
	
	request.open("POST", url, false);
	//request.onreadystatechange = displayResult;
	request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	request.setRequestHeader("Content-Length", param.length);
	request.send(param);
	displayResult();

}

function createRequest() {
    try { request = new XMLHttpRequest(); } 
    catch (trymicrosoft) {
        try { request = new ActiveXObject("Msxml2.XMLHTTP"); } 
        catch (othermicrosoft) {
            try { request = new ActiveXObject("Microsoft.XMLHTTP"); } 
            catch (failed) { request = false; }
        }
    }
}

function displayResult() {
	if (request.readyState == 4) {
        if (request.status == 200) 
        {
			switch (fnId)
			{
				case 1:
					if (request.responseText == "True") 
					{ 
						bValidUser = true;
						DisplayWarning("EmailWarning", "", false);
					}
					else
					{
						bValidUser = false;
						DisplayWarning("EmailWarning", "Email already exists.  Please choose another email.", true);
					}
					break;
				case 2:
					if (request.responseText == "True") 
					{ 
						bURLAvailable = true;
						DisplayWarning("WebsiteURLWarning", "", false);
					}
					else
					{
						bURLAvailable = false;
						DisplayWarning("WebsiteURLWarning", document.getElementById("WebsiteURL").value + " is already taken.  Please select another address.", true);
					}
					break;
				default:
					break;
			}
        }
    } 
}

function OpenTOS()
{
	window.open("http://www.legacy.com/Obituaries.asp?Page=TermsOfUse#Material", "TermsOfUse", "menubar=no,scrollbars=yes,height=300,width=600,dependent=yes,left=80,top=80");
}

function CreateMusicPlayer(file)
{

	file = file.substring(file.indexOf('~')+1);

	if (file != "0" && file != "none.mp3")
	{		
		// <![CDATA[
		var fo = new FlashObject(strMultimediaPath + "AudioButton.swf", "AudioButton", "25", "25", "6", "#FFFFFF", false, "best");
		fo.addParam("menu", "false");
		fo.addParam("wmode", "transparent");
		fo.addParam("flashvars", "theFile=" + strMultimediaPath + "/BgMusic/" + file);
		//now load the movie
		fo.write("AudioPlayer");
		// ]]>
	}
	else
	{
		document.getElementById("AudioPlayer").innerHTML = '<img src="' + strImagePath + 'PlayButton.jpg" onclick="alert(\'Please make an audio selection from the list\');" />';
	}
}

function GoBack(pageName)
{
	document.location.href = pageName;
}

function ViewExample(pageName)
{
	var exampleImageName = pageName.replace(/ /g,"");
	if (exampleImageName == "GuestBook/MemoryBook")
	{
		exampleImageName = "GBMB";
	}
	
	document.getElementById("ExamplePlaceholder").innerHTML = "<center><img src='" + strImagePath + "Example/" + exampleImageName + ".jpg'></center>";
	createWindow(pageName + ' Example', 800, '#FFFBF1', "ViewExampleImage", "ViewExampleImage", 0, 250, 150); 
}

function ViewPreview(pageName)
{
	alert("Preview coming soon for " + pageName);
}

function ViewSite(url)
{
	window.open(url);
}

// Removes leading whitespaces
function LTrim( value ) {
	
	var re = /\s*((\S+\s*)*)/;
	return value.replace(re, "$1");
	
}

// Removes ending whitespaces
function RTrim( value ) {
	
	var re = /((\s*\S+)*)\s*/;
	return value.replace(re, "$1");
	
}

// Removes leading and ending whitespaces
function Trim( value ) {
	
	return LTrim(RTrim(value));
	
}






// End Hiding Code -->