

	var IE=false;
	var MOZ5=false;
	var NS=false;

	var previewKeywordInsertion = false;

	//	Detect browser
	detectBrowser();
	
    function detectBrowser() 
	{
		if (document.all) {
		  IE = true;
		}
		else if (document.layers) {
		  NS = true;
		}
		else if (document.getElementById) {
		  MOZ5 = true;
		}
		else {
		  NS = true;
		  // No known browser support for layers
		}
	}
	
	
	//	Get document object by string names
	function getObj(str,array)
	{
		if (IE)
			obj = document.all[str];
			
		else if (MOZ5)
		{
			if (array!=null)
				obj = document.getElementsByName(str);
			else
				obj = document.getElementById(str);
		}
		else 
			obj = document.layers[str];
			
		if (obj == null)
			return false;
			
		return obj;
	}




	function findSchemaFields( byinventory )
	{
		//alert('findSchemaFields:');
		//alert('arr:'+aryInventorySchemaFields);
		//alert('x');
		var domInventorySchemaFields = document.getElementById('selInventorySchemaFields');
			domInventorySchemaFields.length = 0;

		var domInventorySchemaValues = document.getElementById('selInventorySchemaValues');
			domInventorySchemaValues.length = 0;
			
		var tmpOption = new Option();
			domInventorySchemaFields.options[domInventorySchemaFields.options.length] = tmpOption;
				
		for(i=0;i<aryInventorySchemaFields[byinventory].length;i++)
		{
			var tmpOption = new Option(aryInventorySchemaFields[byinventory][i][0],aryInventorySchemaFields[byinventory][i][1]);
			
			domInventorySchemaFields.options[domInventorySchemaFields.options.length] = tmpOption;
		}
	}
	
	
	function findSchemaValues( byschemafield )
	{
		
		var domInventorySchemaValues = document.getElementById('selInventorySchemaValues');
			domInventorySchemaValues.length = 0;
		
		var tmpOption = new Option();
			domInventorySchemaValues.options[domInventorySchemaValues.options.length] = tmpOption;
			
		for(i=0;i<aryInventorySchemaValues[byschemafield].length;i++)
		{
			var tmpOption = new Option(aryInventorySchemaValues[byschemafield][i][0],aryInventorySchemaValues[byschemafield][i][1]);
				
			domInventorySchemaValues.options[domInventorySchemaValues.options.length] = tmpOption;
		}
	}

	/**
	 * Inserts schema value taken from selected option in byselect drop down, inserts into the DOM element
	 * with id activeDynamicInputId. This function is used to insert dynamic variables from a select drop down
	 * into a text input.
	 */
	function insertSchemaValue( byselect )
	{

		if(byselect == "") { return false; }
		
		var domSchemaValueOption	= document.getElementById(byselect);
		var domTextField			= document.getElementById(activeDynamicInputId);
		//var domTextFieldPreview		= document.getElementById(byfield+'Preview');

		var intCPos = findCPos(domTextField);
		
		var schemaValue = domSchemaValueOption.options[domSchemaValueOption.selectedIndex].value;
		
		var domTextFieldValue	= domTextField.value.substring(0, intCPos) + '{' + schemaValue + '}' + domTextField.value.substring(intCPos, domTextField.value.length);

		domTextField.value	= domTextFieldValue;
		domTextField.focus();
		
        if(domTextField.id != '_unboundNameTemplate')
		  updatePreview(domTextField)
	}

	function insertTagValue( byselect )
	{
		if(byselect == "") { return false; }
		
		var domSchemaValueOption	= document.getElementById(byselect);
		var domTextField			= document.getElementById(activeDynamicInputId);

		var intCPos = findCPos(domTextField);
		
		var schemaValue = domSchemaValueOption.options[domSchemaValueOption.selectedIndex].value;
		
		var domTextFieldValue	= domTextField.value.substring(0, intCPos) + '[TAG:' + schemaValue + ']' + domTextField.value.substring(intCPos, domTextField.value.length);

		domTextField.value	= domTextFieldValue;
		domTextField.focus();
	}

	/**
	 * Find caret position of a text input.
	 */
	function findCPos( byfield )
	{
	
		if(document.selection) // IE
		{
			byfield.focus();
			
			tmpValue = document.selection.createRange();
			tmpValue.moveStart('character',-byfield.value.length);

			return tmpValue.text.length;
		
		}
		else if (byfield.selectionStart || byfield.selectionStart == '0') // Mozilla
		{
 			  return byfield.selectionStart;
		}
	
	}

	
	function selectAll( byref, byfield )
	{
		var domSelection 	= document.getElementsByName(byfield);
		for(i=0;i<domSelection.length;i++)
		{
			domSelection[i].checked = byref.checked;
		}
		
	}
	
	function deselect()
	{
		var domSelection = document.getElementById('chkSelectAll');
			domSelection.checked = false;
	}
	
	
	function findDynamicValues( byfield )
	{
		var domDynamicValues = document.getElementById('DynamicValues');
			domDynamicValues.length = 0;
		
		var tmpOption = new Option('','');
			
			domDynamicValues.options[domDynamicValues.options.length] = tmpOption;
		
		for(i=0;i<aryDynamicValues[byfield].length;i++)
		{
			var tmpOption = new Option(aryDynamicValues[byfield][i][0],aryDynamicValues[byfield][i][1]);
				
				domDynamicValues.options[domDynamicValues.options.length] = tmpOption;
		}
	}
	
	
	var activeDynamicInputId = '';
	//var activeDynamicInputCharPos = '';
	
	
	function setActiveDynamicInputId(id)
	{
		// Get event target
		if(typeof(id) == "object")
		{
			id = id.target.id;
		}
		
		if(id == null)
		{
			activeDynamicInputId = this.id;
		}
		else
		{
			activeDynamicInputId = id;
		}
	}
	
    /**
     * Loads dynamic variables available via specified Inventory.id
     *
     */
    function showDynamicVariables( mode, id, updateId )
    {
        if(id == null)
        {
            return false;
        }
        
        new Ajax.Updater(updateId, site_root+'/inventory_schemas/dynamicvariables/'+mode+'/'+id+'/', {asynchronous:true, evalScripts:true, requestHeaders:['X-Update', updateId]});
    }
    
	
	/**
	 * Loads dynamic replacement panel via InventorySchemas dynamicreplacements 
	 * 
	 * @param invId InventoryID of inventory to load schema fields for
	 * @param fieldId of schema field to load values for
	 * @param updateElmIds DOM Ids for textual element(s) to update with replacement values as array
	 * @param replacementPanelId Id of panel to insert replacement options to 
	 */
 	function showReplacementOptions(invId, fieldId, updateElmIds, replacementPanelId, wizardId)
 	{
 		if(invId == null)
 		{
 			return false
 		}

		var fieldId = (fieldId == null) ? 0 : fieldId;
 		var updateElmIds = (updateElmIds == null) ? '' : updateElmIds;
 		
 		// Add listeners specified in updateElmIds to update elements to set varirables used to identify last active input
		var	updateElmIdsArr = new String(updateElmIds).split(',');
		for(i=0;i<updateElmIdsArr.length;i++)
		{
			if(trimAll(updateElmIdsArr[i]) != '')
			{
				var domDynamicInput = document.getElementById(updateElmIdsArr[i]);
				domDynamicInput.onclick = setActiveDynamicInputId;

//				domDynamicInput.addEventListener("click", setActiveDynamicInputId, true);
			}
		}

		// Update options panel with specified invId and schemaFieldId, also passes current update DOM element data to ensure values are retained in refresh
 		new Ajax.Updater(replacementPanelId,site_root+'/InventorySchemas/dynamicreplacements/'+invId+'/'+fieldId+'/'+updateElmIds+'/'+replacementPanelId+'/'+wizardId, {asynchronous:true, evalScripts:true, requestHeaders:['X-Update', 'replacements']});
 		
 	}
 	
 	function showReplacementOptionsByUrlTemplate(urlTemplateId, updateElmIds, replacementPanelId)
 	{
 		if(urlTemplateId == null)
 		{
 			return false;
 		}
		
 		var updateElmIds = (updateElmIds == null) ? '' : updateElmIds;
 		var	updateElmIdsArr = new String(updateElmIds).split(',');
		for(i=0;i<updateElmIdsArr.length;i++)
		{
			if(trimAll(updateElmIdsArr[i]) != '')
			{
				var domDynamicInput = document.getElementById(updateElmIdsArr[i]);
				domDynamicInput.onclick = setActiveDynamicInputId;
			}
		}

		// Update options panel with specified invId and schemaFieldId, also passes current update DOM element data to ensure values are retained in refresh
 		new Ajax.Updater(replacementPanelId,site_root+'/InventorySchemas/dynamicreplacementsbyurl/'+urlTemplateId+'/'+updateElmIds+'/'+replacementPanelId, {asynchronous:true, evalScripts:true, requestHeaders:['X-Update', 'replacements']});
 	}
 	
 	function showUrlInventoryOptions(inventoryId,urlSetId,wizardFields,replacementPanelId)
 	{
 	//	if not inventoryId return false;
 		if(inventoryId == null){ return false; }
 		
 		new Ajax.Updater(replacementPanelId,site_root+'/Inventories/urlsetdata/'+inventoryId+'/'+urlSetId+'/'+wizardFields,{asynchronous:true, evalScripts:true, requestHeaders:['X-Update', 'inventorydata']});
 	}
 	
 	function showInventoryFiltersets(inventoryId,urlSetId,wizardFiltersets,replacementPanelId)
 	{
 		new Ajax.Updater(replacementPanelId,site_root+'/inventory_filterset/view/'+inventoryId+'/'+urlSetId+'/'+wizardFiltersets+'/expanded',{asynchronous:true, evalScripts:true, requestHeaders:['X-Update', 'view']});
 	}
 	
 	function showInventoryFilters(inventoryId,inventorySchemaFieldId,inventoryFiltersetId,replacementPanelId)
 	{
 		if(inventoryId == null){ return false; }
 		
 		new Ajax.Updater(replacementPanelId,site_root+'/Inventories/inventoryfilters/'+inventoryId+'/'+inventorySchemaFieldId,{asynchronous:true, evalScripts:true, requestHeaders:['X-Update', 'inventoryfilters']});
 	}
 	
 	function showUrlSetFilters(inventoryId,urlSetId,wizardFields,replacementPanelId)
 	{
 		if(inventoryId == null){ return false; }
 		
 		new Ajax.Updater(replacementPanelId,site_root+'/Inventories/urlsetfilters/'+inventoryId+'/'+urlSetId+'/'+wizardFields,{asynchronous:true, evalScripts:true, requestHeaders:['X-Update', 'urlsetfilters']});
 	}
 	
 	function trimAll(sString)
	{
		while (sString.substring(0,1) == ' ')
		{
		sString = sString.substring(1, sString.length);
		}
		while (sString.substring(sString.length-1, sString.length) == ' ')
		{
		sString = sString.substring(0,sString.length-1);
		}
		return sString;
	}
	
	/**
	 * Cross-browser show hide element functions.
	 */
	function hideElement(elmId)
	{

		var element = getObj(elmId);

		if(NS == true)
		{
		  element.display = 'none';
			element.visibility = 'hidden';
		}
		else
		{
		  element.style.display = 'none';
			element.style.visibility = 'hidden';
		}
		
		return true;
	}
	
	function showElement(elmId)
	{
		var element = getObj(elmId);
		
		if(NS == true)
		{
		  element.display = '';
			element.visibility = 'visible';
		}
		else
		{
		  element.style.display = '';
			element.style.visibility = 'visible';			
		}
		return true;
	}
	
	function enableElement(elmId)
	{
		var element = document.getElementById(elmId);
		element.disabled = '';
		return true;
	}
	
	function disableElement(elmId)
	{
		var element = document.getElementById(elmId);
		element.disabled = 'disabled';
		return true;
	}
	
	function isEnabled(elmId)
	{
		var element = document.getElementById(elmId);
		if(element == null) {
			return false;
		}
		
		if(element.disabled == true)
		{
			return false;
		}
		else
		{
			return true;
		}
	}

	/**
	 * Displays animated loading panel.
	 */
	function loading(elmId)
	{
		elmLoading = true;
		var element = getObj(elmId);
		element.innerHTML = "<img src="+site_root+"/img/loading-circle.gif />&nbsp;";
		element.innerHTML += "Loading";

	}
	/**
	 * Hides animated loading panel.
	 */
	function complete(elmId)
	{
		var element = getObj(elmId);
		element.innerHTML = "";
	}
	
	
	function toggleCheckBox(chkBoxId)
	{
		var chkBox = getObj(chkBoxId);

		if(chkBox.checked == false)
		{
			chkBox.checked = true;
		}
		else
		{
			chkBox.checked = false;
		}
	}
	
	function click(elmId)
	{
		var elm = getObj(elmId);
		elm.onclick;
	}
	
	
	function displayFloatingDialog(width)
	{

		var dialogPanel = getObj('panel_floating_dialog');
		showElement('panel_floating_dialog')
		
		var yOffset = 0;
		if (IE == true){
			// IE 6
			if(document.documentElement)
				yOffset  = document.documentElement.scrollTop;
			else
			    yOffset = document.body.scrollTop;
		}
		else {
		        yOffset = window.pageYOffset;
		}
		
		// Set default width if not passed
		if(width != null)
		{
			dialogPanel.style.width = width+'px';
		}

		//    initialise dialog
//		dialogPanel.style.marginLeft   = (screen.width/2)-(dialogPanel.style.width/2)+'px';
//		dialogPanel.style.marginTop    = (yOffset+dialogPanel.style.height/2)+'px';
//alert("screen:"+screen.width+"\ndialog:"+dialogPanel.offsetWidth);
		dialogPanel.style.marginLeft   = (screen.width/2)-(dialogPanel.offsetWidth/2)+'px';
		dialogPanel.style.marginTop    = (screen.height/3)+'px'; 

	}
	
	function restripeTableRows(tableId) 
	{
		var table = getObj(tableId);
		var numRows = table.rows.length; 
	
		for(var i=1; i<numRows; i++) {
		
			if(i % 2 == 0)
				table.rows[i].className = 'row_default';
			else
				table.rows[i].className = 'row_alternate';
		}
		
	}
	
	
	/**
	 * Dynamic form elements.
	 * 
	 */
	
	var dynFormElms = Array();
	
	function reloadDynamicFormElements()
	{
		var elmId ="";
		var updateUrl ="";
		for(var i=0; i<dynFormElms.length; i++)
		{
			elmId = dynFormElms[i][0];
			updateUrl = dynFormElms[i][1];
	 		new Ajax.Updater(elmId, site_root+updateUrl,{asynchronous:true, evalScripts:true, requestHeaders:['X-Update', elmId]});
		}
	}
	
	function addDynamicFormElement(elmId, url)
	{
		dynFormElms[dynFormElms.length] = Array(elmId, url);
	}
	
	
	function confirmFiltersetInsert(filtersetId,inventoryId,urlsetId)
	{
	//	notify new insert
		alert('new filterset inserted: ID('+filtersetId+')');
	//	retrieve currently selected filtersets
		var domFiltersetCollection	= document.getElementsByName('data[InventoryFilterset][InventoryFilterset][]');
		var domFiltersetSelection	= '';
		
		for(i=0;i<domFiltersetCollection.length;i++)
			if(domFiltersetCollection[i].checked)
				domFiltersetSelection += domFiltersetCollection[i].value+',';
		
	//	append new filtersetId to selection
		domFiltersetSelection += filtersetId;
					
	//	update filterset collection
		showInventoryFiltersets(inventoryId,urlsetId,domFiltersetSelection,'ajaxInventoryFiltersets');

	//	reset filterset form
		var domFiltersetName		= document.getElementById('InventoryFiltersetName');
			domFiltersetName.value	= '';

		resetFilters();//ref: filters.js
	
	}
	
	
	/**
	 * Disable user input/interaction
	 *
	 * @param disableId			DOM id of element to block/cover
	 * @param disableMask		DOM id of element to use as mask
	 * @param disableOptions	Mask options; Opacity & Colour
	 */
	function disableInput( disableId, disableMask, disableOptions )
	{
		// if no mask given, create one
		if(!disableMask) { disableMask = 'domDisableMask'; }
		// if no object to disable, disable entire DIV#section_content
		if(!disableId) { disableId = 'wrapper'; }
		
		var domDisableMe	= document.getElementById(disableId);
		var domDisableMask	= document.getElementById(disableMask);

		if(domDisableMe.offsetHeight <= 1)
		{
			loading('edit_standard_field_values_loading');
			
			return true;
		}
		
		if(!domDisableMask)
		{
			domDisableMask					= domDisableMe.appendChild(document.createElement('div'));//document.body.appendChild(document.createElement('div'));
			domDisableMask.id				= 'domDisableMask';
			
			domDisableMask.style.display	= 'none';
			
			
		}
		
		if(disableOptions.depth)
		{
		    depth = disableOptions.depth;
		}
		else
		{
		    depth = 50;
		}
		
		if(disableId && disableId != 'wrapper')
		{
		    height    = domDisableMe.offsetHeight;
		    width     = domDisableMe.style.width;
		    color     = 'white';
		    image	  = 'loading-clock-white-transparent.gif';
		}
		else
		{
			height    = document.body.scrollHeight;
		    width     = document.body.clientWidth+'px';
		    color     = 'black';
		    image	  = 'loading-bar.gif';
		}
		
		domDisableMask.style.opacity			= (disableOptions.opacity/100);
		domDisableMask.style.MozOpacity			= (disableOptions.opacity/100);
		domDisableMask.style.filter				= 'alpha(opacity=' + (80) + ')';
		domDisableMask.style.backgroundColor	= color;//'black'; //disableOptions.color;
		domDisableMask.style.backgroundImage	= 'url('+site_root+'/img/'+image+')';
		domDisableMask.style.backgroundPosition	= 'center';
		domDisableMask.style.backgroundRepeat	= 'no-repeat';
		domDisableMask.style.zIndex				= depth;
		domDisableMask.style.width				= parseInt(width) + 'px';
		domDisableMask.style.height				= height + 'px';//domDisableMe.offsetHeight + 'px';//document.body.scrollHeight+'px';//
		domDisableMask.style.top				= '0px';//(document.body.offsetTop-20) + 'px';
		domDisableMask.style.left				= '0px';//document.body.offsetLeft + 'px';
		domDisableMask.style.position			= 'fixed';
		domDisableMask.style.display			= 'block';

		return true;
	}
	
	function enableInput(disableMask)
	{
		if(!disableMask) { disableMask = 'domDisableMask'; }
		
		complete('edit_standard_field_values_loading');
		
		var domDisableMask = document.getElementById(disableMask);
			domDisableMask.style.display = 'none';
	}
	
	function selectValues( activateMapping, inventorySchemaFieldId )
	{
		var valuesMapping	= document.getElementById(inventorySchemaFieldId+'_value');
		var filterMapping	= document.getElementById(inventorySchemaFieldId+'_filter');
		var countMapping	= document.getElementById(inventorySchemaFieldId+'_count');
		
		valuesMapping.checked	= filterMapping.checked		= countMapping.checked	= activateMapping;
		valuesMapping.disabled	= filterMapping.disabled	= countMapping.disabled	= activateMapping;
		
        if(urlParentFields[inventorySchemaFieldId] > 0)
        {
            if(parentMapping = document.getElementById(urlParentFields[inventorySchemaFieldId]+'_group'))
            {
                if(!urlRequiredFields[urlParentFields[inventorySchemaFieldId]])
                {
                    if(activateMapping)
                    {
                        parentMapping.checked = activateMapping;
                        
                        selectValues(activateMapping, urlParentFields[inventorySchemaFieldId]);
                    }
                }
            }
        }
	}
	
		
	function resetForm( resetRowData )
	{
		// retrieve ALL hidden & standard text input elements
		var resetFieldsInput = resetRowData.getElementsByTagName('input');
			// append INPUT.hidden || INPUT.text to collection
			for(i=0;i<resetFieldsInput.length;i++) { if(resetFieldsInput[i].type != 'hidden') { resetFieldsInput[i].value = ''; } }
		// retrieve ALL hidden & standard text input elements
		var resetFieldsSelect = resetRowData.getElementsByTagName('select');
			// append INPUT.hidden || INPUT.text to collection
			for(i=0;i<resetFieldsSelect.length;i++) { resetFieldsSelect[i].selectedIndex = 0; }
	}
	
//	/**
//	 * Removes a table row from from the table indicated by the tableId and tableRowIndex.
//	 */
//	function removeTableRow(tableId, tableRowIndex)
//	{
//		var tableElement = getObj(tableId);
//
//		if(tableElement !== null)
//		{
//			tableElement.deleteRow(tableRowIndex);
//			return true;
//		}
//		else {
//			return false;
//		}
//			
//	}

	function updatePreview( sender )
	{
		var senderTransform = document.getElementById(sender.id+'Transform');
        
        transformAll = true;
        
        // regex test
		var regexTest = /Headline(?!Fallback)/;
        var regexTestB = /Fallback/;
        var regexTestC = /Headline/;

		// check if keyword insertion valid AND required
		if(previewKeywordInsertion && regexTest.test(sender.id))
		{
			// valid AND required; so ready preview value with Google {KeyWord: } usage
			var senderPreviewText = sender.value;
				senderPreviewText = senderPreviewText.replace(/^(.*)$/, "{KeyWord: $1 }");
		}
		else
		{
			// not valid OR required; default to input value
			var senderPreviewText = sender.value;
		}
		
		var regexTest2 = /Fallback/;
		
		if(!regexTest2.test(sender.id))
		{
		    for(i=0;i<previewFields.length;i++)
		    {
		    	senderPreviewText = senderPreviewText.replace(previewFields[i].replace(/^\/(.*)\/$/, "$1"),previewValues[i]);
		    }
		}
		
		var senderPreview = document.getElementById(sender.id+'Preview');
			
        if(senderTransform != null && transformAll)
        {
            switch(senderTransform.options[senderTransform.selectedIndex].value)
            {
                case 'lowercase':
                
                    senderPreview.innerHTML = senderPreviewText.toLowerCase();
                    
                break;
                case 'uppercase':
                
                    senderPreview.innerHTML = senderPreviewText.toUpperCase();
                
                break;
                case 'sentence':
                                
                    sentenceBreaks = senderPreviewText.split(/\.[\s]+/);
                                   
                    senderPreview.innerHTML = '';
                    
                    for(i=0; i<sentenceBreaks.length; i++)
                    {
                        senderPreview.innerHTML += sentenceBreaks[i].substring(0,1).toUpperCase()+sentenceBreaks[i].substring(1).toLowerCase();
                        
                        if((i+1) < sentenceBreaks.length)
                        {
                            senderPreview.innerHTML += '. ';
                        }
                    }
                    
                    //senderPreview.innerHTML = senderPreviewText.substring(0,1).toUpperCase()+senderPreviewText.substring(1).toLowerCase();
                
                break;
                case 'static':
                
                    senderPreview.innerHTML = senderPreviewText;
                
                break;
            }
        }
        else
        {
            if(senderPreview != null)
                senderPreview.innerHTML = senderPreviewText;
        }

        if(regexTestB.test(sender.id))
        {
            if(regexTestC.test(sender.id))
            {
                $(sender.id+'Characters').innerHTML = (sender.value.length)+' / 25 characters';
            }
            else
            {
                $(sender.id+'Characters').innerHTML = (sender.value.length)+' / 35 characters';
            }
        }

        /*
		if(sender.value.length == 0)
		{
			senderPreview.innerHTML = 'No '+sender.title+' Entered';
		}
        */
	
	}
    
	function updateKeywordInsert( sender, domPreviewId )
	{
		previewKeywordInsertion = sender.checked;
		
		updatePreview(document.getElementById(domPreviewId));
        
        previewKeywordInsertion = false;
	}
	
	function initFocus()
	{
		if(IE)
		{
			var inputs = document.getElementsByTagName('input');
			
			for(i=0;i<inputs.length;i++)
			{
				if(inputs[i].type == 'text')
				{
					inputs[i].attachEvent('onfocus',cssFocus);
					inputs[i].attachEvent('onfocusout',cssLoseFocus);
				}
			}
            
		}
	}
	
	
	function cssFocus( sender )
	{
		sender.srcElement.className = sender.srcElement.type+'_focus';
	}
	
	function cssLoseFocus( sender )
	{
		sender.srcElement.className = sender.srcElement.type;
	}
	
	function highlightRow(elmId)
	{
    var domElm = getObj(elmId);
    
    domElm.className = 'selected';
    
    //domElm.style.backgroundColor = backgroundColour;
    //domElm.style.color = foregroundColour;
    
    return true;
	}
    
    
    function getHelp( domHelpId )
    {
        if(!domHelpId)
            return false;
        
        var domHelp = document.getElementById(domHelpId);
        
        if(!domHelp)
            return false;
        if(IE)
        {
            if(domHelp.style.display == 'block')
                domHelp.style.display = 'none';
                else
                domHelp.style.display = 'block';
        }
        else
        {
            if(domHelp.tagName == 'TR')
            {
                if(domHelp.style.display == 'table-row')
                    domHelp.style.display = 'none';
                    else
                    domHelp.style.display = 'table-row';
            }
            else if(domHelp.tagName == 'TBODY')
            {
                if(domHelp.style.display == '')
                    domHelp.style.display = 'none';
                    else
                    domHelp.style.display = '';
            }
            else
            {
                if(domHelp.style.display == 'block')
                    domHelp.style.display = 'none';
                    else
                    domHelp.style.display = 'block';
            }
        }
        
        return true;
    }
    
    function forcePage( status )
    {
        var forcePage = document.getElementById('forcepage');
            forcePage.disabled = (status ? false : true);
    }
    
    function swapImg(domId, img1, img2)
    {
    
      var domImg = getObj(domId);
      
      var imgString = domImg.src.substring(domImg.src.length-img1.length+1);
      //alert(imgString);
//      alert(' == ');
//      alert(img2);

      if(imgString == img2)
      {
        domImg.src = img1;
      }
      else
      {
        domImg.src = img2;
      }
      return true;
    
    }
    
    function loginPopup()
    {
        var screenWidth     = screen.width;
        var screenHeight    = screen.height;

        screenWidth = 1280;
        screenHeight = 1024;
        
        var dynamiccreativeApp = window.open(
                                            'http://localhost/',
                                            'DynamicCreativeV2',
                                            'status=0,height='+screenHeight+'px,width='+screenWidth+'px,resizable=0,scrollbars=yes,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0');
    }

    function addSelectOption(selectGroupId, name, value, selectAfter)
    {
    	if(value == null)
    	{
    		value = name;
    	}
    	
    	if(selectAfter == null)
    	{
    		selectAfter = false;
    	}
    	
    	var selectGroup = $(selectGroupId);
    	for(i = 0; i < selectGroup.length; i++)
    	{
    		// value already exists?
    		if(selectGroup.options[i].value == value)
    		{
    			return;
    		}
    	}

    	newIndex = selectGroup.length;
    	selectGroup.options[newIndex] = new Option(value, name);
    	
    	if(selectAfter)
    	{
        	selectGroup.selectedIndex = newIndex;
    	}

    }
    
    function roundNumber(number, decimals, doubleZeroPaddding)
    {
    	
    	if(doubleZeroPaddding == null)
    	{
    		doubleZeroPaddding = true;
    	}
    	
    	number = Math.round(number*100) / 100;
    	var numberStr = number.toString();
    	
    	var decimalIndex = numberStr.indexOf('.');
    	
    	if(number == 0)
    	{
    		if(doubleZeroPaddding)
    		{
    			return '0.00';
    		}
    		else
    		{
    			return '0';
    		}
    	}
    	
    	// decimal exists in number and is exactly two characters we need to pad with a zero (i.e. 10.4)
    	if(decimalIndex != -1 && decimalIndex == Math.max(0,(numberStr.length-decimals)))
    	{
    		return numberStr+'0';
    	}
    	//decimal not found (i.e whole number), pad with teo zeros
    	else if(decimalIndex == -1 && doubleZeroPaddding == true)
    	{
    		return numberStr+'.00';
    	}
    	else
    	{
    		return numberStr;
    	}
    }
    
    var checking = false;
    var allShowing = false;
    var allChecked = false;
    function hideShowAdGroups(campaignId)
    {

    	if(campaignId == null || campaignId == 0)
    	{
    		var adgroups = document.getElementsByName('adgroup_tbody[]');
    		
    		var i = 0;
    		if(allShowing == false)
    		{
    			$('master_campaign_arrow').src = site_root+'/img/arr-down.gif';
    			$('master_campaign_hideshowlink').innerHTML = '- hide all adgroups';
    			
        		for(i; i < adgroups.length; i++)
        		{
        			var adgroupCampaignId = adgroups[i].id.replace('adgroups_', '');
        			showAdGroups(adgroupCampaignId);
//        			showElement(adgroups[i].id);
        		}
        		
    			allShowing = true;
    		}
    		else
    		{
    			$('master_campaign_arrow').src = site_root+'/img/arr-right.gif';
    			$('master_campaign_hideshowlink').innerHTML = '- show all adgroups';
    			
        		for(i; i < adgroups.length; i++)
        		{
        			var adgroupCampaignId = adgroups[i].id.replace('adgroups_', '');
        			hideAdGroups(adgroupCampaignId);
//        			hideAdGroups(campaignId);
//        			hideElement(adgroups[i].id);
        		}
        		
    			allShowing = false;
    		}
    		
    		//alert('all campaigns');
    	}
    	
    	adgroupTbody = $('adgroups_' + campaignId);
    	
    	if(checking == false && adgroupTbody != null)
    	{
    		if(adgroupTbody.style.display == 'none')
        	{
        		showAdGroups(campaignId);
        	}
    		else
    		{
    			hideAdGroups(campaignId);
    		}
    	}
    	// If checkbox clicked, handled nested checking
    	else if (checking == true)
    	{
    		checking = false;
    		checkBox = $('campaign_check_'+campaignId);

    		checkAdGroups(campaignId, checkBox.checked);
    		
//    		checkBox.checked = check;
    	}
    	
    }
    
    function checkAdGroups(campaignId, check)
    {
		adgroups = document.getElementsByName('adgroup_check_'+campaignId+'[]');

		if(adgroups != null)
		{
			// check all child checkbox nodes
			for(j=0; j < adgroups.length; j++)
			{
	    		if(adgroups[j].disabled == false)
	    		{				
	    			adgroups[j].checked = check;
	    		}
			}
		}
    }
    
    function checkAllCampaigns()
    {
    	campaignCheckBoxes = document.getElementsByName('campaign_checkbox[]');
    	if(campaignCheckBoxes != null)
    	{
    	
			if(allChecked == true)
			{
		    	for(i=0; i < campaignCheckBoxes.length; i++)
		    	{
		    		campId = campaignCheckBoxes[i].id.replace('campaign_check_', '');
	    			campaignCheckBoxes[i].checked = false;
//	    			alert('checked:'+ campId);
	    			checkAdGroups(campId, false);
	    		}
		    	allChecked = false;
			}
			else
			{
		    	for(i=0; i < campaignCheckBoxes.length; i++)
		    	{
		    		campId = campaignCheckBoxes[i].id.replace('campaign_check_', '');
		    		
		    		if(campaignCheckBoxes[i].disabled == false)
		    		{
		    			campaignCheckBoxes[i].checked = true;
		    			checkAdGroups(campId, true);
		    		}
	    			//campaignCheckBoxes[i].checked = true;
	    		}
		    	allChecked = true;
			}
    	}
    }
    
    function showAdGroups(campaignId)
    {
    	showElement('adgroups_' + campaignId);
    	
    	
    	campaignCell = $('campaign_cell_'+ campaignId);
    	if(campaignCell != null)
    	{
    		campaignCell.style.backgroundImage = 'url('+site_root+'/img/arr-down.gif)';
    	}
    	
    	
//  	showElement('campaign_arrow_down_' + campaignId);
 //   	hideElement('campaign_arrow_right_' + campaignId);
    }

    function hideAdGroups(campaignId)
    {
    	showElement('adgroups_' + campaignId);
    	//showElement('cabulkCampaignActionmpaign_arrow_right_' + campaignId);
    	hideElement('adgroups_' + campaignId);
    	//hideElement('campaign_arrow_down_' + campaignId);
    	
    	campaignCell = $('campaign_cell_'+ campaignId);
    	if(campaignCell != null)
    	{
    		campaignCell.style.backgroundImage = 'url('+site_root+'/img/arr-right.gif)';
    	}
    	
    }
    
    
    function bulkCampaignAction(type)
    {
    	
    	var formElements = document.getElementsByTagName('input');
    	var frmElementsArray = Array();
    	
    	for(var i=0; i<formElements.length; i++)
    	{
    		frmElementsArray.push(formElements[i]);
    	}
    	
//    	var postData = Form.serialize('ajaxFormTemplateSummary');
//    	alert(postData);
    	
    	DC.render(site_root+'/aw_campaign_templates/panel_bulk_confirm/'+type, null, frmElementsArray);
    }
    
    
    function bulkElementsChecked(action)
    {
    	
    	campaignChecks = document.getElementsByName('campaign_checkbox[]');
    	isChecked = false;
    	for(i=0;i<campaignChecks.length;i++)
    	{
    		if(campaignChecks[i].checked == true)
    		{
    			isChecked = true;
    		}
    		
    		campId = campaignChecks[i].id.replace('campaign_check_', '');
    		adgroups = document.getElementsByName('adgroup_check_'+campId+'[]');
    		
    		for(j=0;j<adgroups.length;j++)
    		{
    			if(adgroups[j].checked == true)
    			{
    				isChecked = true;
    			}
    		}
    		
    	}
    	
    	if(isChecked == false)
    	{
    		alert('Please select one or more Campaigns or Ad Groups before '+action+'.');
    	}
    	
    	return isChecked;
    }
    
    
