function toggle(rw) {
	var control = document.getElementById(rw);
    if (control != null) {
    	if (control.style.display=='none') {
	        control.style.display='';
	    }
	    else {
	        control.style.display='none';
	    }
    } // if
}

// needed so firefox uses our toggle function
function toggleView(rw) {
    toggle(rw);
} 

var lastCntrl;
var lastCntrlclass = 'NB1';
function rCl(cntrl) {
	if (lastCntrl) lastCntrl.className=lastCntrlclass;
	lastCntrl = cntrl; lastCntrlclass=lastCntrlclassH1;
	lastCntrlclassH1='HL2';
	cntrl.className='HL2';
}
var lastCntrlH1;
var lastCntrlclassH1 = 'NB1';
function rH1(cntrl) {
	if (lastCntrlH1) lastCntrlH1.className=lastCntrlclassH1;
	lastCntrlH1 = cntrl; lastCntrlclassH1=cntrl.className;
	cntrl.className='HL1';
}
function rH2(cntrl) {
	cntrl.className=lastCntrlclassH1;
}

function markCtrlAsChanged(ctrlId) {
    var ctrlChanged = document.getElementById(ctrlId+'HasChanged');

    if (ctrlChanged != null) {
        ctrlChanged.value = "true";
    } // if
 
} // markFormAsChanged

function checkUnsavedChanges() {
    var leave = false;
    
    if (formsHaveChanged()) {
        leave = confirm("There are unsaved changes.  These will be lost.  Do you wish to continue?");
    } // alert

    return (leave);
} // checkUnsavedChanges

function formsHaveChanged() {
    var forms = document.getElementsByTagName("form");
    var changesExist = false;
    
    for (var i = 0; i < forms.length; i++) {
        changesExist = saveRequired(forms[i].id);
        if (changesExist) {
            break;
        } // if
    } // for

    return (changesExist);
} // formsHaveChanged

function saveRequired(formId) {
    var saveMe = false;

    if ($(formId) != null) {
        var formHasChanged = $(formId+'HasChanged');
        if (formHasChanged != null && formHasChanged.value == "true") {
            saveMe = true;
        } // if
    } // if

    return (saveMe);
} // saveRequired

/*
function autosave(frmId) {
    if ($(frmId) != null && saveRequired(frmId)) {
        ajaxSubmitForm(frmId, $(frmId).action);
    } // if
} // autosave
*/

function autosave() {
    var forms = document.getElementsByTagName("form");
    var hasFormChanged = false;
    
    for (var i = 0; i < forms.length; i++) {
        hasFormChanged = saveRequired(forms[i].id);
        if (hasFormChanged) {
            ajaxSubmitForm(forms[i].id, forms[i].action);
        } // if
    } // for
} // autosave

function copyDown(id) {
    for (var qsI = 1; qsI <= document.all[id].length - 1; qsI++) {
        document.all[id][qsI].selectedIndex=document.all[id][0].selectedIndex;
    } // for
} // copyDown

function copyDownDelBy(id) {
    for (var qsI = 1; qsI <= document.all[id].length - 1; qsI++) {
        document.all[id][qsI].selectedIndex=document.all[id][0].selectedIndex;

        var delBy = document.getElementById(document.all[id][qsI].id.replace('To','By'));
        checkDelByOption(delBy.id.replace('deliverBy',''));
        
    } // for
} // copyDownDelBy

function copyDownDelTo(id) {
    for (var qsI = 1; qsI <= document.all[id].length - 1; qsI++) {
        if (document.all[id][0].value=='Download Only' && document.all[id][qsI].value!='Download Only') {
            fixDelTo(document.all[id][qsI].id);
            fixDelBy(document.all[id][qsI].id.replace('To','By'));
        } // if    
        else
            document.all[id][qsI].selectedIndex=document.all[id][0].selectedIndex;
    } // for
} // copyDownNew

function fixDelTo(id) {
    var delTo = document.getElementById(id);
    if (delTo != null) {
        removeOptions(delTo.id,delToOptions);
        addOption(delTo.id,'Download Only');
        delTo.selectedIndex = 0;
    } // if
} // fixDelTo

function fixDelBy(id) {
    var delBy = document.getElementById(id);
    if (delBy != null) {
        delBy.selectedIndex = 0;
    } // if
} // fixDelBy

function isRTE() {
    var usingRTE = document.getElementById('usingRTE').value;

//    if (usingRTE == null)
//        usingRTE = false;
    return usingRTE;
} // isRTE

function getEditorValues() {
    //if (isRTE() && navigator.appName != 'Microsoft Internet Explorer') {
    if(isRTE() == 'NEW' && navigator.appName != 'Microsoft Internet Explorer') {
        var tAreas = document.getElementsByTagName('textarea');
    
        for (var i = 0; i < tAreas.length; i++) {
            tAreas[i].value = tinyMCE.getContent(tAreas[i].name);
        } // for
    } // if 
} // getEditorValues

function getControlName(ctrlObj) {
    var ctrlName = "";
    if (ctrlObj != null) {
        if (ctrl.name != null && ctrl.name.length > 0)
            ctrlName = ctrl.name;
        else if (ctrl.id != null && ctrl.name.length > 0)
            ctrlName = ctrl.id;
    } // if
    return ctrlName;
} // getControlName

/* Requires prototype.js to be included */
function ajaxSubmitForm(frmId, url) {
  if (self.tinyMCE) {
    tinyMCE.triggerSave();  
  }
  if ($(frmId) != null) {

    displayLoadingMessage('Update');
    disableForm(frmId);
    replaceSpecialChar();

    var myRequest = new Ajax.Request(url,{
        method: 'post',
        parameters: Form.serialize($(frmId)),
        onSuccess: function(transport) {hideLoadingMessage('Update'); enableForm(frmId);}
    }); // Ajax.Updater
  } // if
} // submitForm


function displayLoadingMessage(ctrlId) {
    var ctrl = $(ctrlId)
    
    if (ctrl != null) {
        ctrl.value = 'Updating...';
        ctrl.disabled = true; 
    } // if
    
} // displayLoadingMessage

function hideLoadingMessage(ctrlId) {
    var ctrl = $(ctrlId)
    
    if (ctrl != null) {
        ctrl.value = 'Update';
        ctrl.disabled = false;
    } // if
    
} // hideLoadingMessage

function replaceSpecialChar() {
    var paras1 = document.getElementById('desc').value;
    var paras2 = document.getElementById('smry').value;
    
    var encode_html1 = encodeURI(paras1);
    var encode_html2 = encodeURI(paras2);
    //alert(encode_html1);
    if (encode_html1.indexOf('%E2%80%93') > -1) {
        encode_html1 = encode_html1.replace(/%E2%80%93/gi,'-');
    }
    if (encode_html1.indexOf('%E2%80%99') > -1) {
        encode_html1 = encode_html1.replace(/%E2%80%99/gi,"'");
    }
    if ((encode_html1.indexOf('%E2%80%9C') > -1) && (encode_html1.indexOf('%E2%80%9D') > -1)) {
        encode_html1 = encode_html1.replace(/%E2%80%9C/gi,'"');
        encode_html1 = encode_html1.replace(/%E2%80%9D/gi,'"');
    }
    if (encode_html2.indexOf('%E2%80%93') > -1) {
        encode_html2 = encode_html2.replace(/%E2%80%93/gi,'-');
    }
     if (encode_html2.indexOf('%E2%80%99') > -1) {
        encode_html2 = encode_html2.replace(/%E2%80%99/gi,"'");
    }
    if ((encode_html2.indexOf('%E2%80%9C') > -1) && (encode_html2.indexOf('%E2%80%9D') > -1)) {
        encode_html2 = encode_html2.replace(/%E2%80%9C/gi,'"');
        encode_html2 = encode_html2.replace(/%E2%80%9D/gi,'"');
    }
    var decode_html1 = decodeURI(encode_html1);
    var decode_html2 = decodeURI(encode_html2);
    
    document.getElementById('desc').value = decode_html1;
    document.getElementById('smry').value = decode_html2;
}

function ajaxRefresh(targetId, frmId, url) {
  if ($(targetId) != null && $(frmId) != null) {
    var myRequest = new Ajax.Updater(targetId, url,{
        parameters: Form.serialize($(frmId)),
        onSuccess: function(transport) {alert(transport.responseText);}
    }); // Ajax.Updater
  } // if
} // ajaxRefresh

function disableForm(formId) {
    var aForm = $(formId);
    
    if (aForm != null) {
        for (var i = 0; i < aForm.elements.length; i++) {
            //aForm.elements(i).disabled=true;
            aForm.elements[i].readonly=true;
        } // for
    } // if
} // disableForm

function enableForm(formId) {
    var aForm = $(formId);
    if (aForm != null) {
        for (var i = 0; i < aForm.elements.length; i++) {
            aForm.elements[i].readonly=false;
        } // for
        
        var formHasChanged = $(formId + 'HasChanged')
        if (formHasChanged != null) {
            formHasChanged.value = "false";
        } // if
    } // if
} // enableForm

function toggleForm(formId, disabled) {
    var aForm = $(formId);
    
    if (aForm != null) {
        for (var i = 0; i < aForm.elements.length; i++) {
            if (disabled == true)
                aForm.elements[i].disabled=true;
            else
                aForm.elements[i].disabled=false;    
        } // for
    } // if
} // toggleForm

function checkAllDelByOptions() {
    var delBySelects = document.getElementsByName('deliverBy');
    //alert('delBySelects.length='+delBySelects.length);
    for (var i=1; i <= delBySelects.length; i++) {
        checkDelByOption(i);
    } // for    
} // checkAllDelByOptions

function checkDelByOption(index) {
    var delBy = document.getElementById('deliverBy'+index);
    var delTo = document.getElementById('deliverTo'+index);
    
    if(delBy != null && delTo != null) {
        if (delBy.value == 'Download Only') {
            removeOptions(delTo.id,delToOptions);
            addOption(delTo.id,'Download Only');
            delTo.selectedIndex = 0;
            //delTo.value = 'Download Only';
        } // if
        else {
            if (delTo.value=='Download Only') {
                //delTo.value='Subbie';
                delTo.options.length = 0;
                addOptions(delTo.id,delToOptions);
                removeOption(delTo.id,'Download Only')
                delTo.selectedIndex = 0;
            } // if
        }
    } // if
} // checkDelByOption

var delToOptions = new Array('Download Only','Subbie','Site','Head Office','Printer');

function addOptions(selectId, optList) {
    for(var j=0; j < optList.length; j++) {
        addOption(selectId, optList[j]);
    } // for
} // addOptions

function addOption(selectId,optVal) {
    var selField = document.getElementById(selectId);
        
    if (selField != null) {
        selField.options[selField.options.length] = new Option(optVal,optVal,false,false)
    } // if

} // addOption

function removeOptions(selectId, optList) {
    for(var j=0; j < optList.length; j++) {
        removeOption(selectId, optList[j]);
    } // for
} // removeOptions

function removeOption(selectId,optVal) {
    var selField = document.getElementById(selectId);
        
    if (selField != null) {
        for (var i=0; i < selField.options.length; i++) {
            if (selField.options[i].value == optVal) {
                selField.options[i] = null; 
            } // if
        } // for
    } // if

} // removeOption

function dynamicSelect(id1, id2) {
	// Browser and feature tests to see if there is enough W3C DOM support
	var agt = navigator.userAgent.toLowerCase();
	var is_ie = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));
	var is_mac = (agt.indexOf("mac") != -1);
	if (!(is_ie && is_mac) && document.getElementById && document.getElementsByTagName) {
		// Obtain references to both select boxes
		var sel1 = document.getElementById(id1);
		var sel2 = document.getElementById(id2);
		// Clone the dynamic select box
		var clone = sel2.cloneNode(true);
		// Obtain references to all cloned options 
		var clonedOptions = clone.getElementsByTagName("option");
		// Onload init: call a generic function to display the related options in the dynamic select box
		refreshDynamicSelectOptions(sel1, sel2, clonedOptions);
		// Onchange of the main select box: call a generic function to display the related options in the dynamic select box
		sel1.onchange = function() {
			refreshDynamicSelectOptions(sel1, sel2, clonedOptions);
		};
	}
}
function refreshDynamicSelectOptions(sel1, sel2, clonedOptions) {
	// Delete all options of the dynamic select box
	while (sel2.options.length) {
		sel2.remove(0);
	}
	// Create regular expression objects for "select" and the value of the selected option of the main select box as class names
	var pattern1 = /( |^)(select)( |$)/;
	var pattern2 = new RegExp("( |^)(" + sel1.options[sel1.selectedIndex].value + ")( |$)");
	// Iterate through all cloned options
	for (var i = 0; i < clonedOptions.length; i++) {
		// If the classname of a cloned option either equals "select" or equals the value of the selected option of the main select box
		if (clonedOptions[i].className.match(pattern1) || clonedOptions[i].className.match(pattern2)) {
			// Clone the option from the hidden option pool and append it to the dynamic select box
			sel2.appendChild(clonedOptions[i].cloneNode(true));
		}
	}
}
