// Open a pop-up Windows
//
function winopen (url, width, height)
{
        var mywin = window.open(url,'www', 'resizable=yes,scrollbars=yes,status=yes,menubar=no,height='+height+',width='+width+'');
        mywin.focus();
}

// Define the right CSS Style Sheet
//
function browser ()
{
        browser=navigator.appName
        
        if (browser=="Netscape")
                document.write('<LINK REL="STYLESHEET" TYPE="text/css" HREF="nn.css">')
        else
                document.write('<LINK REL="STYLESHEET" TYPE="text/css" HREF="ie.css">');
}

// Create a random URL in the page
//
function randurl ()
{
        this[0]="http://www.disney.com"
        this[1]="http://www.mtv.com"
        this[2]="http://www.joecartoon.com"
        this[3]="http://www.gamespot.com"
        this[4]="http://www.jibjab.com"
        this[5]="http://www.floydsfollies.com"
        this[6]="http://www.amazon.com"
        this[7]="http://www.floydsfollies.com"
        this[8]="http://www.disney.com"
        this[9]="http://www.jibjab.com"

        Xmas = new Date ()
        secs = Xmas.getSeconds ();
        j = Math.round ((secs/60)*9)
        document.write(this[j]);
}

// Reverse a string
//
function reverseString (s)
{
        var reversedString = "";
        
        for (var i = (s.length - 1); i >= 0; i--)
        {
                reversedString += s.charAt (i);
        }
                
        return reversedString;
}

// Removes all leading whitespace from a string
//
function trimInitialWhitespace (s)
{
        var whitespace = " \t\n\r";
        
        var i = 0;
        while ((i < s.length) && (whitespace.indexOf (s.charAt (i)) != -1))
        {
                i++;
        }
    
        return s.substring (i, s.length);
}

// Removes all leading and trailing whitespace characters from a string
//
function trimWhitespace (s)
{
        var trimmedString = trimInitialWhitespace (s);
        
        trimmedString = reverseString (trimmedString);
       
        trimmedString = trimInitialWhitespace (trimmedString);
        
        return reverseString (trimmedString);
}

// Trim leading and trailing whitespace from text input field values
//
function cleanupTextInputFields(formobj)
{
	for (var i = 0; i < formobj.elements.length; i++)
	{                      
		var obj = formobj.elements[i];
                
		if (obj.type == "text" || obj.type == "textarea")
		{
                        obj.value = trimWhitespace (obj.value);
		}
	}
}

// Build list of missing for fields
function listMissingFormFields(formobj, fieldRequired, fieldDescription)
{       
        //
        // Build list of missing form fields
        
        var missingList = "";
        
	for (var i = 0; i < fieldRequired.length; i++)
	{                      
		var obj = formobj.elements[fieldRequired[i]];
                
		if (obj)
		{
			switch(obj.type)
			{
			case "select-one":
				if (obj.selectedIndex == -1 || obj.options[obj.selectedIndex].text == "." || obj.options[obj.selectedIndex].text == "")
				{
					missingList += " - " + fieldDescription[i] + "\n";
				}
				break;
			
			case "select-multiple":
				if (obj.selectedIndex == -1)
				{
					missingList += " - " + fieldDescription[i] + "\n";
				}
				break;

			case "text":
			case "textarea":
				if (obj.value == "" || obj.value == null)
				{
					missingList += " - " + fieldDescription[i] + "\n";
				}
				break;
			case "checkbox":
				if (obj.checked == false)
				{
					missingList += " - " + fieldDescription[i] + "\n";
				}
				break;

			default:
				if (obj.value == "" || obj.value == null)
				{
					missingList += " - " + fieldDescription[i] + "\n";
				}
			}
		}
	}
        
        return missingList;
}
        
// Ensure required form fields are present
//
// e.g. var fieldRequired = Array("fn", "tl");
//      var fieldDescription = Array("Forname's", "Title");
//
function formCheck(formobj, fieldRequired, fieldDescription)
{       
        //
        // Cleanup accidental input from form fields
        
        cleanupTextInputFields (formobj);
        
	//
	// Specify the message to be used when fields are missing

	var alertMsg = "Please complete the following required fields: \n\n";
	var l_Msg = alertMsg.length;
	
        //
        // Calculate how many form fields need to be filled in 
        
        alertMsg += listMissingFormFields (formobj, fieldRequired, fieldDescription);

        //
        // Alert the user, or allow submission to proceed
        
	if (alertMsg.length == l_Msg)
	{
		return true;
	}
	else
	{
		alert(alertMsg);
		return false;
	}
}

// Ensure required form fields are present. If a key field is present, make sure dependent fields are present
//
function formCheck2(formobj, fieldRequired, fieldDescription, fieldKeys, keyDependentsRequired, keyDependentsDescriptions, ignoreZeroDropDown)
{       
        //
        // Cleanup accidental input from form fields
        
        cleanupTextInputFields (formobj);
        
	//
	// Specify the message to be used when fields are missing

	var alertMsg = "'Mr Money Bags' says, please complete the following required fields: \n\n";
	var l_Msg = alertMsg.length;
	
        //
        // Calculate the list of required form fields that need to be filled in 
        
        alertMsg += listMissingFormFields (formobj, fieldRequired, fieldDescription);        
        
        //
        // Calculate the list of dependent form fields that need to be filled in
        
	for (var i = 0; i < fieldKeys.length; i++)
	{                      
		var obj = formobj.elements[fieldKeys[i]];
                
		if (obj)
		{
			switch(obj.type)
			{
			case "select-one":
				if (!(obj.selectedIndex == -1 || obj.options[obj.selectedIndex].text == "." || obj.options[obj.selectedIndex].text == ""))
				{
                                        if (!ignoreZeroDropDown || obj.options[obj.selectedIndex].text != "0")
                                        {
                                                alertMsg += listMissingFormFields(formobj, keyDependentsRequired[i], keyDependentsDescriptions[i]);
                                        }
                                }
				break;
			
			case "select-multiple":
				if (!(obj.selectedIndex == -1))
				{
					alertMsg += listMissingFormFields(formobj, keyDependentsRequired[i], keyDependentsDescriptions[i]);
                                }                           
				break;

			case "text":
			case "textarea":
				if (!(obj.value == "" || obj.value == null))
			        {
					alertMsg += listMissingFormFields(formobj, keyDependentsRequired[i], keyDependentsDescriptions[i]);
                                }                              
				break;

			default:
				if (!(obj.value == "" || obj.value == null))
				{
					alertMsg += listMissingFormFields(formobj, keyDependentsRequired[i], keyDependentsDescriptions[i]);
                                }                            
			}
		}
	}                       
         
        //
        // Alert the user, or allow submission to proceed
        
	if (alertMsg.length == l_Msg)
	{
		return true;
	}
	else
	{
		alert(alertMsg);
		return false;
	}
}