var browser = whichBrowser();
var IE = (document.all) ? true : false;
var elemIDByName = ( IE ? new Array() : new Object() );
var validDigits = "0123456789";
var validLetters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ";
var validPhoneCharacters = validDigits + "()- ";

function $(id) {
	return document.getElementById(id);
}

function doNothing() { }

function doAdminPreviewPageOverrideAction() {
    alert( "This is a preview page.  Please close the window when you are finished viewing it." );
}

function utilityOnLoadFunction() {
    //alert( "TextChoice will be going down in 5 minutes.  Please save your work and log out." );
}

function untargetOpenerForms()
{
    var forms = opener.document.forms;
    
    for ( var x = 0, xMax = forms.length ; x < xMax ; x++ )
        forms[x].target = null;
}

function restrictFieldToCharacters( field, validCharacters ) {
	var newValue = "";

	for (i=0; i < field.value.length; i++) {
		c = field.value.charAt(i);

		if ( validCharacters.indexOf(c, 0) != -1 )
			newValue += c;
	}

	field.value = newValue;
}

function changeEncodingType(form, encodingType) {
	if ( IE ) {
		for ( var x = 0 ; x < form.attributes.length ; x++ ) {
			if ( form.attributes[x].name == "enctype" || form.attributes[x].name == "encType" ) {
				form.attributes[x].value = encodingType;
			}
		}
	} else {
		form.enctype = encodingType;
	}
}

function updateHiddenButtonWithIDAndSubmitForm( hiddenButtonElementID )
{
    var field = document.getElementById( hiddenButtonElementID );
    
    if ( field != null )
    {
        field.value = "x";
        field.form.submit();
    }
    
    else alert( "No such field (id=" + hiddenButtonElementID + ")" );
}

function sendAsyncRequest( method, url, receiveFunction )
{
    var req = null;
    
    if ( window.XMLHttpRequest )
        req = new XMLHttpRequest();
    
    else if ( window.ActiveXObject )
        req = new ActiveXObject( "Microsoft.XMLHTTP" );
    
    if ( req != null )
    {
        req.onreadystatechange = receiveFunction;
        req.open( method, url, true );
        req.send( null );
        return req;
    }
}

function loginCheck()
{
    var usernameElem = elemFromNamedElemIDsMapAndName( elemIDByName, "UserNameField" );
    
    if ( usernameElem == null ) return false;

    if ( trim( usernameElem.value ) == "" )
    {
        alert( "Please provide a login email address" );
        return false;
    }
    
    var passwordElem = elemFromNamedElemIDsMapAndName( elemIDByName, "PasswordField" );
    
    if ( passwordElem == null ) return false;
    
    if ( passwordElem.value == "" )
    {
        alert( "Please enter a password" );
        return false;
    }
    
    return true;
}

function setAndSubmitFormForHiddenButtonElemID( hiddenButtonElemID )
{
    var hiddenField = document.getElementById( hiddenButtonElemID );
    setValueForHiddenButtonElem( hiddenField );
    hiddenField.form.submit();
}

function setValueForHiddenButtonElem( hiddenButtonElem ) {
    hiddenButtonElem.value = 'x';
}

function searchProfilesPageCollectRowCheckboxElemID( checkboxElemID )
{
    if ( ! searchProfilesPageCheckboxElemIDs )
        searchProfilesPageCheckboxElemIDs = new Array();
}

function trim( string )
{
    if ( string == null ) return null;
    return string.replace( /\s*$/, "" ).replace( /^\s*/, "" );
}

function elemFromNamedElemIDsMapAndName( namedElemIDsMap, name )
{
    if ( namedElemIDsMap == null ) return null;
    
    if ( name == null ) return null;
    
    var elemID = namedElemIDsMap[name];
    
    if ( elemID == null ) return null;
    
    return document.getElementById( elemID );
}

function openPreviewWindow(myURL) {
	window.open(myURL, "previewWindow", "menubar=0,status=1,resizable=1,width=400,height=400");
}

var radioButtonElemIDs = new Array();

function addRadioButtonElemID( elemID ) {
    radioButtonElemIDs[radioButtonElemIDs.length] = elemID;
}

function nodeIsAdOrVehicle()
{
    for ( var x = 0 ; x < radioButtonElemIDs.length ; x++ )
    {
        var elemID = radioButtonElemIDs[x];
        var elem = document.getElementById( elemID );
        if ( elem.checked ) return true;
    }

	return false;
}

function duplicateCheck()
{
    var canDo = nodeIsAdOrVehicle();
    
    if ( ! canDo )
        alert( "You can't make a duplicate of a Kit or Folder." );

    return canDo;
}

function selectAllOptions(elemID)
{
	var obj = document.getElementById(elemID);
    
	if(obj == null || obj.options == null)
    {
		//alert("no options to select, suckaz!");
		return;
	}
    
    else
    {
		for (var i=0; i<obj.options.length; i++)
			obj.options[i].selected = true;
	}
}

function deSelectAllOptions(elemID)
{
	var obj = document.getElementById(elemID);
    
	for (var i=0; i<obj.options.length; i++)
		obj.options[i].selected = false;
}

function selectedOptionsContainText( selectTag, textString ) {
	for ( var i = 0; i < selectTag.options.length; i++ ) {
		var option = selectTag.options[i];

		if ( option.selected && option.text.toLowerCase().indexOf(textString.toLowerCase()) != -1 ) {
			return true;
		}
	}

	return false;
}

function displayIsNoneForAllElements( inputElements )
{
    var msgPrefix = "Util.displayIsNoneForAllElements: ";
    
    if ( inputElements != null )
    {
        for ( var x = 0, xMax = inputElements.length ; x < xMax ; x++ )
        {
            var e = inputElements[x];
            
            var style = e.style;
            
            if ( style != null )
                return false;
            
            if ( style.display != "none" )
                return false;
        }
    }
        
    return true;
}

function displayIsNoneForAllElementsByTagNameAndClass( tagName, className ) {
    return displayIsNoneForAllElements( elementsByTagNameAndClass( tagName, className ) );
}

function elementsByTagNameAndClass( tagName, className )
{
    var msgPrefix = "Util.elementsByTagNameAndClass: ";
    
    var finalElements = new Array();
    
	var elements = document.getElementsByTagName( tagName );
    
	for ( var x = 0, xMax = elements.length; x < xMax; x++ )
    {
		var e = elements[x];
        
		if ( e.className == className )
            finalElements[finalElements.length] = e;
	}
    
    return finalElements;
}

function toggleAllCheckboxesByClass( form, className ) {
	var inputs = form.getElementsByTagName( "input" );

	for ( var i = 0; i < inputs.length; i++ ) {
		var e = inputs[i];

		if ( e.className == className ) {
			e.checked = ! e.checked;
		}
	}
}

function setAllCheckboxesByClass( form, className, makeSelected ) {
	var inputs = form.getElementsByTagName( "input" );

	for ( var i = 0; i < inputs.length; i++ ) {
		var e = inputs[i];

		if ( e.className == className ) {
            e.checked = makeSelected;
		}
	}
}

function selectAllCheckboxesByClass( className )
{
	var inputs = document.getElementsByTagName( "input" );
    
	for ( var i = 0; i < inputs.length; i++ )
    {
		var e = inputs[i];
        
		if ( e.className == className )
            e.checked = true;
	}
}

function unselectAllCheckboxesByClass( className )
{
	var inputs = document.getElementsByTagName( "input" );
    
	for ( var i = 0; i < inputs.length; i++ )
    {
		var e = inputs[i];
        
		if ( e.className == className )
            e.checked = false;
	}
}

function allCheckboxesByClassAreChecked( className )
{
    var inputs = document.getElementsByTagName( "input" );
    
	for ( var i = 0; i < inputs.length; i++ )
    {
		var e = inputs[i];
        
		if ( e.className == className )
            if ( e.checked == false ) return false;
	}
    
    return true;
}

function allCheckboxesByClassAreUnchecked( className )
{
    var inputs = document.getElementsByTagName( "input" );
    
	for ( var i = 0; i < inputs.length; i++ )
    {
		var e = inputs[i];
        
		if ( e.className == className )
            if ( e.checked == true ) return false;
	}
    
    return true;
}

function validateSearchPortfoliosDeleteAction( form )
{
    var radioButtons = form.SearchOrdersRadioButtonGroup;
    
    if ( ! radioButtons )
    {
        alert ( 'You must select an Order' );
        return false;
    }
    
    var itemsSelected = 0;
    
    if ( radioButtons.checked )
        itemsSelected++;
    
    else if ( radioButtons.length )
    {
        for ( var x = 0 ; x < radioButtons.length ; x++ )
        {
            if ( radioButtons[x].checked )
                itemsSelected++;
        }
    }
    
    if ( itemsSelected == 0 )
    {
        alert ( 'You must select an Order' );
        return false;
    }
    
    return confirm( 'Are you sure you want to delete this order?' );
}

function setClassNameForDocElementByID( inputValue, inputElementID )
{
    var elem = document.getElementById( inputElementID );
    
    if ( elem != null )
        elem.className = inputValue;
}

function setStyleDisplayForDocElementByID( inputValue, inputElementID )
{
    var elem = document.getElementById( inputElementID );
    
    if ( elem != null )
        elem.style.display = inputValue;
}

function setSrcForDocElementByID( inputValue, inputElementID )
{
    var elem = document.getElementById( inputElementID );
    
    if ( elem != null )
        elem.src = inputValue;
}

function setSrcForImageArrayKeyAndDocElementByID( inputArray, inputKey, inputElementID )
{
    if ( inputArray == null ) return;
    if ( inputKey == null ) return;
    if ( inputElementID == null ) return;
    
    var image = inputArray[inputKey];
    
    if ( image == null ) return;
    
    var src = image.src;
    
    if ( src == null ) return;
    
	setSrcForDocElementByID( src, inputElementID );
}

function setTitleAndLabelForDocElementByID( inputValue, inputElementID )
{
    var elem = document.getElementById( inputElementID );
    
    if ( elem != null )
    {
        elem.title = inputValue;
        elem.label = inputValue;
    }
}

function docElementByID( inputElementID ) {
    return document.getElementById( inputElementID );
}

function setStyleBackgroundForDocElementByID( inputValue, inputElementID )
{
    var elem = document.getElementById( inputElementID );
    
    if ( elem != null )
        elem.style.background = inputValue;
}

function setClassNameForDocElementByBaseIDPlusExtension( inputValue, inputBaseID, inputExtension ) {
	setClassNameForDocElementByID( inputValue, inputBaseID + "." + inputExtension );
}

function setClassNameForDocElementByBaseIDPlusExtensions( inputValue, inputBaseID, inputExtensions )
{
    for ( var x = 0 ; x < inputExtensions.length ; x++ )
        setClassNameForDocElementByBaseIDPlusExtension( inputValue, inputBaseID, inputExtensions[x] );
}

function fieldByIDIsEmpty( inputElementID )
{
    if ( inputElementID == null ) return true;
    return fieldIsEmpty( document.getElementById( inputElementID ) );
}

function selectByIDIsEmpty( inputElementID, inputEmptyOptionText )
{
    if ( inputElementID == null ) return true;
    return selectIsEmpty( document.getElementById( inputElementID ), inputEmptyOptionText )
}

function selectIsEmpty( selectElem, inputEmptyOptionText )
{
    if ( selectElem == null ) return true;
    
    var options = selectElem.options;
    
    for ( var x = 0 ; x < options.length ; x++ )
    {
        var option = options[x];
        
        if ( option.selected == true )
        {
            if ( option.text != inputEmptyOptionText )
                return false;
        }
    }
    
    return true;
}

function fieldIsEmpty( inputElem )
{
    if ( inputElem == null ) return true;
    return stringIsEmpty( inputElem.value );
}

function stringIsEmpty( inputString )
{
    var value = trim( inputString );
    return ( value == null || value == "" );
}

function trim( inputString )
{
    if ( inputString == null ) return null;
    
    return inputString.replace( /^\s*/, "" ).replace( /\s*$/, "" );
}

function focusOnFieldByID( inputElementID )
{
    if ( inputElementID == null ) return true;
    
    var elem = document.getElementById( inputElementID );
    
    if ( elem != null )
        elem.focus();
}

function hideElement( inputElementID ) {
	setStyleDisplayForDocElementByID( "none", inputElementID );
}

function showElement( inputElementID ) {
	setStyleDisplayForDocElementByID( "block", inputElementID );
}

function swapFieldValues( inputField1, inputField2 )
{
    if ( inputField1 == null || inputField2 == null ) return;
    
    var tempValue = inputField1.value;
    inputField1.value = inputField2.value;
    inputField2.value = tempValue;
}

// Browser Detection Javascript
// copyright 1 February 2003, by Stephen Chapman, Felgall Pty Ltd

// You have permission to copy and use this javascript provided that
// the content of the script is not changed in any way.
function whichBrowser() {
	var agt=navigator.userAgent.toLowerCase();

	if (agt.indexOf("opera") != -1) {
		return 'Opera';
	}

	if (agt.indexOf("staroffice") != -1) {
		return 'Star Office';
	}

	if (agt.indexOf("webtv") != -1) {
		return 'WebTV';
	}

	if (agt.indexOf("beonex") != -1) {
		return 'Beonex';
	}

	if (agt.indexOf("chimera") != -1) {
		return 'Chimera';
	}

	if (agt.indexOf("netpositive") != -1) {
		return 'NetPositive';
	}

	if (agt.indexOf("phoenix") != -1) {
		return 'Phoenix';
	}

	if (agt.indexOf("firefox") != -1) {
		return 'Firefox';
	}

	if (agt.indexOf("safari") != -1) {
		return 'Safari';
	}

	if (agt.indexOf("skipstone") != -1) return 'SkipStone';

	if (agt.indexOf("msie") != -1) return 'Internet Explorer';

	if (agt.indexOf("netscape") != -1) return 'Netscape';

	if (agt.indexOf("mozilla/5.0") != -1) return 'Mozilla';

	if (agt.indexOf('\/') != -1) {
		if (agt.substr(0,agt.indexOf('\/')) != 'mozilla') {
			return navigator.userAgent.substr(0,agt.indexOf('\/'));
		} else {
			return 'Netscape';
		}
	} else if (agt.indexOf(' ') != -1) {
		return navigator.userAgent.substr(0,agt.indexOf(' '));
	} else {
		return navigator.userAgent;
	}
}


function checkKey(e){
	//e stands for event
	//if and only if the browser is IE do a submit onkeydown
	//var keyCode = window.event.keyCode;<---- works when all alone
	//alert("The key pressed was " + keyCode);
	var keyCode;
	var browser = whichBrowser();
	
	if( browser == 'Internet Explorer' ) {
		keyCode = window.event.keyCode;
	} else {
		keyCode = e.keyCode;
	}
	
	if (keyCode == 13) {
//			$('searchBox').submit();			
	}
	
	/*
	if (keyCode == 13) {
			document.$('quicksearch').submit();
		} 
	} else {
		alert("This browswer is not Internet Explorer");
	}
	
		supposedly works everytime...
	function SearchIntro(oEvent){
		if ((oEvent.keyCode && oEvent.keyCode==13) || (oEvent.which && oEvent.which==13)) {
			alert('<return> detected');
		}
	}
	*/
}
