    var previewCheck = null;
    var previewReady = false;

    var activeTemplate  = null;

    var activeKeyword   = 0;
    var allowNext       = true;
    var bulkListSize    = 0;
    var bulkInsertion   = false;
    var bulkList        = new Array();
    var finalKeyword    = false;
    
    var resetOnComplete = false;

    var tagOrdersActive = new Array();
    var tagCollection   = new Array();

    

	function editKeyword( mode, keywordRowData, keywordRow, list )
	{
        if(list)
        {
            // reset function
            resetOnComplete = true;
            
            disableInput(null,null,{opacity:75,color:'white'});
            
            bulkInsertion = true;
            
            bulkList = document.getElementById('KeywordTextBulk');
            bulkList = bulkList.value.split(/\r|\n/m);
            bulkListSize = bulkList.length;
                
            while(bulkList.length > 0)
            {
                //alert('KeywordList.length('+keywordList.length+')');
                //alert('KeywordList:: '+keywordList);
                
                if(allowNext)
                {
                    //alert('allowNext = '+allowNext);
                    
                    allowNext = false;
                    
                    var keywordText = document.getElementById('KeywordText');
                        keywordText.value = bulkList[0];
                        
                    allowNext = editKeyword('view', keywordRowData, null, false);
                    
                    if(allowNext)
                    {
                        bulkList.shift();
                        //alert('keywordList.shift()');
                        //alert('KeywordList:: '+keywordList);
                        //alert('KeywordList.length('+keywordList.length+')');
                    }
                } 
            }
            
            return true;
        }
        		
		// ready keyword data array
		var keywordData = new Array();
		
		// retrieve keyword data; DOM INPUT
		var keywordFieldsInput = keywordRowData.getElementsByTagName('input');
			for(i=0;i<keywordFieldsInput.length;i++) { keywordData.push(keywordFieldsInput[i]); }
		// retrieve keyword data; DOM SELECT
		var keywordFieldsSelect = keywordRowData.getElementsByTagName('select');
			for(i=0;i<keywordFieldsSelect.length;i++) { keywordData.push(keywordFieldsSelect[i]); }
			
			
		// check if updating an existing keyword
		switch(mode)
		{
			case 'view':
			
				if(keywordRow == null)
				{
					var keywordRows 			= document.getElementById('keywords');
					var keywordRow				= keywordRows.insertRow(keywordRows.rows.length);
						keywordRow.id			= 'Keyword'+(keywordRows.rows.length-1);
						keywordRow.className 	= 'row_default';
				}
				else
				{
					resetOnComplete = true;
				}

				var keywordIndex 	= (keywordRow.rowIndex - 1);

				var updateId		= keywordRow.id;
				
				//keywordRow.style.fontWeight = 'normal';
                
                if(keywordIndex % 2 == 0)
                {
                    keywordRow.className = 'row_default';
                }
                else
                {
                    keywordRow.className = 'row_alternate';
                }
                
                if(IE)
                {
                    keywordRow.style.display = 'block';
                }
                else
                {
                    keywordRow.style.display = 'table-row';
                }
                
			
			break;
			case 'edit':
			
                bulkInsertion = false;
                
                resetOnComplete = false;                
            
				var keywordIndex	= keywordRowData.id.substr(7, keywordRowData.id.length);
				var updateId		= 'keyword';

                if(activeTemplate != null && keywordIndex != activeTemplate)
                {
                    if(confirm("WARNING!\r\nYou are already editing an existing Keyword. Do you wish cancel and edit this new Keyword instead ?\r\n\r\nUnsaved changes will be lost!"))
                    {
                        cancelKeyword(activeTemplate, document.getElementById('Keyword'+activeTemplate));
                    }
                    else
                    {
                        return false;
                    }
                }

				//keywordRowData.style.fontWeight = 'bold';
                //keywordRowData.style.display = 'none';
                keywordRowData.className = 'row_editing';
                
                var keywordView     = document.getElementById('KeywordText'+keywordIndex+'View');
                var keywordEditing  = document.getElementById('KeywordText'+keywordIndex+'Editing');
                
                keywordView.style.display = 'none';
                keywordEditing.style.display = 'block';
                
                activeTemplate = keywordIndex;

				
			break;
		}

		// disable input
		if(!list)
            disableInput(null,null,{opacity:75,color:'white'});
		
		// update keyword display
		if(resetOnComplete == true)
		{
            new Ajax.Updater(updateId, site_root+'/aw_keyword_templates/ajax_keyword/'+mode+'/'+keywordIndex, {onComplete:function(request){resetKeyword(keywordIndex);activeTemplate = null;}, asynchronous:true, evalScripts:true, parameters:Form.serializeElements(keywordData), requestHeaders:['X-Update', updateId]});
		}
		else if(mode != 'edit')
		{
			new Ajax.Updater(updateId, site_root+'/aw_keyword_templates/ajax_keyword/'+mode+'/'+keywordIndex, {onComplete:function(request){updateKeyword(keywordIndex);activeTemplate = null;}, asynchronous:true, evalScripts:true, parameters:Form.serializeElements(keywordData), requestHeaders:['X-Update', updateId]});
		}
		else
		{
			new Ajax.Updater(updateId, site_root+'/aw_keyword_templates/ajax_keyword/'+mode+'/'+keywordIndex, {onComplete:function(request){enableInput()}, asynchronous:true, evalScripts:true, parameters:Form.serializeElements(keywordData), requestHeaders:['X-Update', updateId]});
		}
		
        return true;        
	}
	
	function updateKeyword( keywordIndex, bulk )
	{
        var keywordText = 'KeywordText'+keywordIndex;
    		
  		updatePreview(document.getElementById(keywordText));
        
		if(!bulkInsertion)
        {
            enableInput();
        }
        else
        {
            activeKeyword++;
            
            if(activeKeyword == bulkListSize)
                enableInput();
        }
	}
	
	function resetKeyword( keywordIndex,searchEngine )
	{
        new Ajax.Updater('keyword', site_root+'/'+searchEngine+'_keyword_templates/ajax_keyword/edit/', {onComplete:function(request){updateKeyword(keywordIndex);}, asynchronous:true, evalScripts:true, requestHeaders:['X-Update', 'keyword']});
	}

    function cancelKeyword( keywordIndex, keywordRow,searchEngine )
    {
        disableInput(null, null, {opacity:75,color:'white'});
        
        var keywordView     = document.getElementById('KeywordText'+keywordIndex+'View');
        var keywordEditing  = document.getElementById('KeywordText'+keywordIndex+'Editing');
        
        keywordView.style.display = 'block';
        keywordEditing.style.display = 'none';
        
        keywordRow.className = '';
        
        if(keywordIndex % 2 == 0)
        {
            keywordRow.className = 'row_default';
        }
        else
        {
            keywordRow.className = 'row_alternate';
        }
        
        new Ajax.Updater('keyword', site_root+'/'+searchEngine+'_keyword_templates/ajax_keyword/edit/', {onComplete:function(request){enableInput();activeTemplate = null;}, asynchronous:true, evalScripts:true, requestHeaders:['X-Update', 'keyword']});
    }

	function editTextAd( mode, textadRowData, textadRow, wizardId, searchEngine )
	{
		textadData = new Array();
		
		var textadFieldsInput = textadRowData.getElementsByTagName('input');
			for(i=0;i<textadFieldsInput.length;i++) { textadData.push(textadFieldsInput[i]); }
			
		var textadFieldsSelect = textadRowData.getElementsByTagName('select');
			for(i=0;i<textadFieldsSelect.length;i++) { textadData.push(textadFieldsSelect[i]); }
			
		switch(mode)
		{
			case 'view':
			
				if(textadRow == null)
				{
					var textadRows			= document.getElementById('textads');
					var textadRow			= textadRows.insertRow(textadRows.rows.length);
						textadRow.id		= 'TextAd'+(textadRows.rows.length-1);
						textadRow.className = 'row_default';
				}


				var textadIndex = textadRow.rowIndex;
				
				var updateId = textadRow.id;
                
                if(textadIndex % 2 == 0)
                {
                    textadRow.className = 'row_default';
                }
                else
                {
                    textadRow.className = 'row_alternate';
                }
			
			break;
			case 'edit':
			
				var textadIndex		= textadRowData.id.substr(6, textadRowData.id.length);
				var updateId		= 'textad';

                if(activeTemplate != null && activeTemplate != textadIndex)
                {
                    if(confirm("WARNING!\r\nYou are already editing an existing TextAd (Creative). Do you wish cancel and edit this new TextAd (Creative) instead ?\r\n\r\nUnsaved changes will be lost!"))
                    {
                        cancelTextad(activeTemplate, document.getElementById('TextAd'+activeTemplate));
                    }
                    else
                    {
                        return false;
                    }
                }

                textadRowData.className = 'row_editing';

                var textadView      = document.getElementById('Textad'+textadIndex+'View');
                    textadView.style.display = 'none';
                var textadEditing   = document.getElementById('Textad'+textadIndex+'Editing');
                    textadEditing.style.display = 'block';
                
                //textadRowData.style.display = 'none';
                
                activeTemplate = textadIndex;
			
			break;
		}

		disableInput(null,null,{opacity:75,color:'white'});

		if(mode != 'edit')
		{
			new Ajax.Updater(updateId, site_root+'/'+searchEngine+'_textad_templates/ajax_textad/view/'+textadIndex+'/'+wizardId, {onComplete:function(request){ resetTextAd(textadIndex, wizardId); }, asynchronous:true, evalScripts:true, parameters:Form.serializeElements(textadData), requestHeaders:['X-Update', updateId]});			
		}
		else
		{
			new Ajax.Updater(updateId, site_root+'/'+searchEngine+'_textad_templates/ajax_textad/edit/'+textadIndex+'/'+wizardId, {onComplete:function(request){ enableInput(); }, asynchronous:true, evalScripts:true, parameters:Form.serializeElements(textadData), requestHeaders:['X-Update', updateId]});
		}
	}

    function cancelTextad( textadIndex, textadRow, wizardId )
    {
        var textadView      = document.getElementById('Textad'+textadIndex+'View');
            textadView.style.display = 'block';
        var textadEditing   = document.getElementById('Textad'+textadIndex+'Editing');
            textadEditing.style.display = 'none';
            
        if(textadIndex % 2 == 0)
        {
            textadRow.className = 'row_default';
        }
        else
        {
            textadRow.className = 'row_alternate';
        }
                
        resetTextAd(0, wizardId);
    }

	function resetTextAd( textadIndex, wizardId )
	{
        new Ajax.Updater('textad', site_root+'/aw_textad_templates/ajax_textad/edit/0/'+wizardId, {onComplete:function(request){ enableInput(); }, asynchronous:true, evalScripts:true, requestHeaders:['X-Update', 'textad']});
	}
    
    function previewAds( mode, previewId, searchEngine )
    {
        var domReviewPanel  = document.getElementById('review_panel');
        var domPreviewPanel = document.getElementById('ajaxPreviewPanel');
        
        disableInput(null, null, {opacity:75, color:'white'});

        switch(mode)
        {
            case 'generate':
            
                new Ajax.Updater(domPreviewPanel.id, site_root+'/'+searchEngine+'_adgroup_templates/preparepreview/', {onComplete:function(request){ showPreview(mode, domReviewPanel, domPreviewPanel); }, asynchronous:true, evalScripts:true, requestHeaders:['X-Update', 'textad']});
            
            break;
            case 'view':
            
                if(previewId != null)
                {
                    new Ajax.Updater(domPreviewPanel.id, site_root+'/'+searchEngine+'_adgroup_templates/viewads/'+previewId+'/preview/', {onComplete:function(request){ showPreview(mode, domReviewPanel, domPreviewPanel); }, asynchronous:true, evalScripts:true, requestHeaders:['X-Update', 'textad']});
                }
                else
                {
                    alert('Error!');
                }
            
            break;
        }
    }
    
    function showPreview(mode, domReviewPanel, domPreviewPanel)
    {
        domReviewPanel.style.display    = 'none';
        domPreviewPanel.style.display   = 'block';
        
        enableInput();
    }
    
   
    function reviewTemplate()
    {
        var domReviewPanel  = document.getElementById('review_panel');
        var domPreviewPanel = document.getElementById('ajaxPreviewPanel');
        
        domPreviewPanel.style.display   = 'none';
        domReviewPanel.style.display    = 'block';        
    }
    
    function deleteTemplate( templateId, templateModel, templateModelName, modelName)
    {
        if(confirm("You are about to delete the "+templateModel+", '"+templateModelName+"'.\r\nAre you sure you want to delete this ?"))
        {
            disableInput(null, null, {opacity:75,color:'white'});
            
            new Ajax.Request(site_root+'/'+modelName+'s/delete/'+templateId, {onComplete:function(request){window.location.reload();}, asychronous:true, evalScripts:true});
        }
    }
    
    function filterSummary( url )
    {
        disableInput(null, null, {opacity:75,color:'white'});
        
        new Ajax.Updater('ajaxTemplateSummary',site_root+'/'+url, {onComplete:function(event){enableInput()}, asynchronous:true, evalScripts:true, parameters:Form.serialize('ajaxFormTemplateSummary'), requestHeaders:['X-Update', 'ajaxTemplateSummary']});
    }
    
    function toggleDelete( sender, domRow, domTarget )
    {
        var targetDelete = document.getElementById(domTarget);
        
        if(sender.innerText == 'Delete')
        {
            targetDelete.value = 1;

            domRow.className = 'row_disabled';
                        
            sender.innerText = 'Undelete';
        }
        else
        {
            domRow.className = 'row_default';
            
            sender.innerText = 'Delete';
            
            targetDelete.value = 0;
        }
        
        return false;
    }
    
    function insertTemplateInto( parent, parentId, child, url, form, getconfirm )
    {
        if((parent == null && parentId == null) || url == null)
            return false;
        
        if(getconfirm == null || getconfirm)
        {
            if(confirm('Are you sure you wish to insert a NEW '+child+' into \''+parent+'\''))
            {
                disableInput(null,null,{opacity:75,color:'white'});
                
                // new AJAX request to populate a session variable >> /vendors/session/[action]/[key]/[value:optional], use {parameters:Form.serialize()} for more complex values
                if(!form || form === false)
                {
                    new Ajax.Request(site_root+'/websites/session/insert/template/'+parentId, {onComplete:function(event){window.location=url}});
                }
                else
                {
                    postData = new Array();
                    postData.push(document.getElementById(child));
                    new Ajax.Request(site_root+'/websites/session/insert/template/', {onComplete:function(event){window.location=url}, parameters:Form.serializeElements(postData)});
                }
            }
            else
            {
                return false;
            }
        }
        else
        {
            disableInput(null,null,{opacity:75,color:'white'});
                
            // new AJAX request to populate a session variable >> /vendors/session/[action]/[key]/[value:optional], use {parameters:Form.serialize()} for more complex values
            if(!form || form === false)
            {
                new Ajax.Request(site_root+'/websites/session/insert/template/'+parentId, {onComplete:function(event){window.location=url}});
            }
            else
            {
                postData = new Array();
                postData.push(document.getElementById(child));
                new Ajax.Request(site_root+'/websites/session/insert/template/', {onComplete:function(event){window.location=url}, parameters:Form.serializeElements(postData)});
            }
        }
    }
    
    function checkSubLocation( sender, value )
    {
        if(sender == null)
            return false;
        
        var regions     = document.getElementById(searchEngine+'Regions');
        var region      = document.getElementById(searchEngine+'Region');
        var btnregion   = document.getElementById('btnAwRegion');
        var btnregions  = document.getElementById('btnAwRegions');
        var cities      = document.getElementById(searchEngine+'Cities');
        var city        = document.getElementById(searchEngine+'City');
        var btncity     = document.getElementById('btnAwCity');
        var btncities   = document.getElementById('btnAwCities');
            
        if(sender.options[sender.selectedIndex].value == value)
            regions.disabled = region.disabled = btnregion.disabled = btnregions.disabled = cities.disabled = city.disabled = btncity.disabled = btncities.disabled = false;
            else
            regions.disabled = region.disabled = btnregion.disabled = btnregions.disabled = cities.disabled = city.disabled = btncity.disabled = btncities.disabled = true;
            
        return true;
    }
    
    function geoTarget( sender )
    {
        if(sender == null)
            return false;

        if(sender.id == searchEngine+'City')
            var senderTargets = document.getElementById(searchEngine+'Cities');
            else
            var senderTargets = document.getElementById(sender.id+'s');
        
        for(i=0; i<senderTargets.length; i++)
            if(senderTargets[i].value == sender.options[sender.selectedIndex].value)
                return false;
            
        var senderTarget    = new Option(sender.options[sender.selectedIndex].text, sender.options[sender.selectedIndex].value);
            senderTargets.options[senderTargets.options.length] = senderTarget;
            
       return true;
    }
    
    function geoUnTarget( sender )
    {
        for(i=0; i<sender.options.length; i++)
        {
            if(sender.options[i].selected)
            {
                sender.remove(i);
                
                i--;
            }
        }
    }
    
    function selectGeoTargets()
    {
        var regions     = document.getElementById(searchEngine+'Regions');
        var cities      = document.getElementById(searchEngine+'Cities');
        
        if(regions.disabled == false)
            for(i=0; i<regions.options.length; i++)
                regions[i].selected = true;
                
        if(cities && cities.disabled == false)
            for(i=0; i<cities.options.length; i++)
                cities[i].selected = true;
                
        return true;
    }
    
    function switchSearchEngine( sender, searchEngine )
    {
        if(!sender) { return false; }
        
        /*if(confirm("Switching active Search Engine selection will reload the current page.\r\n\r\nAre you sure ?"))
        {*/
            disableInput(null,null,{opacity:75,color:'white'});
            
            new Ajax.Request(site_root+'/websites/session/insert/dynamiccreativeSearchEngine/'+sender.options[sender.selectedIndex].value, {onComplete:function(request){window.location.reload();}, asynchronous:true, evalScripts:true});
        /*}
        else
        {
            for(i=0; i<sender.options.length; i++)
                if(sender.options[i].value == searchEngine) { sender.selectedIndex = i; }
                
            return false;
        }
        */
        //return true;
        
    }
    
    function switchDatasource(sender, datasource)
    {
        if(!sender) { return false; }
        
        
        if(confirm("Switching active Website Datasource selection will reload the current page.\r\n\r\nAre you sure ?"))
        {
            disableInput(null,null,{opacity:75,color:'white'});
            
            new Ajax.Request(site_root+'/websites/session/insert/dynamiccreativeDatasource/'+sender.options[sender.selectedIndex].value, {onComplete:function(request){window.location.reload();}, asynchronous:true, evalScripts:true});
        }
        else
        {
            for(i=0; i<sender.options.length; i++)
                if(sender.options[i].value == datasource) { sender.selectedIndex = i; }
        }
    }
    
     function switchStatus( sender, status )
    {
        if(!sender) { return false; }
        
        /*if(confirm("Switching active Status selection will reload the current page.\r\n\r\nAre you sure ?"))
        {*/
            disableInput(null,null,{opacity:75,color:'white'});
            
            new Ajax.Request(site_root+'/websites/session/insert/dynamiccreativeStatus/'+sender.options[sender.selectedIndex].value, {onComplete:function(request){window.location.reload();}, asynchronous:true, evalScripts:true});
        /*}
        else
        {
            for(i=0; i<sender.options.length; i++)
                if(sender.options[i].value == status) { sender.selectedIndex = i; }
                
            return false;
        }
        */
        //return true;
        
    }
    
    
    /**
     * Build Campaign Functions
     */
    function selectSearchEngine( sender )
    {
        if(confirm("Changing target Search Engine, will reset ALL Language and GEO targets to be reset\r\n\r\nAre you sure ?"))
            new Ajax.Updater('SearchEngineSelector', site_root+'/aw_campaign_templates/search_engine_selector/'+sender.options[sender.selectedIndex].value, {onComplete:function(request){ cascadeSearchEngine(); }, asynchronous:true, evalScripts:true, requestHeaders:['X-Update', 'ajaxTemplateSummary']});
            else
            return false;
    }  
    
    /**
     * NOTE: Javascript handles this well, if number of search engines increases or settings are database driven, then should be handled via nested views
     */
    function cascadeSearchEngine()
    {
        // first update all display references
        var searchEngineLabels = document.getElementsByTagName('SPAN');
          
        for(i=0;i<searchEngineLabels.length;i++)
        {
            if(searchEngineLabels[i].getAttribute('name') == 'search_engine')
            {
                searchEngineLabels[i].innerHTML = $('TemplatePublicationNetworkId').options[$('TemplatePublicationNetworkId').selectedIndex].text;//.replace(/\sAPI/g,'');
            }
        }
        
        // update GEO & Language targets
        if($('TemplatePublicationNetworkId').options[$('TemplatePublicationNetworkId').selectedIndex].text.replace(/\sAPI/g,'') == 'Yahoo!')
        {
            // remove any GEO targets below country level
            if($('RegionTargets') != null)
                $('RegionTargets').remove();
        }
        
        // find Language targets
        var currentLanguages = $('LanguageTargets').descendants();
            
        // remove any Language targets
        for(i=0;i<currentLanguages.length;i++)
        {
            if(currentLanguages[i].tagName == 'LI')
                $(currentLanguages[i].id).remove();
            
            currentLanguages.splice(i,2)
        }
                
        // retrieve new default language
        new Ajax.Updater('LanguageTargets', site_root+'/aw_campaign_templates/get_default_language/'+$('TemplatePublicationNetworkId').options[$('TemplatePublicationNetworkId').selectedIndex].value, {asynchronous:true, evalScripts:true, requestHeaders:['X-Update', 'LanguageTargets']});
    }
    
    function buildCampaignPopup( myWidth, myHeight, myName, URI, searchEngine, sender)
    {
        var postData = new Array();

        switch(myName)
        {
            case 'BuildCampaignPublish':
            
                // any additional data manipulation required for Publishing Campaign to go here.
            
            break;
            case 'BuildCampaignDates':
            
                postData.push($(searchEngine+'CampaignTemplateStartDate'));
                postData.push($(searchEngine+'CampaignTemplateEndDate'));
            
            break;
            case 'BuildCampaignLocations':
            
                if($('TemplatePublicationNetworkId').tagName == 'SELECT')
                {
                    if($('TemplatePublicationNetworkId').options[$('TemplatePublicationNetworkId').selectedIndex].text.replace(/\sAPI/g,'') == 'Yahoo!')
                    {
                        alert('Yahoo! Campaigns will target the accounts default country, and can not be changed');
                        
                        return false;
                    }
                }
                else if($('TemplatePublicationNetworkId').value.replace(/\sAPI/g,'') == 'Yahoo!')
                {
                    alert('Yahoo! Campaigns will target the accounts default country, and can not be changed');
                    
                    return false;
                }        
                
                // using Prototype descendants; as IE doesnt like to reference getElementByName on dynamic inserted DOM Elements.
                var postDataFields = $('CountryTargets').descendants();
                
                for(i=0;i<postDataFields.length;i++)
                {
                    if(postDataFields[i].tagName == 'INPUT')
                        postData.push(postDataFields[i]);
                }
            
            break;
            case 'BuildCampaignLanguages':
            
                if($('TemplatePublicationNetworkId').tagName == 'SELECT')
                {
                    if($('TemplatePublicationNetworkId').options[$('TemplatePublicationNetworkId').selectedIndex].text.replace(/\sAPI/g,'') == 'Yahoo!')
                    {
                        alert('Yahoo! Campaigns will target ALL Languages by default, and can not be changed');
                        
                        return false;
                    }
                }
                else if($('TemplatePublicationNetworkId').value.replace(/\sAPI/g,'') == 'Yahoo!')
                {
                    alert('Yahoo! Campaigns will target ALL Languages by default, and can not be changed');
                    
                    return false;
                }        
                
                // using Prototype descendants; as IE doesnt like to reference getElementByName on dynamic inserted DOM Elements.
                var postDataFields = $('LanguageTargets').descendants();
                
                for(i=0;i<postDataFields.length;i++)
                {
                    if(postDataFields[i].tagName == 'INPUT')
                        postData.push(postDataFields[i]);
                }
            
            break;
            case 'BuildAdgroupName':
            
            	
                if($(searchEngine+'AdgroupTemplateName').disabled)
                    $(searchEngine+'AdgroupTemplateName').disabled = false;
                    
                postData.push($(searchEngine+'AdgroupTemplateName'));
                postData.push($(searchEngine+'AdgroupTemplateNameType'));
                postData.push($(searchEngine+'AdgroupTemplateNameTemplate'));
            
            break;
            case 'BuildAdgroupKeyword':

                if(sender != null && sender != undefined)
                {
                    if(!sender.index)
                        index = sender.getAttribute('index');
                        else
                        index = sender.index;
                    
                    var keywordData = $(searchEngine+'KeywordTemplate'+index).descendants();
                    
                    for(i=0;i<keywordData.length;i++)
                    {
                        if(keywordData[i].tagName == 'INPUT')
                            postData.push(keywordData[i]);
                    }
                }
                else
                {
                	
                    index = $(searchEngine+'KeywordTemplates').getElementsByTagName('UL');
                    
                    if(index.length == 1)
                        index = 0;
                        else
                        index = (index.length-2);
                }
                
                URI += index;
            
            break;
            case 'BuildAdgroupLandingPage':

                if(sender != null && sender != undefined)
                {
                    if(!sender.index)
                        index = sender.getAttribute('index');
                        else
                        index = sender.index;
                    
                    var landingPageData = $('LandingPageTemplate'+index).descendants();
                    
                    for(i=0;i<landingPageData.length;i++)
                    {
                        if(landingPageData[i].tagName == 'INPUT'){
                            postData.push(landingPageData[i]);
                            
                        }
                    }
                }
                else
                {
                	
                    index = $('LandingPageTemplates').getElementsByTagName('UL');
                    if(index.length == 1)
                        index = 0;
                        else
                        index = (index.length-1);
                }
                
                URI += index;
            
            break;
            case 'BuildAdgroupTextad':

                if(sender != null && sender != undefined)
                {
                    if(!sender.index)
                        index = sender.getAttribute('index');
                        else
                        index = sender.index;
                    
                    var textadData = $(searchEngine+'TextadTemplate'+index).descendants();
                    
                    for(i=0;i<textadData.length;i++)
                    {
                        if(textadData[i].tagName == 'INPUT')
                            postData.push(textadData[i]);
                    }
                }
                else
                {
                    index = 0;
                    
                    var existingTextads = $(searchEngine+'TextadTemplates').descendants();
                    
                    var regexTest = /Options/;
                    
                    for(i=0;i<existingTextads.length;i++)
                    {
                        if(regexTest.test(existingTextads[i].id))
                        {
                            index++;
                        }
                    }
                }
                
                
                URI += index;
            
            break;
        }
        
        //render(myWidth,myHeight,myName,URI,postData);
        DC.render(URI, {backgroundColor:'white',width:myWidth+'px',height:myHeight+'px',top:((document.viewport.getHeight()/2)-(myHeight/2))+'px',left:((document.viewport.getWidth()/2)-(myWidth/2))+'px',position:'fixed',zIndex:'101', overflow:'auto'},postData);
    }
    
    function enableDates( sender )
    {
        if(sender.value == 'default')
        {
            if(sender.id == 'StartDateDefault')
            {
                $('StartDateCalendar').style.display = 'none';
            }
            else if(sender.id == 'EndDateDefault')
            {
                $('EndDateCalendar').style.display = 'none';
            }
        }
        else if(sender.value == 'custom')
        {
            if(sender.id == 'StartDateCustom')
            {
                $('StartDateCalendar').style.display = 'block';
            }
            else if(sender.id == 'EndDateCustom')
            {
                $('EndDateCalendar').style.display = 'block';
            }
        }
    }
    
    function saveCampaignDates( form )
    {
        formFields = form.getInputs('radio');
        
        var namesOfMonths   = $A(['January','Feburary','March','April','May','June','July','August','September','October','November','December']);
        var daysOfWeek      = $A(['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday']);
        
        for(x=0;x<formFields.length;x++)
        {
            switch(formFields[x].id)
            {
                case 'StartDateDefault':
                
                    if(formFields[x].checked)
                    {
                        $(searchEngine+'CampaignTemplateStartDate').value = '';
                        $(searchEngine+'CampaignTemplateStartDateDisplay').innerHTML = 'As soon as sent to search engine (default)';
                    }
                    else
                    {
                        var dateFields = $('_unboundStartDate').value.split('-');
                        
                        var date = new Date();
                            date.setUTCDate(dateFields[2]);
                            date.setUTCMonth(dateFields[1]-1);
                            date.setUTCFullYear(dateFields[0]);
                        
                        $(searchEngine+'CampaignTemplateStartDate').value = $('_unboundStartDate').value;
                        $(searchEngine+'CampaignTemplateStartDateDisplay').innerHTML = daysOfWeek[date.getUTCDay()]+', '+date.getUTCDate()+' '+namesOfMonths[date.getUTCMonth()]+', '+date.getUTCFullYear();
                        
                        /*
                        if(!validateDates($('StartDateDay').value, $('StartDateMonth').value, $('StartDateYear').value, 'StartDate'))
                            return false;
                        
                        $(searchEngine+'CampaignTemplateStartDate').value = $('StartDateYear').value+'-'+$('StartDateMonth').value+'-'+$('StartDateDay').value;
                        
                        // user readable version
                        $(searchEngine+'CampaignTemplateStartDateDisplay').innerHTML = $('StartDateDay').value;
                        
                        if($('StartDateDay').value.lastIndexOf(1) == $('StartDateDay').value.length-1)
                        {
                            $(searchEngine+'CampaignTemplateStartDateDisplay').innerHTML += 'st '+namesOfMonths[$('StartDateMonth').value-1]+' '+$('StartDateYear').value;
                        }
                        else if($('StartDateDay').value.lastIndexOf(2) == $('StartDateDay').value.length-1 && $('StartDateDay').value.indexOf(1) != 0)
                        {
                            $(searchEngine+'CampaignTemplateStartDateDisplay').innerHTML += 'nd '+namesOfMonths[$('StartDateMonth').value-1]+' '+$('StartDateYear').value;
                        }
                        else
                        {
                            $(searchEngine+'CampaignTemplateStartDateDisplay').innerHTML += 'th '+namesOfMonths[$('StartDateMonth').value-1]+' '+$('StartDateYear').value;
                        }
                        */
                    }
                
                break;
                case 'StartDateCustom': // probably never get executed, but just incase getInputs() returns different sequence per browser etc.
                
                    if(formFields[x].checked)
                    {
                        var dateFields = $('_unboundStartDate').value.split('-');
                        
                        var date = new Date();
                            date.setUTCDate(dateFields[2]);
                            date.setUTCMonth(dateFields[1]-1);
                            date.setUTCFullYear(dateFields[0]);
                        
                        $(searchEngine+'CampaignTemplateStartDate').value = $('_unboundStartDate').value;
                        $(searchEngine+'CampaignTemplateStartDateDisplay').innerHTML = daysOfWeek[date.getUTCDay()]+', '+date.getUTCDate()+' '+namesOfMonths[date.getUTCMonth()]+', '+date.getUTCFullYear();
                        
                        /*
                        if(!validateDates($('StartDateDay').value, $('StartDateMonth').value, $('StartDateYear').value, 'StartDate'))
                            return false;
                        
                        $(searchEngine+'CampaignTemplateStartDate').value = $('StartDateYear').value+'-'+$('StartDateMonth').value+'-'+$('StartDateDay').value;
                        
                        // user readable version
                        $(searchEngine+'CampaignTemplateStartDateDisplay').innerHTML = $('StartDateDay').value;
                        
                        if($('StartDateDay').value.lastIndexOf(1) == $('StartDateDay').value.length-1)
                        {
                            $(searchEngine+'CampaignTemplateStartDateDisplay').innerHTML += 'st '+namesOfMonths[$('StartDateMonth').value-1]+' '+$('StartDateYear').value;
                        }
                        else if($('StartDateDay').value.lastIndexOf(2) == $('StartDateDay').value.length-1 && $('StartDateDay').value.indexOf(1) != 0)
                        {
                            $(searchEngine+'CampaignTemplateStartDateDisplay').innerHTML += 'nd '+namesOfMonths[$('StartDateMonth').value-1]+' '+$('StartDateYear').value;
                        }
                        else
                        {
                            $(searchEngine+'CampaignTemplateStartDateDisplay').innerHTML += 'th '+namesOfMonths[$('StartDateMonth').value-1]+' '+$('StartDateYear').value;
                        }
                        */
                    }
                    else
                    {
                        $(searchEngine+'CampaignTemplateStartDate').value = '';
                        $(searchEngine+'CampaignTemplateStartDateDisplay').innerHTML = 'As soon as sent to search engine (default)';
                    }
                
                break;
                case 'EndDateDefault':
                
                    if(formFields[x].checked)
                    {
                        $(searchEngine+'CampaignTemplateEndDate').value = '';
                        $(searchEngine+'CampaignTemplateEndDateDisplay').innerHTML = 'No end date (default)';
                    }
                    else
                    {
                        var dateFields = $('_unboundEndDate').value.split('-');
                        
                        var date = new Date();
                            date.setUTCDate(dateFields[2]);
                            date.setUTCMonth(dateFields[1]-1);
                            date.setUTCFullYear(dateFields[0]);
                        
                        $(searchEngine+'CampaignTemplateEndDate').value = $('_unboundEndDate').value;
                        $(searchEngine+'CampaignTemplateEndDateDisplay').innerHTML = daysOfWeek[date.getUTCDay()]+', '+date.getUTCDate()+' '+namesOfMonths[date.getUTCMonth()]+', '+date.getUTCFullYear();
                        
                        /*
                        if(!validateDates($('EndDateDay').value, $('EndDateMonth').value, $('EndDateYear').value, 'EndDate'))
                            return false;
                        
                        $(searchEngine+'CampaignTemplateEndDate').value = $('EndDateYear').value+'-'+$('EndDateMonth').value+'-'+$('EndDateDay').value;
                        
                        // user readable version
                        $(searchEngine+'CampaignTemplateEndDateDisplay').innerHTML = $('EndDateDay').value;
                        
                        if($('EndDateDay').value.lastIndexOf(1) == $('EndDateDay').value.length-1)
                        {
                            $(searchEngine+'CampaignTemplateEndDateDisplay').innerHTML += 'st '+namesOfMonths[$('EndDateMonth').value-1]+' '+$('EndDateYear').value;
                        }
                        else if($('EndDateDay').value.lastIndexOf(2) == $('EndDateDay').value.length-1 && $('EndDateDay').value.indexOf(1) != 0)
                        {
                            $(searchEngine+'CampaignTemplateEndDateDisplay').innerHTML += 'nd '+namesOfMonths[$('EndDateMonth').value-1]+' '+$('EndDateYear').value;
                        }
                        else
                        {
                            $(searchEngine+'CampaignTemplateEndDateDisplay').innerHTML += 'th '+namesOfMonths[$('EndDateMonth').value-1]+' '+$('EndDateYear').value;
                        }
                        */
                    }
                
                break;
                case 'EndDateCustom': // probably never get executed, but just incase getInputs() returns different sequence per browser etc.
                
                    if(formFields[x].checked)
                    {
                        var dateFields = $('_unboundEndDate').value.split('-');
                        
                        var date = new Date();
                            date.setUTCDate(dateFields[2]);
                            date.setUTCMonth(dateFields[1]-1);
                            date.setUTCFullYear(dateFields[0]);
                        
                        $(searchEngine+'CampaignTemplateEndDate').value = $('_unboundEndDate').value;
                        $(searchEngine+'CampaignTemplateEndDateDisplay').innerHTML = daysOfWeek[date.getUTCDay()]+', '+date.getUTCDate()+' '+namesOfMonths[date.getUTCMonth()]+', '+date.getUTCFullYear();
                        
                        /*
                        if(!validateDates($('EndDateDay').value, $('EndDateMonth').value, $('EndDateYear').value, 'EndDate'))
                            return false;
                        
                        $(searchEngine+'CampaignTemplateEndDate').value = $('EndDateYear').value+'-'+$('EndDateMonth').value+'-'+$('EndDateDay').value;
                        
                        // user readable version
                        $(searchEngine+'CampaignTemplateEndDateDisplay').innerHTML = $('EndDateDay').value;
                        
                        if($('EndDateDay').value.lastIndexOf(1) == $('EndDateDay').value.length-1)
                        {
                            $(searchEngine+'CampaignTemplateEndDateDisplay').innerHTML += 'st '+namesOfMonths[$('EndDateMonth').value-1]+' '+$('EndDateYear').value;
                        }
                        else if($('EndDateDay').value.lastIndexOf(2) == $('EndDateDay').value.length-1 && $('EndDateDay').value.indexOf(1) != 0)
                        {
                            $(searchEngine+'CampaignTemplateEndDateDisplay').innerHTML += 'nd '+namesOfMonths[$('EndDateMonth').value-1]+' '+$('EndDateYear').value;
                        }
                        else
                        {
                            $(searchEngine+'CampaignTemplateEndDateDisplay').innerHTML += 'th '+namesOfMonths[$('EndDateMonth').value-1]+' '+$('EndDateYear').value;
                        }
                        */                        
                    }
                    else
                    {
                        $(searchEngine+'CampaignTemplateEndDate').value = '';
                        $(searchEngine+'CampaignTemplateEndDateDisplay').innerHTML = 'No end date (default)';
                    }
                
                break;
            }
        }
        
        closeOverlay();
    }
    
    function validateDates( day, month, year, datetype )
    {
        //alert(datetype);
        
        var myDate = new Date();
        
        var errors = new Array();
        
        // validate Day (date)
        if($A($R(1,31,false)).indexOf(day) == -1)
        {
            errors.push(datetype+" Day - Must be a valid date between 1st & 31st depending on month.");
        }
        else if(day > 28 && month == 2)
        {
            errors.push(datetype+" Day - Date in advanced of the 28th not valid for the month of February.");
        }
        else if(day == 31 && $A([1,3,5,7,8,10,12]).indexOf(month) == -1)
        {
            errors.push(datetype+" Day - 31st is not a valid date for the specified month.");
        }
        else if(day < myDate.getDate() && month <= (myDate.getMonth()+1))
        {
            errors.push(datetype+" Day - Must be in advance of todays date.");
        }
        
        if($A($R(1,12,false)).indexOf(month) == -1)
        {
            errors.push(datetype+" Month - Must be a valid month between 1st (January) & 12th (December).");
        }
        
        if($A($R(myDate.getFullYear(),(myDate.getFullYear()+10),false)).indexOf(year) == -1)
        {
            errors.push(datetype+" Year - Must be between the current year ("+myDate.getFullYear()+") and no further than 10yrs in advance.");
        }

        var errorList = $('CampaignDatesErrors').descendants();
            errorList[1].style.display = 'none';
        
        var errorListChildren = $(errorList[1].id).descendants();
        
        for(i=0;i<errorListChildren.length;i++)
            $(errorListChildren[i].id).remove();
            
        for(i=0;i<errors.length;i++)
        {
            var error = document.createElement('LI');
                error.className = 'error';
                error.id = 'error_'+i;
                error.innerHTML = errors[i];

                errorList[1].appendChild(error);

            if(i==(errors.length-1))
                errorList[1].style.display = 'block';
        }
        
        if(errors.length >= 1)
            return false;
            else
            return true;        
    }
    
    function addLocation( type, getchildren, searchEngine )
    {
        if(getchildren == null)
            getchildren = true;
        
        switch(type)
        {
            case 'country':
               
                if($(searchEngine+'CountryAvailable').selectedIndex == -1)
                    return false;
                
                if($(searchEngine+'CountrySelected').options.length == 1 && getchildren)
                {
                    if(confirm("Adding a second Country will remove any Region and/or City targets\r\n\r\nAre you sure ?"))
                    {
                        var newTarget = $(searchEngine+'CountryAvailable').options[$(searchEngine+'CountryAvailable').selectedIndex].text;
                        
                        $(searchEngine+'CountrySelected').options[$(searchEngine+'CountrySelected').options.length] = new Option($(searchEngine+'CountryAvailable').options[$(searchEngine+'CountryAvailable').selectedIndex].text,$(searchEngine+'CountryAvailable').options[$(searchEngine+'CountryAvailable').selectedIndex].value);
                        $(searchEngine+'CountryAvailable').options[$(searchEngine+'CountryAvailable').selectedIndex] = null;
                    
                        if($(searchEngine+'CountrySelected').options.length == 1)
                        {
                            new Ajax.Updater('RegionTargetSelector',site_root+'/aw_campaign_templates/region_target_selector/'+$(searchEngine+'CountrySelected').options[$(searchEngine+'CountrySelected').options.length-1].value, {asynchronous:true, evalScripts:true, requestHeaders:['X-Update', 'RegionTargetSelector']});
                            new Ajax.Updater('CityTargetSelector',site_root+'/aw_campaign_templates/city_target_selector', {asynchronous:true, evalScripts:true, requestHeaders:['X-Update', 'CityTargetSelector']});
                        }
                        else
                        {
                            new Ajax.Updater('RegionTargetSelector',site_root+'/aw_campaign_templates/region_target_selector/', {asynchronous:true, evalScripts:true, requestHeaders:['X-Update', 'RegionTargetSelector']});
                            new Ajax.Updater('CityTargetSelector',site_root+'/aw_campaign_templates/city_target_selector/-1', {asynchronous:true, evalScripts:true, requestHeaders:['X-Update', 'CityTargetSelector']});
                        }
                         $('currentregions').innerHTML = '';
                         $('currentcities').innerHTML = '';
                        if($('currentcountries').innerHTML == '')
                        {
                            $('currentcountries').innerHTML = newTarget;
                        }
                        else
                        {
                            $('currentcountries').innerHTML += ', '+newTarget;
                        }
                        
                    }
                }
                else
                {
                    var newTarget = $(searchEngine+'CountryAvailable').options[$(searchEngine+'CountryAvailable').selectedIndex].text;
                    
                    $(searchEngine+'CountrySelected').options[$(searchEngine+'CountrySelected').options.length] = new Option($(searchEngine+'CountryAvailable').options[$(searchEngine+'CountryAvailable').selectedIndex].text,$(searchEngine+'CountryAvailable').options[$(searchEngine+'CountryAvailable').selectedIndex].value);
                    $(searchEngine+'CountryAvailable').options[$(searchEngine+'CountryAvailable').selectedIndex] = null;
                    
                    if($(searchEngine+'CountrySelected').options.length == 1 && getchildren)
                    {
                        new Ajax.Updater('RegionTargetSelector',site_root+'/aw_campaign_templates/region_target_selector/'+$(searchEngine+'CountrySelected').options[$(searchEngine+'CountrySelected').options.length-1].value, {asynchronous:true, evalScripts:true, requestHeaders:['X-Update', 'RegionTargetSelector']});
                        new Ajax.Updater('CityTargetSelector',site_root+'/aw_campaign_templates/city_target_selector/-1', {asynchronous:true, evalScripts:true, requestHeaders:['X-Update', 'CityTargetSelector']});
                    }
                    
                    $('currentcountries').innerHTML += ', '+newTarget;
                }
            
            break;
            case 'region':
            
                if($(searchEngine+'RegionAvailable').selectedIndex == -1)
                    return false;
                
                if($(searchEngine+'RegionSelected').options.length == 1)
                {
                    if(confirm("Adding a second Region/State will remove any City targets\r\n\r\nAre you sure ?"))
                    {
                        var newTarget = $(searchEngine+'RegionAvailable').options[$(searchEngine+'RegionAvailable').selectedIndex].text;
                        
                        $(searchEngine+'RegionSelected').options[$(searchEngine+'RegionSelected').options.length] = new Option($(searchEngine+'RegionAvailable').options[$(searchEngine+'RegionAvailable').selectedIndex].text,$(searchEngine+'RegionAvailable').options[$(searchEngine+'RegionAvailable').selectedIndex].value);
                        $(searchEngine+'RegionAvailable').options[$(searchEngine+'RegionAvailable').selectedIndex] = null;
                    
                        if($(searchEngine+'RegionSelected').options.length == 1)
                        {
                            new Ajax.Updater('CityTargetSelector',site_root+'/aw_campaign_templates/city_target_selector/'+$(searchEngine+'RegionSelected').options[$(searchEngine+'RegionSelected').options.length-1].value, {asynchronous:true, evalScripts:true, requestHeaders:['X-Update', 'CityTargetSelector']});
                        }
                        else
                        {
                            new Ajax.Updater('CityTargetSelector',site_root+'/aw_campaign_templates/city_target_selector/', {asynchronous:true, evalScripts:true, requestHeaders:['X-Update', 'CityTargetSelector']});
                        }
                        
                        if($('currentregions').innerHTML == '')
                        {
                            $('currentregions').innerHTML = '&raquo; '+newTarget;
                        }
                        else
                        {
                        
                            $('currentregions').innerHTML += ', '+newTarget;
                        }
                    }
                }
                else
                {
                    var newTarget = $(searchEngine+'RegionAvailable').options[$(searchEngine+'RegionAvailable').selectedIndex].text;
                    
                    $(searchEngine+'RegionSelected').options[$(searchEngine+'RegionSelected').options.length] = new Option($(searchEngine+'RegionAvailable').options[$(searchEngine+'RegionAvailable').selectedIndex].text,$(searchEngine+'RegionAvailable').options[$(searchEngine+'RegionAvailable').selectedIndex].value);
                    $(searchEngine+'RegionAvailable').options[$(searchEngine+'RegionAvailable').selectedIndex] = null;
                    
                    if($(searchEngine+'RegionSelected').options.length == 1)
                    {
                        new Ajax.Updater('CityTargetSelector',site_root+'/aw_campaign_templates/city_target_selector/'+$(searchEngine+'RegionSelected').options[$(searchEngine+'RegionSelected').options.length-1].value, {asynchronous:true, evalScripts:true, requestHeaders:['X-Update', 'CityTargetSelector']});
                    }
                    
                    if($('currentregions').innerHTML == '')
                        {
                            $('currentregions').innerHTML = '&raquo; '+newTarget;
                        }
                        else
                        {
                        
                            $('currentregions').innerHTML += ', '+newTarget;
                        }
                }
            
            break;
            case 'city':
            
                if($(searchEngine+'CityAvailable').selectedIndex == -1)
                    return false;
                
                var newTarget = $(searchEngine+'CityAvailable').options[$(searchEngine+'CityAvailable').selectedIndex].text;
                
                $(searchEngine+'CitySelected').options[$(searchEngine+'CitySelected').options.length] = new Option($(searchEngine+'CityAvailable').options[$(searchEngine+'CityAvailable').selectedIndex].text,$(searchEngine+'CityAvailable').options[$(searchEngine+'CityAvailable').selectedIndex].value);
                $(searchEngine+'CityAvailable').options[$(searchEngine+'CityAvailable').selectedIndex] = null;
            
                if($('currentcities').innerHTML == '')
                {
                    $('currentcities').innerHTML = '&raquo; '+newTarget;
                }
                else
                {
                    $('currentcities').innerHTML += ', '+newTarget;
                }
            
            break;
        }
    }
    
    function removeLocation( type, searchEngine )
    {
        var sortingOptions = new Array();
        
        switch(type)
        {
            case 'country':
               
                if($(searchEngine+'CountrySelected').options.length == 0 || !$(searchEngine+'CountrySelected').options[$(searchEngine+'CountrySelected').selectedIndex])
                    return false;
                
                $(searchEngine+'CountryAvailable').options[$(searchEngine+'CountryAvailable').options.length] = new Option($(searchEngine+'CountrySelected').options[$(searchEngine+'CountrySelected').selectedIndex].text,$(searchEngine+'CountrySelected').options[$(searchEngine+'CountrySelected').selectedIndex].value);
                $(searchEngine+'CountrySelected').options[$(searchEngine+'CountrySelected').selectedIndex] = null;
                
                if($(searchEngine+'CountrySelected').options.length == 0)
                {
                    new Ajax.Updater('RegionTargetSelector',site_root+'/aw_campaign_templates/region_target_selector/-1', {asynchronous:true, evalScripts:true, requestHeaders:['X-Update', 'RegionTargetSelector']});
                    new Ajax.Updater('CityTargetSelector',site_root+'/aw_campaign_templates/city_target_selector/-1', {asynchronous:true, evalScripts:true, requestHeaders:['X-Update', 'CityTargetSelector']});
                }
                else if($(searchEngine+'CountrySelected').options.length == 1)
                {
                    new Ajax.Updater('RegionTargetSelector',site_root+'/aw_campaign_templates/region_target_selector/'+$(searchEngine+'CountrySelected').options[$(searchEngine+'CountrySelected').options.length-1].value, {asynchronous:true, evalScripts:true, requestHeaders:['X-Update', 'RegionTargetSelector']});
                    new Ajax.Updater('CityTargetSelector',site_root+'/aw_campaign_templates/city_target_selector/-1', {asynchronous:true, evalScripts:true, requestHeaders:['X-Update', 'CityTargetSelector']});
                }
                
                for(i=0; i<$(searchEngine+'CountrySelected').options.length; i++)
                {
                    if(i==0)
                    {
                        $('currentcountries').innerHTML = $(searchEngine+'CountrySelected').options[i].text;
                    }
                    else
                    {
                        $('currentcountries').innerHTML += ', '+$(searchEngine+'CountrySelected').options[i].text;
                    }
                }
                
                if($(searchEngine+'CountrySelected').options.length == 0)
                {
                    $('currentcountries').innerHTML = '';
                }
                
            
                $('currentregions').innerHTML = '';
                $('currentcities').innerHTML = '';
            
            break;
            case 'region':
            
                if($(searchEngine+'RegionSelected').options.length == 0 || !$(searchEngine+'RegionSelected').options[$(searchEngine+'RegionSelected').selectedIndex])
                    return false;
                
                $(searchEngine+'RegionAvailable').options[$(searchEngine+'RegionAvailable').options.length] = new Option($(searchEngine+'RegionSelected').options[$(searchEngine+'RegionSelected').selectedIndex].text,$(searchEngine+'RegionSelected').options[$(searchEngine+'RegionSelected').selectedIndex].value);
                $(searchEngine+'RegionSelected').options[$(searchEngine+'RegionSelected').selectedIndex] = null;
                
                if($(searchEngine+'RegionSelected').options.length == 0)
                {
                    new Ajax.Updater('CityTargetSelector',site_root+'/aw_campaign_templates/city_target_selector/-1', {asynchronous:true, evalScripts:true, requestHeaders:['X-Update', 'CityTargetSelector']});
                }
                else if($(searchEngine+'RegionSelected').options.length == 1)
                {
                    new Ajax.Updater('CityTargetSelector',site_root+'/aw_campaign_templates/city_target_selector/'+$(searchEngine+'RegionSelected').options[$(searchEngine+'RegionSelected').options.length-1].value, {asynchronous:true, evalScripts:true, requestHeaders:['X-Update', 'CityTargetSelector']});
                }
                
                for(i=0; i<$(searchEngine+'RegionSelected').options.length; i++)
                {
                    if(i==0)
                    {
                        $('currentregions').innerHTML = '&raquo; '+$(searchEngine+'RegionSelected').options[i].text;
                    }
                    else
                    {
                        $('currentregions').innerHTML += ', '+$(searchEngine+'RegionSelected').options[i].text;
                    }
                }
                
                if($(searchEngine+'RegionSelected').options.length == 0)
                    $('currentregions').innerHTML = '';
            
                $('currentcities').innerHTML = '';
            
            break;
            case 'city':
            
                if($(searchEngine+'CitySelected').options.length == 0 || !$(searchEngine+'CitySelected').options[$(searchEngine+'CitySelected').selectedIndex])
                    return false;
                
                $(searchEngine+'CityAvailable').options[$(searchEngine+'CityAvailable').options.length] = new Option($(searchEngine+'CitySelected').options[$(searchEngine+'CitySelected').selectedIndex].text,$(searchEngine+'CitySelected').options[$(searchEngine+'CitySelected').selectedIndex].value);
                $(searchEngine+'CitySelected').options[$(searchEngine+'CitySelected').selectedIndex] = null;
            
                for(i=0; i<$(searchEngine+'CitySelected').options.length; i++)
                {
                    if(i==0)
                    {
                        $('currentcities').innerHTML = '&raquo; '+$(searchEngine+'CitySelected').options[i].text;
                    }
                    else
                    {
                        $('currentcities').innerHTML += ', '+$(searchEngine+'CitySelected').options[i].text;
                    }
                }
            
                if($(searchEngine+'CitySelected').options.length == 0)
                    $('currentcities').innerHTML = '';
            
            break;
        }
    }
    
    function saveCampaignLocations( form, searchEngine )
    {
        var selectedCountries = $(searchEngine+'CountrySelected');
        var selectedRegions = $(searchEngine+'RegionSelected');
        var selectedCities = $(searchEngine+'CitySelected');
        
        if(selectedCountries.options.length == 0)
        {
            $('LocationTargetsErrors').style.display = 'block';
            
            return false;
        }
        else
        {
            $('LocationTargetsErrors').style.display = 'none';
        }

        $('CountryTargets').update();
        
        for(i=0;i<selectedCountries.options.length;i++)
        {
            var countryItem = document.createElement('LI');
                countryItem.id = '';
                countryItem.innerHTML = selectedCountries.options[i].text;
            
            var countryField = document.createElement('INPUT');
                countryField.type = 'hidden';
                countryField.name = 'data[AwCountry][]';
                countryField.value = selectedCountries.options[i].value;
                
                countryItem.appendChild(countryField);
            
            if(selectedRegions != null)
                for(i=0;i<selectedRegions.options.length;i++)
                {
                    if(i==0)
                    {
                        var regionList = document.createElement('UL');
                            regionList.id = 'RegionTargets';
                            
                            countryItem.appendChild(regionList);
                    }
                    
                    var regionItem = document.createElement('LI');
                        regionItem.id = '';
                        regionItem.innerHTML = selectedRegions.options[i].text;
                    
                    var regionField = document.createElement('INPUT');
                        regionField.type = 'hidden';
                        regionField.name = 'data[AwRegion][]';
                        regionField.value = selectedRegions.options[i].value;
                        
                        regionItem.appendChild(regionField);
                        regionList.appendChild(regionItem);
                        
                    if(selectedCities != null)
                        for(i=0;i<selectedCities.options.length;i++)
                        {
                            if(i==0)
                            {
                                var cityList = document.createElement('UL');
                                    cityList.id = 'CityTargets';
                                    
                                    regionItem.appendChild(cityList);
                            }
                            
                            var cityItem = document.createElement('LI');
                                cityItem.id = '';
                                cityItem.innerHTML = selectedCities.options[i].text;
                            
                            var cityField = document.createElement('INPUT');
                                cityField.type = 'hidden';
                                cityField.name = 'data[AwCity][]';
                                cityField.value = selectedCities.options[i].value;
                                
                                cityItem.appendChild(cityField);
                                cityList.appendChild(cityItem);
                        }
                }
               
            $('CountryTargets').appendChild(countryItem);         
        }
        
        //closeOverlay();
        DC.enableInput(false);
    }
    
    function saveCampaignLanguages( form )
    {
        var currentLanguages        = $('LanguageTargets').descendants();
        var selectedLanguages       = new Array();
        var selectedLanguagesValues = new Array();
        
        var formFields = form.getInputs('checkbox');
        
        for(i=0;i<formFields.length;i++)
        {
            if(formFields[i].checked && !formFields[i].disabled)
            {
                selectedLanguages.push(formFields[i]);
                selectedLanguagesValues.push(formFields[i].value);
            }
        }
        
        if(selectedLanguages.length == 0)
        {
            $('LanguageTargetsErrors').style.display = 'block';
            
            return false;
        }
        else
        {
            $('LanguageTargetsErrors').style.display = 'none';
        }
        
        for(i=0;i<currentLanguages.length;i++)
        {
            if(currentLanguages[i].tagName != 'LI')
                continue;
                
            if($A(selectedLanguagesValues).indexOf(currentLanguages[i].id) == -1)
            {
                $(currentLanguages[i].id).remove();
            }
            else
            {
                selectedLanguages.splice(selectedLanguagesValues.indexOf(currentLanguages[i].id),1);
                selectedLanguagesValues.splice(selectedLanguagesValues.indexOf(currentLanguages[i].id),1);
            }
        }
        
        for(i=0;i<selectedLanguages.length;i++)
        {
            var languageItem = document.createElement('LI');
                languageItem.id = selectedLanguages[i].value;
                languageItem.innerHTML = selectedLanguages[i].name;
              
            var languageField = document.createElement('INPUT');
                languageField.type = 'hidden';
                languageField.id = searchEngine+'Language'+selectedLanguages[i].value;
                languageField.name = 'data[AwLanguage][]';
                languageField.value = selectedLanguages[i].value;
                
                languageItem.appendChild(languageField);
                                
                $('LanguageTargets').appendChild(languageItem);
        }
        
        closeOverlay();
    }
    
    function closeBuildCampaign( URI )
    {
        if(confirm("Cancelling out of this screen will lose any unsaved changes to your Campaign\r\n\r\n\Are you sure ?"))
        {
            disableInput(null,null,{opacity:80,color:'white'}); 
            
            new Ajax.Request(site_root+'/websites/session/delete/buildcampaign', {onComplete:function(request){ window.location=URI; }, asynchronous:true, evalScripts:true});
        }
    }
    
    function closeBuildAdgroup( URI )
    {
        if(confirm("Cancelling out of this screen will lose any unsaved changes to your Adgroup\r\n\r\n\Are you sure ?"))
        {
            disableInput(null,null,{opacity:80,color:'white'}); 
            
            new Ajax.Request(site_root+'/websites/session/delete/buildadgroup', {onComplete:function(request){ window.location=URI; }, asynchronous:true, evalScripts:true});
        }
    }
    
    function saveBuildCampaign( URI, redirect )
    {
        disableInput(null, null, {opacity:80,color:'white'});
        
        new Ajax.Request(URI+'/save_campaign/', {onComplete:function(){ if(redirect) { window.location=site_root+'/templates'; }else{ window.location=window.location; } }, asynchronous:true, evalScripts:true, parameters:$('FormBuildCampaign').serialize()});
    }
    
    function closeBuildElement( URI, clearSession )
    {
        if(confirm("Cancelling out of this screen will lose any unsaved changes\r\n\r\n\Are you sure ?"))
        {
            if(clearSession)
            {
                disableInput(null,null,{opacity:80,color:'white'}); 
                
                new Ajax.Request(site_root+'/websites/session/delete/buildcampaign', {onComplete:function(request){ window.location=URI; }, asynchronous:true, evalScripts:true});
            }
            else
            {
                disableInput(null,null,{opacity:80,color:'white'}); 
                
                window.location = URI;
            }
        }
    }
    
    function editAdgroupName()
    {
        if(confirm("Are you sure you wish to change your Adgroup Template name ?\r\n\r\nThis will trigger updates to send to the search engine."))
            $(searchEngine+'AdgroupTemplateName').disabled = false;
    }
    
    function saveAdgroupName( form, searchEngine )
    {
        validated = true;
        validationMessages = new Array();
        
        if($('_unboundName').value.strip() == '')
        {
            validated = false;
            validationMessages.push('Error - You must provide a name for this Adgroup Template');
        }
        
        if($('_unboundNameTemplate').value.strip() == '')
        {
            validated = false;
            validationMessages.push('Error - You must provide a default name for this Adgroup');
        }
        else
        {
            var dynamicFields = $('_unboundNameTemplate').value.match(/(\{[^}]+\})/g);
                
            if(dynamicFields != null)
            {
                for(j=0; j<dynamicFields.length; j++)
                {   
                	if(adgroupNameFields.indexOf('/'+dynamicFields[j]+'/') == -1)
                    {
                        validated = false;
                        validationMessages.push('Error - Unknown Data Field in Default Adgroup name: <strong>'+dynamicFields[j].replace(/(\{|\})/g, '')+'</strong>');
                    }
                }
            }
            else
            {
                validated = false;
                validationMessages.push('Error - Default Adgroup name must contain at least one of Your Websites\' Data Fields.');
            }
        }
        
        if(validated)
        {
            var formFields = form.getInputs('radio');
            
            for(i=0;i<formFields.length;i++)
            {
                if(formFields[i].checked)
                {
                    switch(formFields[i].id)
                    {
                        case 'Prefix':
                            
                            $(searchEngine+'AdgroupTemplateNameType').value = 'prefix';
                            $('AdgroupNameTypePrefixDisplay').style.display = 'block';
                            $('AdgroupNameTypeSuffixDisplay').style.display = 'none';
                            $('AdgroupNameTypeStaticDisplay').style.display = 'none';
                        
                        break;
                        case 'Suffix':
                        
                            $(searchEngine+'AdgroupTemplateNameType').value = 'suffix';
                            $('AdgroupNameTypeSuffixDisplay').style.display = 'block';
                            $('AdgroupNameTypePrefixDisplay').style.display = 'none';
                            $('AdgroupNameTypeStaticDisplay').style.display = 'none';
                        
                        break;
                        case 'Static':
                        
                            $(searchEngine+'AdgroupTemplateNameType').value = 'static';
                            $('AdgroupNameTypeStaticDisplay').style.display = 'block';
                            $('AdgroupNameTypePrefixDisplay').style.display = 'none';
                            $('AdgroupNameTypeSuffixDisplay').style.display = 'none';
                        
                        break;
                    }
                }
            }
            
            $(searchEngine+'AdgroupTemplateName').value = $(searchEngine+'AdgroupTemplateNameDisplay').innerHTML = $('_unboundName').value;
            $(searchEngine+'AdgroupTemplateNameTemplate').value = $(searchEngine+'AdgroupNameStaticDisplay').innerHTML = $('_unboundNameTemplate').value;
            
            $(searchEngine+'AdgroupNamePrefixDisplay').innerHTML = $('_unboundName').value+'_'+$('_unboundNameTemplate').value;
            $(searchEngine+'AdgroupNameSuffixDisplay').innerHTML = $('_unboundNameTemplate').value+'_'+$('_unboundName').value;     
                    
            updateAdgroupNameSamples(searchEngine);
                    
            //closeOverlay();
            DC.enableInput(false);
        }
        else
        {
            var errorList = $('AdgroupNameErrors').descendants();
                errorList[1].style.display = 'none';
        
            var errorListChildren = $(errorList[1].id).descendants();
            
            $(errorList[1].id).update();
                
            //for(i=0;i<errorListChildren.length;i++)
            //   $(errorListChildren[i].id).remove();
                
            for(i=0;i<validationMessages.length;i++)
            {
                var error = document.createElement('LI');
                    error.className = 'error';
                    error.id = 'error_'+i;
                    error.innerHTML = validationMessages[i];
    
                    errorList[1].appendChild(error);
    
                if(i==(validationMessages.length-1))
                    errorList[1].style.display = 'block';
            }
            
            return false;
        }
    }
    
    function saveBuildAdgroup( URI,searchEngine )
    {
        disableInput(null, null, {opacity:80,color:'white'});
        
        new Ajax.Request(site_root+'/'+searchEngine+'_adgroup_templates/save_adgroup/', {onComplete:function(){ window.location=URI; }, asynchronous:true, evalScripts:true, parameters:$('FormBuildAdgroup').serialize()});
    }
    
    function deleteAdgroupKeyword(searchEngine, sender, index )
    {
        if(sender != null)
        {
            if(!sender.index)
                index = sender.getAttribute('index');
                else
                index = sender.index;
        }
        
        if($(searchEngine+'KeywordTemplate'+index+'Status').value == 'enabled')
        {    
            $(searchEngine+'KeywordTemplate'+index+'Status').value = 'disabled';
            $(searchEngine+'KeywordTemplate'+index).className = 'keyword-group-deleted';
            if(sender != null)
                sender.innerHTML = ' - Undo Delete';
                else
                $(searchEngine+'KeywordTemplate'+index+'Delete').innerHTML = ' - Undo Delete';
        }
        else
        {
            $(searchEngine+'KeywordTemplate'+index+'Status').value = 'enabled'
            $(searchEngine+'KeywordTemplate'+index).className = 'keyword-group';
            if(sender != null)
                sender.innerHTML = ' - Delete';
                else
                $(searchEngine+'KeywordTemplate'+index+'Delete').innerHTML = ' - Delete';
        }
    }
    
    function deleteAdgroupLandingPage(searchEngine, sender, index )
    {
        if(sender != null)
        {
            if(!sender.index)
                index = sender.getAttribute('index');
                else
                index = sender.index;
        }
 
        if($('LandingPageTemplate'+index+'Status').value == 'enabled')
        {    
            $('LandingPageTemplate'+index+'Status').value = 'disabled';
            $('LandingPageTemplate'+index).className = 'landing-page-group-deleted';
            if(sender != null)
                sender.innerHTML = ' - Undo Delete';
                else
                $('LandingPageTemplate'+index+'Delete').innerHTML = ' - Undo Delete';
        }
        else
        {
            $('LandingPageTemplate'+index+'Status').value = 'enabled'
            $('LandingPageTemplate'+index).className = 'landing-page-group';
            if(sender != null)
                sender.innerHTML = ' - Delete';
                else
                $('LandingPageTemplate'+index+'Delete').innerHTML = ' - Delete';
        }
    }
    
    function deleteAdgroupTextad(searchEngine, sender, index )
    {
        if(sender != null)
        {
            if(!sender.index)
                index = sender.getAttribute('index');
                else
                index = sender.index;
        }
        
        if($(searchEngine+'TextadTemplate'+index+'Status').value == 'enabled')
        {    
            $(searchEngine+'TextadTemplate'+index+'Status').value = 'disabled';
            $(searchEngine+'TextadTemplate'+index).className = 'textad-wrapper-deleted';
            if(sender != null)
                sender.innerHTML = ' - Undo Delete';
                else
                $(searchEngine+'TextadTemplate'+index+'Delete').innerHTML = ' - Undo Delete';
        }
        else
        {
            $(searchEngine+'TextadTemplate'+index+'Status').value = 'enabled'
            $(searchEngine+'TextadTemplate'+index).className = 'textad-wrapper';
            if(sender != null)
                sender.innerHTML = ' - Delete';
                else
                $(searchEngine+'TextadTemplate'+index+'Delete').innerHTML = ' - Delete';
        }
    }
    
    function saveAdgroupKeyword(searchEngine)
    {
        var keywordFields       = new Array('Text','MatchType','Id');
        var keywordFieldNames   = new Array('text','match_type','id');
        var validationMessages  = new Array();
        var validated           = true;
        
        // check for valid Keyword.text
        if($(searchEngine+'KeywordTemplateText').value.strip() == '')
        {
            validated = false;
            validationMessages.push('Your Keyword Template text can not be blank.');
        }
        else
        {
            var dynamicFields = $(searchEngine+'KeywordTemplateText').value.match(/(\{[^}]+\})/g);
			
            if(dynamicFields != null)
            {
                for(i=0; i<dynamicFields.length; i++)
                {
                    var dField = '/'+dynamicFields[i]+'/';
                    var dField_to_validate = '/'+dynamicFields[i].replace('.broadmodified', '')+'/';
                    if(previewFields.join().indexOf(dField_to_validate) == -1)
                    {
                        validated = false;
                        validationMessages.push('Error - Unknown Data Field in Keyword Text: <strong>'+dynamicFields[i].replace(/(\{|\})/g, '')+'</strong>');
                    }
                     
                }
            }
            
            if(validationMessages.length > 0)
            {
                validationMessages.push('Please make sure you only use Data Fields selected from Your Website.');
                validationMessages.push('If you do not see the Data Field you would like, return to the `Your Website` Adgroup element and make the neccessary changes');
            }
        }
        
        if(!validated)
        {
            var errorList = $(searchEngine+'KeywordTemplateErrors').descendants();
                errorList[0].style.display = 'none';
        
            var errorListChildren = $(errorList[0].id).descendants();
            
            $(errorList[0].id).update();
            
            for(i=0;i<validationMessages.length;i++)
            {
                var error = document.createElement('LI');
                    error.className = 'error';
                    error.id = 'error_'+i;
                    error.innerHTML = validationMessages[i];

                    errorList[0].appendChild(error);

            }
            
            errorList[0].style.display = 'block';

            return false;
        }

        keywordIndex = $(searchEngine+'KeywordTemplateIndex').value;

        // check if keyword parent container exists
        if(!$(searchEngine+'KeywordTemplate'+keywordIndex))
        {
            // New UL container for Keyword
            var newKeywordContainer             = document.createElement('ul');
                newKeywordContainer.id          = searchEngine+'KeywordTemplate'+keywordIndex;
                newKeywordContainer.className   = 'keyword-group';
                
            // New LI for Keyword
            var newKeyword = document.createElement('li');
            
            // New link for editing Keyword
            var newKeywordLink           = document.createElement('a');
                newKeywordLink.href      = '#';
                newKeywordLink.index     = keywordIndex;
                newKeywordLink.onclick   = function() { buildCampaignPopup(720,240,'BuildAdgroupKeyword',site_root+'/'+searchEngine+'_keyword_templates/ajax_keyword/','Ysm',this); }
                newKeywordLink.innerHTML = ' - edit now';
            
            // New link for deleting Keyword
            var newKeywordLinkDelete             = document.createElement('a');
                newKeywordLinkDelete.id          = searchEngine+'KeywordTemplate'+keywordIndex+'Delete';
                newKeywordLinkDelete.index       = keywordIndex;
                newKeywordLinkDelete.href        = '#';
                newKeywordLinkDelete.innerHTML   = ' - delete';
                newKeywordLinkDelete.onclick     = function() { deleteAdgroupKeyword('Aw', this, null); };
            
            // New image for expand/collapse of Keyword Samples
            var newKeywordImage         = new Image();
                newKeywordImage.id      = searchEngine+'KeywordTemplate'+keywordIndex+'Icon';
                newKeywordImage.src     = site_root+'/img/plus_ico_2.gif';
                newKeywordImage.style.marginRight = '10px';
                newKeywordImage.style.verticalAlign = 'middle';
            
            // New link for expand/collapse
            var newKeywordLink2           = document.createElement('a');
                newKeywordLink2.href      = '#';
                newKeywordLink2.index     = keywordIndex;
                newKeywordLink2.onclick   = function() { showhideSamples('keyword', null, null,this,null,searchEngine); }
                newKeywordLink2.appendChild(newKeywordImage);
            
            // New Keyword display
            var newKeywordText              = document.createElement('span');
                newKeywordText.id           = searchEngine+'KeywordTemplate'+keywordIndex+'Display';
                newKeywordText.innerHTML    = $(searchEngine+'KeywordTemplateText').value+' ('+$(searchEngine+'KeywordTemplateMatchType').value+')';
            
                // append DOM elements
                newKeyword.appendChild(newKeywordLink2);
                newKeyword.appendChild(newKeywordText);
                newKeyword.appendChild(newKeywordLink);
                newKeyword.appendChild(newKeywordLinkDelete);
              
                
            // New UL container for Keyword samples          
            var newKeywordSamplesContainer              = document.createElement('ul');
                newKeywordSamplesContainer.id           = searchEngine+'KeywordTemplate'+keywordIndex+'Samples';
                newKeywordSamplesContainer.className    = 'keyword-sample-group';            
                    
            // New Keyword input fields
            for(i=0;i<keywordFields.length;i++)
            {
                var newKeywordField         = document.createElement('input');
                    newKeywordField.type    = 'hidden';
                    newKeywordField.name    = 'data['+searchEngine+'KeywordTemplate]['+keywordIndex+']['+keywordFieldNames[i]+']';
                    newKeywordField.id      = searchEngine+'KeywordTemplate'+keywordIndex+keywordFields[i];
                    newKeywordField.value   = $(searchEngine+'KeywordTemplate'+keywordFields[i]).value;
                    
                    newKeyword.appendChild(newKeywordField);
            }
            
            // New Keyword status field
            var newKeywordField         = document.createElement('input');
                newKeywordField.type    = 'hidden';
                newKeywordField.name    = 'data['+searchEngine+'KeywordTemplate]['+keywordIndex+'][status]';
                newKeywordField.id      = searchEngine+'KeywordTemplate'+keywordIndex+'Status';
                newKeywordField.value   = 'enabled'
                
                newKeyword.appendChild(newKeywordField);
                
            
         
            
            // append DOM elements
            newKeywordContainer.appendChild(newKeyword);
            newKeywordContainer.appendChild(newKeywordSamplesContainer);
             
            $(searchEngine+'KeywordTemplates').appendChild(newKeywordContainer);
         
            
        }
        else
        {
            // Update existing Keyword input fields
            $(searchEngine+'KeywordTemplate'+keywordIndex+'Display').innerHTML = $(searchEngine+'KeywordTemplateText').value+' ('+$(searchEngine+'KeywordTemplateMatchType').value+')';
            $(searchEngine+'KeywordTemplate'+keywordIndex+'Text').value        = $(searchEngine+'KeywordTemplateText').value;
            $(searchEngine+'KeywordTemplate'+keywordIndex+'MatchType').value   = $(searchEngine+'KeywordTemplateMatchType').value;
            $(searchEngine+'KeywordTemplate'+keywordIndex+'Id').value          = $(searchEngine+'KeywordTemplateId').value;
            $(searchEngine+'KeywordTemplate'+keywordIndex+'Samples').update();
            
            // refresh Keyword samples
            showhideSamples('keyword', $(searchEngine+'KeywordTemplate'+keywordIndex+'Samples'), $(searchEngine+'KeywordTemplate'+keywordIndex+'Display'), null,null,searchEngine);
            
            if($(searchEngine+'KeywordTemplate'+keywordIndex+'Status').value == 'disabled')
                deleteAdgroupKeyword(null, keywordIndex);
        }
        
        // adjust CSS heights
        //if($(searchEngine+'KeywordTemplates').scrollHeight < $(searchEngine+'TextadTemplates').scrollHeight)
        //    $(searchEngine+'KeywordTemplates').setStyle({height:$(searchEngine+'TextadTemplates').scrollHeight+'px'});
        
        //if($(searchEngine+'KeywordTemplates').scrollHeight > $(searchEngine+'TextadTemplates').scrollHeight)
        //    $(searchEngine+'TextadTemplates').setStyle({height:$(searchEngine+'KeywordTemplates').scrollHeight+'px'});
        
        //closeOverlay();
        DC.enableInput(false);
    }
    
    function saveAdgroupTextad(searchEngine)
    {
        var textadFields = new Array('Headline','HeadlineTransform','Line1','Line1Transform','Line2','Line2Transform','DisplayUrl','DisplayUrlTransform','Id');
        var textadFieldNames = new Array('headline','headline_transform','line1','line1_transform','line2','line2_transform','display_url','display_url_transform','id');
        
        var validationMessages = new Array();
        var validated = true;
        var validatedFallback = true;
        
        // check for valid TextAd data
        if($(searchEngine+'TextadTemplateHeadline').value.strip() == '' || $(searchEngine+'TextadTemplateLine1').value.strip() == '' || (searchEngine =='Aw' && $(searchEngine+'TextadTemplateLine2').value.strip() == '')|| $(searchEngine+'TextadTemplateDisplayUrl').value.strip() == '')
        {
        	
            validated = false;
            validationMessages.push('Your TextAd Master Template can not be blank. Please ensure ALL fields have been entered.');
        }
        else
        {
            for(i=0; i<(textadInputFields = $A(['Headline','Line1','Line2','DisplayUrl'])).length; i++)
            {
                if(!$(searchEngine+'TextadTemplate'+textadInputFields[i]))
                	continue
            	
            	var dynamicFields = $(searchEngine+'TextadTemplate'+textadInputFields[i]).value.match(/(\{[^}]+\})/g);
                
                if(dynamicFields != null)
                {
                    for(j=0; j<dynamicFields.length; j++)
                    {
                        dynamicFields[j] = dynamicFields[j].replace('.nodecimals','');
                    	
                    	if(previewFields.join().indexOf('/'+dynamicFields[j]+'/') == -1)
                        {
                            validated = false;
                            validationMessages.push('Error - Unknown Data Field in TextAd '+textadFields[i]+': <strong>'+dynamicFields[j].replace(/(\{|\})/g, '')+'</strong>');
                        }
                    }
                }
            }
            
            if(validationMessages.length > 0)
            {
                validationMessages.push('Please make sure you only use Data Fields selected from Your Website.');
                validationMessages.push('If you do not see the Data Field you would like, return to the `Your Website` Adgroup element and make the neccessary changes');
            }
            
            for(i=0; i<(textadInputFields = $A(['Headline','Line1','Line2','DisplayUrl'])).length; i++)
            {
                if(!$(searchEngine+'TextadTemplateFallback'+textadInputFields[i]))
                	continue;
            	
            	var dynamicFields = $(searchEngine+'TextadTemplateFallback'+textadInputFields[i]).value.match(/(\{[^}]+\})/g);
                
                if(dynamicFields != null)
                {
                    validated = false;
                    validatedFallback = false;
                    validationMessages.push('Error - Data Fields found in TextAd Fallback '+textadInputFields[i]+': <strong>'+dynamicFields.toString()+'</strong>');
                }
            }
                        
            if(!validatedFallback)
            {
                validationMessages.push('Fallback Templates do not allow Data Fields to be used.');
            }
        }
        
        if(!validated)
        {
            var errorList = $(searchEngine+'TextadTemplateErrors').descendants();
                errorList[0].style.display = 'none';
        
            var errorListChildren = $(errorList[0].id).descendants();
            
            $(errorList[0].id).update();
            
            for(i=0;i<validationMessages.length;i++)
            {
                var error = document.createElement('LI');
                    error.className = 'error';
                    error.id = 'error_'+i;
                    error.innerHTML = validationMessages[i];

                    errorList[0].appendChild(error);

            }
            
            errorList[0].style.display = 'block';

            return false;
        }
        
        textadIndex = $(searchEngine+'TextadTemplateIndex').value;
        
        // check if keyword parent container exists
        if(!$(searchEngine+'TextadTemplate'+textadIndex))
        {
            /* 
             * <div:textad_wrapper>
             *  <div:textad_options><!-- holds links to edit, expand/collapse --></div>
             *  <div:textad_display>
             *      <div:textad_preview><!-- holds standard preview of template and fallback --></div>
             *      <div:textad_samples><!-- holds dynamic previews --></div>
             *  </div>
             * </div>
             */
             
            // New DIV container for TextAd
            var newTextadContainer              = document.createElement('div');
                newTextadContainer.id           = searchEngine+'TextadTemplate'+textadIndex;
                newTextadContainer.className    = 'textad-wrapper';

            // New DIV container for TextAd options
            var newTextadOptions                = document.createElement('div');
                newTextadOptions.id             = searchEngine+'TextadTemplate'+textadIndex+'Options';
                newTextadOptions.className      = 'textad-options';

            var newTextadImage                      = new Image();
                newTextadImage.id                   = searchEngine+'TextadTemplate'+textadIndex+'Icon';
                newTextadImage.src                  = site_root+'/img/plus_ico_2.gif';
                newTextadImage.index                = textadIndex;
                newTextadImage.style.verticalAlign  = 'middle';
                newTextadImage.style.marginRight    = '10px';
                newTextadImage.style.cursor         = 'hand';
                newTextadImage.style.cursor         = 'pointer';
                newTextadImage.onclick      = function() { showhideSamples('textad', null, null, this, null,searchEngine); };

            // New link for editing TextAd
            var newTextadLink              = document.createElement('a');
                newTextadLink.id           = 'EditTextad'+textadIndex;
                newTextadLink.index        = textadIndex;
                newTextadLink.href         = '#';
                newTextadLink.innerHTML    = 'Edit Now';
                newTextadLink.name         = searchEngine+'TextadTemplateTop';
                newTextadLink.onclick      = function() { buildCampaignPopup(800, 350, 'BuildAdgroupTextad', site_root+'/'+searchEngine+'_textad_templates/ajax_textad/', searchEngine,this); };

            // New link for deleting TextAd
            var newTextadLinkDelete             = document.createElement('a');
                newTextadLinkDelete.id          = searchEngine+'TextadTemplate'+textadIndex+'Delete';
                newTextadLinkDelete.index       = textadIndex;
                newTextadLinkDelete.href        = '#';
                newTextadLinkDelete.innerHTML   = ' - Delete';
                newTextadLinkDelete.onclick     = function() { deleteAdgroupTextad(this, null); };

                // append DOM elements
                //newTextadOptions.appendChild(newTextadImage);
                
                newParagraph = document.createElement('p');
                newParagraph.appendChild(newTextadImage);
                newParagraph.appendChild(newTextadLink);
                newParagraph.appendChild(newTextadLinkDelete);
                
                newTextadOptions.appendChild(newParagraph);
                
                //newTextadOptions.appendChild(newTextadLink);
                //newTextadOptions.appendChild(newTextadLinkDelete);

            // New DIV container for TextAd previews & samples
            var newTextadDisplayContainer           = document.createElement('div');
                newTextadDisplayContainer.id        = searchEngine+'TextadTemplate'+textadIndex+'Display';
                newTextadDisplayContainer.className = 'textad-display';
                
            // New DIV container for TextAd template previews
            var newTextadPreviewContainer           = document.createElement('div');
                newTextadPreviewContainer.id        = searchEngine+'TextadTemplate'+textadIndex+'Previews';
                newTextadPreviewContainer.className = 'textad-preview';

            // New DIV container for TextAd master template preview
            var newTextadPreview            = document.createElement('div');
                newTextadPreview.className  = 'googletextad';
                newTextadPreview.id         = searchEngine+'TextadTemplate'+textadIndex+'Preview';
                
            // New DIV container for TextAd fallback template preview
            var newTextadFallbackPreview            = document.createElement('div');
                newTextadFallbackPreview.className  = 'googletextad';
                newTextadFallbackPreview.id         = searchEngine+'TextadTemplateFallback'+textadIndex+'Preview';

            // New DIV container for TextAd live samples
            var newTextadSamplesContainer           = document.createElement('div');
                newTextadSamplesContainer.id        = searchEngine+'TextadTemplate'+textadIndex+'Samples';
                newTextadSamplesContainer.className = 'textad-samples';
           
            // New Title preview display
            var newTextadPreviewField           = document.createElement('span');
                newTextadPreviewField.id        = searchEngine+'TextadTemplate'+textadIndex+'TitlePreview'
                newTextadPreviewField.className = 'title';
                newTextadPreviewField.innerHTML = 'Master Template';
            
                // append DOM elements
                newTextadPreview.appendChild(newTextadPreviewField);
            
            // New Title preview display
            var newTextadPreviewField           = document.createElement('span');
                newTextadPreviewField.id        = searchEngine+'TextadTemplate'+textadIndex+'TitlePreview'
                newTextadPreviewField.className = 'title';
                newTextadPreviewField.innerHTML = 'Fallback Template';
            
                // append DOM elements
                newTextadFallbackPreview.appendChild(newTextadPreviewField);
            
            // New TextAd input fields
            for(i=0;i<textadFields.length;i++)
            {
                if(!$(searchEngine+'TextadTemplate'+textadFields[i]))
                	continue;
            	
            	// check if processing TextAd.headline
                if(textadFields[i] == 'Headline')
                {
                    // New Headline preview display
                    var newTextadPreviewField           = document.createElement('span');
                        newTextadPreviewField.id        = searchEngine+'TextadTemplate'+textadIndex+'HeadlinePreview'
                        newTextadPreviewField.className = 'headline';
                        newTextadPreviewField.innerHTML = $(searchEngine+'TextadTemplateHeadline').value;
                        
                        // append DOM elements
                        newTextadPreview.appendChild(newTextadPreviewField);
                        newTextadPreview.appendChild(document.createElement('br'));
                        
                    // New Headline fallback preview display
                    var newTextadFallbackPreviewField           = document.createElement('span');
                        newTextadFallbackPreviewField.id        = searchEngine+'TextadTemplateFallback'+textadIndex+'HeadlinePreview'
                        newTextadFallbackPreviewField.className = 'headline';
                        newTextadFallbackPreviewField.innerHTML = $(searchEngine+'TextadTemplateFallbackHeadline').value;
                        
                        // append DOM elements
                        newTextadFallbackPreview.appendChild(newTextadFallbackPreviewField);
                        newTextadFallbackPreview.appendChild(document.createElement('br'));
                }
                // check if processing TextAd.display_url
                else if(textadFields[i] == 'DisplayUrl')
                {
                    // New DisplayUrl preview display
                    var newTextadPreviewField           = document.createElement('span');
                        newTextadPreviewField.id        = searchEngine+'TextadTemplate'+textadIndex+'DisplayUrlPreview'
                        newTextadPreviewField.className = 'display_url';
                        newTextadPreviewField.innerHTML = $(searchEngine+'TextadTemplateDisplayUrl').value;
                        
                        // append DOM elements
                        newTextadPreview.appendChild(newTextadPreviewField);
                        
                    // New DisplayUrl fallback preview display
                    var newTextadFallbackPreviewField           = document.createElement('span');
                        newTextadFallbackPreviewField.id        = searchEngine+'TextadTemplateFallback'+textadIndex+'DisplayUrlPreview'
                        newTextadFallbackPreviewField.className = 'display_url';
                        newTextadFallbackPreviewField.innerHTML = $(searchEngine+'TextadTemplateFallbackDisplayUrl').value;
                        
                        // append DOM elements
                        newTextadFallbackPreview.appendChild(newTextadFallbackPreviewField);
                }
                // check we arent processing a transformation or id field
                else if(textadFields[i].indexOf('Transform') == -1 && textadFields[i].indexOf('Id') == -1)
                {
                    // New preview display
                    var newTextadPreviewField           = document.createElement('span');
                        newTextadPreviewField.id        = searchEngine+'TextadTemplate'+textadIndex+textadFields[i]+'Preview'
                        newTextadPreviewField.innerHTML = $(searchEngine+'TextadTemplate'+textadFields[i]).value;
                        
                        // append DOM elements
                        newTextadPreview.appendChild(newTextadPreviewField);
                        newTextadPreview.appendChild(document.createElement('br'));
                        
                    // New fallback preview display
                    var newTextadFallbackPreviewField           = document.createElement('span');
                        newTextadFallbackPreviewField.id        = searchEngine+'TextadTemplateFallback'+textadIndex+textadFields[i]+'Preview'
                        newTextadFallbackPreviewField.innerHTML = $(searchEngine+'TextadTemplateFallback'+textadFields[i]).value;
                        
                        // append DOM elements
                        newTextadFallbackPreview.appendChild(newTextadFallbackPreviewField);
                        newTextadFallbackPreview.appendChild(document.createElement('br'));
                }
                
                // New input field
                var newTextadField         = document.createElement('input');
                    newTextadField.type    = 'hidden';
                    newTextadField.name    = 'data['+searchEngine+'TextadTemplate]['+textadIndex+']['+searchEngine+'TextadTemplate]['+textadFieldNames[i]+']';
                    newTextadField.id      = searchEngine+'TextadTemplate'+textadIndex+textadFields[i];
                    newTextadField.value   = $(searchEngine+'TextadTemplate'+textadFields[i]).value;
                    
                    // append DOM elements
                    newTextadContainer.appendChild(newTextadField);
                    
                // New input fallback field
                var newTextadField         = document.createElement('input');
                    newTextadField.type    = 'hidden';
                    newTextadField.name    = 'data['+searchEngine+'TextadTemplate]['+textadIndex+']['+searchEngine+'TextadTemplateFallback]['+textadFieldNames[i]+']';
                    newTextadField.id      = searchEngine+'TextadTemplateFallback'+textadIndex+textadFields[i];
                    newTextadField.value   = $(searchEngine+'TextadTemplateFallback'+textadFields[i]).value;
                
                    // append DOM elements
                    newTextadContainer.appendChild(newTextadField);
                
                // New input status field
                var newTextadField         = document.createElement('input');
                    newTextadField.type    = 'hidden';
                    newTextadField.name    = 'data['+searchEngine+'TextadTemplate]['+textadIndex+']['+searchEngine+'TextadTemplate][status]';
                    newTextadField.id      = searchEngine+'TextadTemplate'+textadIndex+'Status';
                    newTextadField.value   = 'enabled';
                    
                    // append DOM elements
                    newTextadContainer.appendChild(newTextadField);
            }
            
            // keyword insertion
            var newTextadField          = document.createElement('input');
                newTextadField.type     = 'hidden';
                newTextadField.name     = 'data['+searchEngine+'TextadTemplate]['+textadIndex+']['+searchEngine+'TextadTemplate][headline_keyword]';
                newTextadField.id       = searchEngine+'TextadTemplate'+textadIndex+'HeadlineKeyword';
                newTextadField.value    = $(searchEngine+'TextadTemplateHeadlineKeyword').checked ? 1 : 0;
            
                // append DOM elements
                newTextadContainer.appendChild(newTextadField);
            
            // keyword insertion
            var newTextadField          = document.createElement('input');
                newTextadField.type     = 'hidden';
                newTextadField.name     = 'data['+searchEngine+'TextadTemplate]['+textadIndex+']['+searchEngine+'TextadTemplateFallback][headline_keyword]';
                newTextadField.id       = searchEngine+'TextadTemplateFallback'+textadIndex+'HeadlineKeyword';
                newTextadField.value    = $(searchEngine+'TextadTemplateFallbackHeadlineKeyword').checked ? 1 : 0;
                
                // append DOM elements
                newTextadContainer.appendChild(newTextadField);
            
            // resolving overlap
            var domBreak = document.createElement('br');
                domBreak.style.clear = 'both';
            
            // append DOM elements
            newTextadPreviewContainer.appendChild(newTextadPreview);
            newTextadPreviewContainer.appendChild(newTextadFallbackPreview);
                        
            newTextadDisplayContainer.appendChild(newTextadPreviewContainer);
            
            clearance = document.createElement('div');
            clearance.className = 'clearance';
            
            newTextadDisplayContainer.appendChild(clearance);
            
            newTextadDisplayContainer.appendChild(newTextadSamplesContainer);
            
            clearance = document.createElement('div');
            clearance.className = 'clearance';
            
            newTextadDisplayContainer.appendChild(clearance);
            
            newTextadContainer.appendChild(newTextadOptions);
            newTextadContainer.appendChild(newTextadDisplayContainer);
            
            newTextadContainer.appendChild(document.createElement('br'));
                        
            newTextadContainer.appendChild(domBreak);
                        
            $(searchEngine+'TextadTemplates').appendChild(newTextadContainer);
            
            // adjust CSS floating                   
            $(newTextadPreview.id).setStyle({cssFloat:'left'});
            $(newTextadFallbackPreview.id).setStyle({cssFloat:'left'});
        }
        else
        {
            // Upate existing TextAd input fields
            for(i=0;i<textadFields.length;i++)
            {
                if(!$(searchEngine+'TextadTemplate'+textadFields[i]))
                	continue;
            	
            	if(textadFields[i] == 'Headline')
                {
                    if($(searchEngine+'TextadTemplateHeadlineKeyword').checked)
                    {
                        $(searchEngine+'TextadTemplate'+textadIndex+'HeadlinePreview').innerHTML = '{KeyWord: '+$(searchEngine+'TextadTemplateHeadline').value+' }';
                    }
                    else
                    {
                        $(searchEngine+'TextadTemplate'+textadIndex+'HeadlinePreview').innerHTML = $(searchEngine+'TextadTemplateHeadline').value;
                    }
                    
                    if($(searchEngine+'TextadTemplateFallbackHeadlineKeyword').checked)
                    {
                        $(searchEngine+'TextadTemplateFallback'+textadIndex+'HeadlinePreview').innerHTML   = '{KeyWord: '+$(searchEngine+'TextadTemplateFallbackHeadline').value+' }';
                    }
                    else
                    {
                        $(searchEngine+'TextadTemplateFallback'+textadIndex+'HeadlinePreview').innerHTML   = $(searchEngine+'TextadTemplateFallbackHeadline').value;
                    }
                }
                else if(textadFields[i] == 'DisplayUrl')
                {
                    $(searchEngine+'TextadTemplate'+textadIndex+'DisplayUrlPreview').innerHTML         = $(searchEngine+'TextadTemplateDisplayUrl').value;
                    $(searchEngine+'TextadTemplateFallback'+textadIndex+'DisplayUrlPreview').innerHTML = $(searchEngine+'TextadTemplateFallbackDisplayUrl').value;
                }
                else if(textadFields[i].indexOf('Transform') == -1 && textadFields[i].indexOf('Id') == -1 && textadFields[i].indexOf('Keyword') == -1)
                {
                    $(searchEngine+'TextadTemplate'+textadIndex+textadFields[i]+'Preview').innerHTML           = $(searchEngine+'TextadTemplate'+textadFields[i]).value;
                    $(searchEngine+'TextadTemplateFallback'+textadIndex+textadFields[i]+'Preview').innerHTML   = $(searchEngine+'TextadTemplateFallback'+textadFields[i]).value;
                }
                
                $(searchEngine+'TextadTemplate'+textadIndex+textadFields[i]).value          = $(searchEngine+'TextadTemplate'+textadFields[i]).value;
                $(searchEngine+'TextadTemplateFallback'+textadIndex+textadFields[i]).value  = $(searchEngine+'TextadTemplateFallback'+textadFields[i]).value;
            }
            
            $(searchEngine+'TextadTemplate'+textadIndex+'HeadlineKeyword').value           = $(searchEngine+'TextadTemplateHeadlineKeyword').checked ? 1 : 0;
            $(searchEngine+'TextadTemplateFallback'+textadIndex+'HeadlineKeyword').value   = $(searchEngine+'TextadTemplateFallbackHeadlineKeyword').checked ? 1 : 0;
            
            // deleteAdgroupTextad is called with incorrect paramters, causes editing of disabled textads to fail
            //if($(searchEngine+'TextadTemplate'+textadIndex+'Status').value == 'disabled')
            //    deleteAdgroupTextad(null, textadIndex);
            
            $(searchEngine+'TextadTemplate'+textadIndex+'Samples').update();
        }
        
        // adjust CSS heights
        //if($(searchEngine+'KeywordTemplates').scrollHeight < $(searchEngine+'TextadTemplates').scrollHeight)
        //    $(searchEngine+'KeywordTemplates').setStyle({height:$(searchEngine+'TextadTemplates').scrollHeight+'px'});
        
        //if($(searchEngine+'KeywordTemplates').scrollHeight > $(searchEngine+'TextadTemplates').scrollHeight)
        //    $(searchEngine+'TextadTemplates').setStyle({height:$(searchEngine+'KeywordTemplates').scrollHeight+'px'});
         
        showhideSamples('textad', $(searchEngine+'TextadTemplate'+textadIndex+'Samples'), null,null, textadIndex,searchEngine);
         
        //closeOverlay();
        DC.enableInput(false);
    }
    
    var tagArray = new Array();
    
    function saveAdgroupLandingPage(searchEngine)
    {
        var landingPageFields       = new Array('SourceId');
        var landingPageFieldNames   = new Array('source_id');
        
        var validationMessages  = new Array();
        var validated           = true;
        
        landingPageIndex = $('LandingPageTemplateIndex').value;

        // check if Landing Page parent container exists
        if(!$('LandingPageTemplate'+landingPageIndex))
        {
            // New UL container for Landing Page
            var newLandingPageContainer             = document.createElement('ul');
                newLandingPageContainer.id          = 'LandingPageTemplate'+landingPageIndex;
                newLandingPageContainer.className   = 'landing-page-group';
                
            // New LI for Keyword
            var newLandingPage = document.createElement('li');
            
            // New link for editing Landing Page
            var newLandingPageLink           = document.createElement('a');
                newLandingPageLink.href      = '#';
                newLandingPageLink.index     = landingPageIndex;
                newLandingPageLink.onclick   = function() { buildCampaignPopup(800,600,'BuildAdgroupLandingPage',site_root+'/landing_page_templates/ajax_landing_page/','Aw',this); }
                newLandingPageLink.innerHTML = ' Edit now';
            
            // New link for deleting Landing Page
            var newLandingPageLinkDelete             = document.createElement('a');
                newLandingPageLinkDelete.id          = 'LandingPageTemplate'+landingPageIndex+'Delete';
                newLandingPageLinkDelete.index       = landingPageIndex;
                newLandingPageLinkDelete.href        = '#';
                newLandingPageLinkDelete.innerHTML   = ' - Delete';
                newLandingPageLinkDelete.onclick     = function() { deleteAdgroupLandingPage('Aw', this, null); };
            
            // New link for expand/collapse
            var newLandingPageLink2           = document.createElement('a');
                newLandingPageLink2.href      = '#';
                newLandingPageLink2.index     = landingPageIndex;
                newLandingPageLink2.onclick   = function() { showhideSamples('landing_page', null, null,this,null,searchEngine); }
            
            // New Landing Page display
			var newLandingPageText              = document.createElement('span');
                newLandingPageText.id           = 'LandingPageTemplate'+landingPageIndex+'Display';
                newLandingPageText.innerHTML    = $('LandingPageTemplateSourceId').options[$('LandingPageTemplateSourceId').selectedIndex].text;;
            
                // append DOM elements
                newLandingPage.appendChild(newLandingPageLink2);
                newLandingPage.appendChild(newLandingPageText);
                newLandingPage.appendChild(newLandingPageLink);
                newLandingPage.appendChild(newLandingPageLinkDelete);           
                    
            // New Landing Page input fields
            for(i=0;i<landingPageFields.length;i++)
            {            	
                var newLandingPageField         = document.createElement('input');
                    newLandingPageField.type    = 'hidden';
                    newLandingPageField.name    = 'data[LandingPageTemplate]['+landingPageIndex+']['+landingPageFieldNames[i]+']';
                    newLandingPageField.id      = 'LandingPageTemplate'+landingPageIndex+landingPageFields[i];
                    newLandingPageField.value   = $('LandingPageTemplate'+landingPageFields[i]).value;
                    
                    newLandingPage.appendChild(newLandingPageField);
            }
            
            tagArray.length = 0;

			getElementsByClassName( "tag", $('source_'+$('LandingPageTemplateSourceId').options[$('LandingPageTemplateSourceId').selectedIndex].value));
			
			tag = "---\n";
			
			// New Landing Page Tag input fields
			for(i=0;i<tagArray.length;i++)
            {              	       	
                if(tagArray[i].name == 'DestinationUrlCustom') continue;
                
                if(tagArray[i].name == 'DestinationUrl' && tagArray[i].value == 'custom'){ 
                    
                    tag += "  "+tagArray[i].name+": "+$('customurl_'+$('LandingPageTemplateSourceId').options[$('LandingPageTemplateSourceId').selectedIndex].value).value+"\n";
                }
                else if(tagArray[i].name != 'DestinationUrl')
                {
                    if(tagArray[i].value != "" && tagArray[i].name != 'Items'){
                    	tag += "  "+tagArray[i].name+": '"+tagArray[i].value+"'\n";
                    }else if(tagArray[i].name == 'Items'){
                    	tag += "  "+tagArray[i].name+":\n"+tagArray[i].value+"\n";
                    }else{    
                    	tag += "  "+tagArray[i].name+": "+tagArray[i].value+"\n";
                    }
                }                            
                
            }
            var newLandingPageField         = document.createElement('input');
                newLandingPageField.type    = 'hidden';
                newLandingPageField.name    = 'data[LandingPageTemplate]['+landingPageIndex+'][tags]';
                newLandingPageField.id      = 'LandingPageTemplate'+landingPageIndex+'Tags';
                newLandingPageField.value   = tag;
                
                newLandingPage.appendChild(newLandingPageField);
            
            //-----------------------
            
            source_id = $('LandingPageTemplateSourceId').value;
            
            childArray.length = 0;

			getElementsByClassName( "child", $('source_'+$('LandingPageTemplateSourceId').options[$('LandingPageTemplateSourceId').selectedIndex].value));

            var select_list = new Array();
            
            for(j = 0; j < childArray.length; j++)
            {              	       	
                selected = new Array();
                
	            ob = $('LandingPageTemplate'+source_id+'Child'+j);
	            
	            if(!ob){
	            	//alert('LandingPageTemplate'+source_id+'Child'+j);
	            	continue;
	            }
	            
	            for (var i = 0; i < ob.options.length; i++) 
	            	if (ob.options[i].selected) 
	            		selected.push(ob.options[i].text);
	            
	            if(selected.length > 0){
	            	select_list += $('LandingPageTemplate'+source_id+'Parent').options[j].text+"||"+selected.join("||")+";";
	            }else{
	            	select_list += $('LandingPageTemplate'+source_id+'Parent').options[j].text+";";
	            }
            }
            
            var newLandingPageField         = document.createElement('input');
                newLandingPageField.type    = 'hidden';
                newLandingPageField.name    = 'data[LandingPageTemplate]['+landingPageIndex+'][selected_list]';;
                newLandingPageField.id      = 'LandingPageTemplate'+landingPageIndex+'SelectedList';
                newLandingPageField.value   = select_list;
                
                newLandingPage.appendChild(newLandingPageField);
            
            // append DOM elements    
            newLandingPageContainer.appendChild(newLandingPage);
            $('LandingPageTemplates').appendChild(newLandingPageContainer);
            
            $('LandingPageTemplate'+landingPageIndex+'SelectedList').value = select_list;   
            
            //-----------------------
            
            // New Landing Page status field
            var newLandingPageField         = document.createElement('input');
                newLandingPageField.type    = 'hidden';
                newLandingPageField.name    = 'data[LandingPageTemplate]['+landingPageIndex+'][status]';
                newLandingPageField.id      = 'LandingPageTemplate'+landingPageIndex+'Status';
                newLandingPageField.value   = 'enabled'
                
                newLandingPage.appendChild(newLandingPageField);
         
            /*
            // New Landing Page Parent/Child Field
            var newLandingPageField = document.createElement('input');
                newLandingPageField.type    = 'hidden';
                newLandingPageField.name    = 'data[LandingPageTemplate]['+landingPageIndex+'][parent_field]';
                newLandingPageField.id      = 'LandingPageTemplate'+landingPageIndex+'ParentField';
                newLandingPageField.value   = $('SchemaParentField').value;
                
                newLandingPage.appendChild(newLandingPageField);
                
            // New Landing Page Parent/Child Field
            var newLandingPageField = document.createElement('input');
                newLandingPageField.type    = 'hidden';
                newLandingPageField.name    = 'data[LandingPageTemplate]['+landingPageIndex+'][child_field]';
                newLandingPageField.id      = 'LandingPageTemplate'+landingPageIndex+'ChildField';
                newLandingPageField.value   = $('SchemaChildField').value;
                
                newLandingPage.appendChild(newLandingPageField);*/
                    
            // append DOM elements
            newLandingPageContainer.appendChild(newLandingPage);
            $('LandingPageTemplates').appendChild(newLandingPageContainer);
        }
        else
        {
        	var newLandingPage = document.createElement('li');
        	
            tagArray.length = 0;

			getElementsByClassName( "tag", $('source_'+$('LandingPageTemplateSourceId').options[$('LandingPageTemplateSourceId').selectedIndex].value));
			
			tag = "---\n";
			
			// New Landing Page Tag input fields
			for(i=0;i<tagArray.length;i++)
            {            	         	
                //tag += "  "+tagArray[i].name+": "+tagArray[i].value+"\n";
                if(tagArray[i].name == 'DestinationUrlCustom') continue;
                
                if(tagArray[i].name == 'DestinationUrl' && tagArray[i].value == 'custom'){
                    
                    tag += "  "+tagArray[i].name+": "+$('customurl_'+$('LandingPageTemplateSourceId').options[$('LandingPageTemplateSourceId').selectedIndex].value).value+"\n";
                }
                else if(tagArray[i].name != 'DestinationUrl')
                {
                    if(tagArray[i].value != "" && tagArray[i].name != 'Items'){
                    	tag += "  "+tagArray[i].name+": '"+tagArray[i].value+"'\n";
                    }else if(tagArray[i].name == 'Items'){
                    	tag += "  "+tagArray[i].name+":\n"+tagArray[i].value+"\n";
                    }else{    
                    	tag += "  "+tagArray[i].name+": "+tagArray[i].value+"\n";
                    }
                } 
            }

            var newLandingPageField         = document.createElement('input');
                newLandingPageField.type    = 'hidden';
                newLandingPageField.name    = 'data[LandingPageTemplate]['+landingPageIndex+'][tags]';
                newLandingPageField.value   = tag;
                
            newLandingPage.appendChild(newLandingPageField);

            
            $('LandingPageTemplate'+landingPageIndex+'Tags').value        = tag;
            
            //-----------------------
            
            source_id = $('LandingPageTemplateSourceId').value;
            
            childArray.length = 0;

			getElementsByClassName( "child", $('source_'+$('LandingPageTemplateSourceId').options[$('LandingPageTemplateSourceId').selectedIndex].value));

            var select_list = new Array();
            
            for(j = 0; j < childArray.length; j++)
            {              	           	       	
                selected = new Array();
                
	            ob = $('LandingPageTemplate'+source_id+'Child'+j);
	            
	            if(!ob){
	            	//alert('LandingPageTemplate'+source_id+'Child'+j);
	            	continue;
	            }
	            
	            for (var i = 0; i < ob.options.length; i++) 
	            	if (ob.options[i].selected) 
	            		selected.push(ob.options[i].text);
	            if(selected.length > 0){
	            	select_list += $('LandingPageTemplate'+source_id+'Parent').options[j].text+"||"+selected.join("||")+";";
	            }else{
	            	select_list += $('LandingPageTemplate'+source_id+'Parent').options[j].text+";";
	            }
            }
            
            $('LandingPageTemplate'+landingPageIndex+'SelectedList').value = select_list;   
            
            //-----------------------
            
            // New Landing Page status field
            var newLandingPageField         = document.createElement('input');
                newLandingPageField.type    = 'hidden';
                newLandingPageField.name    = 'data[LandingPageTemplate]['+landingPageIndex+'][status]';;
                newLandingPageField.id      = 'LandingPageTemplate'+landingPageIndex+'Status';
                newLandingPageField.value   = 'enabled'
                
            newLandingPage.appendChild(newLandingPageField);
            
            $('LandingPageTemplate'+landingPageIndex+'Display').innerHTML = $('LandingPageTemplateSourceId').options[$('LandingPageTemplateSourceId').selectedIndex].text;
            $('LandingPageTemplate'+landingPageIndex+'SourceId').value = $('LandingPageTemplateSourceId').options[$('LandingPageTemplateSourceId').selectedIndex].value;
        }

        DC.enableInput(false);
    }
    
    function showItemList(sender){
    	var source_id = $('LandingPageTemplateSourceId').value;
    	if(sender.checked){
    		showElement("LandingPageTemplate"+source_id+"List");
    	}else{
    		hideElement("LandingPageTemplate"+source_id+"List");
    	}
    }
    
    var sourceArray = new Array();
    
    function selectSource(sender){
		sourceArray.length = 0;

		getElementsByClassName( "source", document.body);

		for(i=0;i<sourceArray.length;i++)
        {              	         	
            hideElement(sourceArray[i].id);
        }
        
        showElement('source_'+sender.options[sender.selectedIndex].value);
	}
	
	var childArray = new Array();
	
	function showChildList(sender){
		source_id = $('LandingPageTemplateSourceId').value;
		childArray.length = 0;
	
		getElementsByClassName("child", document.body);

		for(i = 0; i < childArray.length; i++)
        {              	         	
            hideElement(childArray[i].id);
        }

        showElement('source_'+source_id+'child_'+sender.options[sender.selectedIndex].value);
	}
    
    function getElementsByClassName(strClassName, obj) {
    	
    	if(strClassName == 'tag'){
    		arr = tagArray;
    	}else if(strClassName == 'source'){
    		arr = sourceArray;
    	}else if(strClassName == 'child'){
    		arr = childArray;
    	}
    	
	    if ( obj.className == strClassName ) {
	        arr[arr.length] = obj;
	    }
	    for ( var i = 0; i < obj.childNodes.length; i++ )
        	getElementsByClassName( strClassName, obj.childNodes[i] );
	}

    
    function showhideSamples( type, domElement, domParent, sender, index,searchEngine )
    {
        if(type == 'keyword')
        {
            if(domElement == null && domParent == null && sender != null)
            {
                if(!sender.index)
                    index = sender.getAttribute('index');
                    else
                    index = sender.index;
                
                domElement      = $(searchEngine+'KeywordTemplate'+index+'Samples');
                domParent       = $(searchEngine+'KeywordTemplate'+index+'Display');
                sampleGroupIcon = $(searchEngine+'KeywordTemplate'+index+'Icon');
            }
            
            var sampleGroupIcon = $(domParent.id.replace(/Display/,'Icon'));
            var sampleGroup = domElement.descendants();

            if(!sampleGroup || sampleGroup.length == 0)
            {
                var sampleKeywords = $A();
                
                var sampleKeywordHeadings = document.createElement('li');
                    //sampleKeywordHeadings.innerHTML = '<strong>'+ previewGroupFields.length +' Random Samples</strong>';
                    
                    domElement.appendChild(sampleKeywordHeadings);
                var count = 0;                
                for(i=0; i<previewGroupFields.length; i++)
                {
                    var sampleKeyword = domParent.innerHTML.replace(/\s-\s/,'');
                    
                    for(j=0; j<previewGroupFields[i].length; j++)
                    {
                        sampleKeyword = sampleKeyword.replace(previewGroupFields[i][j], previewGroupValues[i][j]);
                    }
                    
                    if(sampleKeywords.indexOf(sampleKeyword) == -1)
                    {
                        sampleKeywords.push(sampleKeyword);
                        
                        var sampleKeywordItem = document.createElement('li');
                            sampleKeywordItem.innerHTML = sampleKeyword;
                            sampleKeywordItem.id        = i;
                            
                        count++;    
                        domElement.appendChild(sampleKeywordItem);
                    }
                }
                
                sampleKeywordHeadings.innerHTML = '<strong>'+ count +' Random Samples</strong>';
                
                sampleKeywords = null;
            }
            
            if(sender != null)
            {
                if(domElement.style.display == 'block')
                {
                    domElement.style.display    = 'none';
                    sampleGroupIcon.src         = site_root+'/img/plus_ico_2.gif';
                }
                else
                {
                    domElement.style.display    = 'block';
                    sampleGroupIcon.src         = site_root+'/img/minus_ico_2.gif';
                }
            }
        }
        else if(type == 'textad')
        {
            var textadFields = new Array('Headline','Line1','Line2','DisplayUrl');
            
            if(domElement == null && sender != null)
            {
                if(!sender.index)
                    index = sender.getAttribute('index');
                    else
                    index = sender.index;
                
                domElement      = $(searchEngine+'TextadTemplate'+index+'Samples');
                domParent       = $(searchEngine+'TextadTemplate'+index+'Options');
                sampleGroupIcon = $(searchEngine+'TextadTemplate'+index+'Icon');
            }
            else
            {
                sampleGroupIcon = $(searchEngine+'TextadTemplate'+index+'Icon');
            }
            
            var sampleGroup = domElement.descendants();
            
            if(!sampleGroup || sampleGroup.length == 0)
            {
              
                var newTextadSamplesHeader                  = document.createElement('p');
                    newTextadSamplesHeader.id               = searchEngine+'TextadTemplate'+index+'SamplesHeader';
                    newTextadSamplesHeader.style.marginLeft = '5px';
                    
                    //count Total text Ads
                    count =0;
                    
                   // newTextadSamplesHeader.innerHTML        = '<strong> '+previewGroupFields.length+' Random Samples</strong>';
                    newTextadSamplesHeader.style.color      = '#777777';
                                    
                    domElement.appendChild(newTextadSamplesHeader);

                var sampleTextads = $A();
                
                for(i=0; i<previewGroupFields.length; i++)
                {
                    
                    var sampleTextadPreview             = document.createElement('div');
                        sampleTextadPreview.className   = 'googletextad';
                        sampleTextadPreview.id          = 'sample_'+index+'_'+i;
                    var sampleTextadFields  = $A();
                    
                    for(j=0; j<textadFields.length; j++)
                    {
                        if(!$(searchEngine+'TextadTemplate'+index+textadFields[j]))
                        {
                        	sampleTextadFields.push('');
                        	
                        	continue;
                        }
                    	
                    	var sampleTextadField = $(searchEngine+'TextadTemplate'+index+textadFields[j]).value;
                        
                        for(k=0; k<previewGroupFields[i].length; k++)
                        {
                            sampleTextadField = sampleTextadField.replace(previewGroupFields[i][k].replace(/^\/(.*)\/$/, "$1"), previewGroupValues[i][k]);
                        }
                        
                        sampleTextadFields.push(sampleTextadField);
                    }
                    
                    if(sampleTextads.indexOf(sampleTextadFields.toString()) == -1)
                    {
                        sampleTextads.push(sampleTextadFields.toString());
                        
                        /*var sampleTextadFieldPreview = document.createElement('span');
                            sampleTextadFieldPreview.innerHTML = 'Sample Template';
                            sampleTextadFieldPreview.className = 'sampletitle';
                        
                        sampleTextadPreview.appendChild(sampleTextadFieldPreview);*/
                                        
                        for(j=0; j<textadFields.length; j++)
                        {
                        	if(!$(searchEngine+'TextadTemplate'+index+textadFields[j]))
                        		continue;
                        	
                        	var sampleTextadFieldPreview = document.createElement('span');
                                sampleTextadFieldPreview.innerHTML = sampleTextadFields[j];
                                
                            if(textadFields[j] == 'Headline')
                            {
                                sampleTextadFieldPreview.className = 'headline';
                            }
                            else if(textadFields[j] == 'DisplayUrl')
                            {
                                sampleTextadFieldPreview.className = 'display_url';
                            }
                            
                            sampleTextadPreview.appendChild(sampleTextadFieldPreview);
                            sampleTextadPreview.appendChild(document.createElement('br'));
                           
                       }
                        count++;
                        
                        domElement.appendChild(sampleTextadPreview);
                        
                        if(i%2 == 0)
                            $(sampleTextadPreview.id).setStyle({cssFloat:'left'});
                            else
                            $(sampleTextadPreview.id).setStyle({cssFloat:'left'});
                    }
                }
                
                newTextadSamplesHeader.innerHTML  = '<strong> '+count+' Random Samples</strong>';

                domElement.appendChild(document.createElement('br'));
            }
            
            if(sender != null)
            {
                if(domElement.style.display == 'block')
                {
                    domElement.style.display = 'none';
                    
                    if(sender != null)
                        sender.src = site_root+'/img/plus_ico_2.gif';
                        else
                        sampleGroupIcon.src = site_root+'/img/plus_ico_2.gif';
                }
                else
                {
                    domElement.style.display = 'block';
                    
                    if(sender != null)
                        sender.src = site_root+'/img/minus_ico_2.gif';
                        else
                        sampleGroupIcon.src = site_root+'/img/minus_ico_2.gif';
                }
            }
        }
    }
    
    function showhideAdgroupName(type, form, sender)
    {
        if(type == 'popup')
        {
            if(sender == null)
            {
                var formFields = form.getInputs('radio');
                
                for(i=0;i<formFields.length;i++)
                {
                    if(formFields[i].checked)
                    {
                        $('AdgroupNameSamples'+formFields[i].id).style.display = 'block';
                    }
                    else
                    {
                        $('AdgroupNameSamples'+formFields[i].id).style.display = 'none';
                    }
                }
            }
        }
        else if(type == 'element')
        {
            var adgroupName         = $(searchEngine+'AdgroupTemplateNameTemplate').value;
            var templateName        = $(searchEngine+'AdgroupTemplateName').value;
            var templateNameType    = $(searchEngine+'AdgroupTemplateNameType').value;
            
            var existingAdgroupNames = $A();
            
            $('AdgroupNameSamples').update();
            
            //if(sender.innerHTML == 'view live samples')
            //{
                var newSampleAdgroupName = document.createElement('li');
                    newSampleAdgroupName.innerHTML = '<strong>Live Samples</strong>';
                    
                $('AdgroupNameSamples').appendChild(newSampleAdgroupName);

                for(i=0; i<previewGroupFields.length;i++)
                {
                    var sampleAdgroupName = adgroupName;
                    
                    for(j=0;j<previewGroupFields[i].length;j++)
                    {
                        sampleAdgroupName = sampleAdgroupName.replace(previewGroupFields[i][j], previewGroupValues[i][j]);
                    }
                    
                    if(existingAdgroupNames.indexOf(sampleAdgroupName) == -1)
                    {
                        existingAdgroupNames.push(sampleAdgroupName);
                        
                        switch(templateNameType)
                        {
                            case 'prefix':
                            
                                var newSampleAdgroupName = document.createElement('li');
                                    newSampleAdgroupName.innerHTML = templateName+'_'+sampleAdgroupName;
                            
                            break;
                            case 'suffix':
                            
                                var newSampleAdgroupName = document.createElement('li');
                                    newSampleAdgroupName.innerHTML = sampleAdgroupName+'_'+templateName;
                            
                            break;
                            case 'static':
                            
                                var newSampleAdgroupName = document.createElement('li');
                                    newSampleAdgroupName.innerHTML = sampleAdgroupName;
                            
                            break;
                        }
                        
                        $('AdgroupNameSamples').appendChild(newSampleAdgroupName);
                    }
                }            
                
                //sender.innerHTML = 'hide live samples';
            //}
            //else
            //{
                //$('AdgroupNameSamples').style.display == 'none';
                //sender.innerHTML = 'view live samples';
            //}
        }
    }
    
    /** TO BE REMOVED UPON MERGE WITH BUILDADGROUP **/
//    function launchChild( templateId, templateModelId, parentId )
//    {
//        new Ajax.Request(site_root+'/aw_adgroup_templates/execute/master_publish/'+templateId+'/'+templateModelId+'/0/0', {onComplete:function(){ startPublishMonitor(parentId); }, asynchronous:true, evalScripts:true})
//    }
    
    function savePublish( form, templateModelName, templateModelId, templateId, networkName )
    {
        var formFields = form.getInputs('radio');
        
        for(i=0;i<formFields.length;i++)
        {
            if(formFields[i].checked)
            {
                switch(formFields[i].id)
                {
                    case 'TemplatePublishTriggerNow':
                    
                        // change: now saving regardless, to ensure any session based changes are use to update/publish
                        //if(!templateId || templateId == null || templateId == -1 )
                        //{
                            // no Template.id, so we need to save the Campaign/Adgroup first
                            if((templateInfo = savePrePublish(templateModelName)) != false)
                            {
                                // send off BackgroundLauncher: SITE_ROOT/{templateModelName}/execute/master_publish/{templateId}/{recursive}/{log}
                                new Ajax.Request(site_root+'/'+templateModelName+'/execute/master_publish/'+templateInfo.templateId+'/'+templateInfo.templateModelId+'/0/0', {onComplete:function(){ startPublishMonitor(templateInfo.templateId, networkName); }, asynchronous:true, evalScripts:true})
                                
//                                new Ajax.Request(site_root+'/'+templateModelName+'/remove_session_status', {asynchronous:true, evalScripts:true});
                                
                            }
                            else
                            {
                                alert('Error! - Unable to save changes before publishing/launching');
                            }
                        //}
                        //else
                        //{
                        //    alert('TemplateId: '+templateId+' ConcreteModelTemplateId: '+templateModelId);
                        //    
                        //    // send off BackgroundLauncher: SITE_ROOT/{templateModelName}/execute/master_publish/{templateId}/{recursive}/{log}
                        //    new Ajax.Request(site_root+'/'+templateModelName+'/execute/master_publish/'+templateId+'/'+templateModelId+'/0/0', {onComplete:function(){ startPublishMonitor(templateId); }, asynchronous:true, evalScripts:true})
                        //}
                    
                    break;
                    case 'TemplatePublishTriggerLater':
                    
                        // populate hidden field; only saved when Campaign/Adgroup is saved as a whole
                        $('TemplatePublishTrigger').value = formFields[i].value;
                        $('PublishMonitor').style.display = 'block';
                        $('PublishMonitor').update($(formFields[i].id+'Label').innerHTML);
                        
                        closeOverlay();
                    
                    break;
                }
            }
        }
    }
    
    function savePrePublish(templateModelName)
    {
        var jsonResponse = null;
        
        var saveAction = /aw_([^_]+)_template/g.exec(templateModelName);
            saveActionModel = saveAction[1];
        
        new Ajax.Request(site_root+'/'+templateModelName+'/save_'+saveActionModel+'/', {onComplete:function(transport, json){ jsonResponse = json; }, asynchronous:false, evalJSON:true});
         
        if(jsonResponse.templateId > 0 && jsonResponse.templateModelId > 0)
        {
            return jsonResponse;
        }
        else
        {
            return false;
        }
    }
    
    /**
     * Start Publish Monitor
     * executes a periodical request to monitor publication status of provided Template
     */
    function startPublishMonitor(templateId, networkName)
    {
        $('PublishMonitor').style.display = 'block';
        $('PublishButton').style.display = 'none';
        
        closeOverlay();
        
        new Ajax.PeriodicalUpdater('PublishMonitor', site_root+'/Templates/master_publish_status/'+templateId+'/0/'+networkName, {frequency:5});
    }

    function toggleAllLanguages(sender, form)
    {
        var formFields = form.getInputs('checkbox');
        
        for(i=0; i<formFields.length; i++)
        {
            if(formFields[i] != sender)
            {
                formFields[i].checked   = sender.checked;
                formFields[i].disabled  = sender.checked;
            }
        }
    }
    
    function updateAdgroupNameTemplate(sender, name)
    {
        var nameTemplates = document.getElementsByName(name);
            
        for(i=0; i<nameTemplates.length; i++)
        {
            nameTemplates[i].innerHTML = sender.value;
        }
    }
    
    function updateAdgroupNameSamples(searchEngine)
    {
        var adgroupName         = $(searchEngine+'AdgroupTemplateNameTemplate').value;
        var templateName        = $(searchEngine+'AdgroupTemplateName').value;
        var templateNameType    = $(searchEngine+'AdgroupTemplateNameType').value;
        
        var adgroupNameSamples  = document.getElementsByName('AdgroupNameSamples');
        
        for(k=0; k<adgroupNameSamples.length; k++)
        {
            var existingAdgroupNames = $A();
    
            $(adgroupNameSamples[k].id).update();
            
            var newSampleAdgroupName = document.createElement('li');
                newSampleAdgroupName.innerHTML = '<strong>Live Samples</strong>';
                
            $(adgroupNameSamples[k].id).appendChild(newSampleAdgroupName);
    
            for(i=0; i<previewGroupFields.length;i++)
            {
                var sampleAdgroupName = adgroupName;
                
                for(j=0;j<previewGroupFields[i].length;j++)
                {
                    sampleAdgroupName = sampleAdgroupName.replace(previewGroupFields[i][j], previewGroupValues[i][j]);
                }
                
                if(existingAdgroupNames.indexOf(sampleAdgroupName) == -1)
                {
                    existingAdgroupNames.push(sampleAdgroupName);
                    
                    switch(templateNameType)
                    {
                        case 'prefix':
                        
                            var newSampleAdgroupName = document.createElement('li');
                                newSampleAdgroupName.innerHTML = templateName+'_'+sampleAdgroupName;
                        
                        break;
                        case 'suffix':
                        
                            var newSampleAdgroupName = document.createElement('li');
                                newSampleAdgroupName.innerHTML = sampleAdgroupName+'_'+templateName;
                        
                        break;
                        case 'static':
                        
                            var newSampleAdgroupName = document.createElement('li');
                                newSampleAdgroupName.innerHTML = sampleAdgroupName;
                        
                        break;
                    }
                    
                    $(adgroupNameSamples[k].id).appendChild(newSampleAdgroupName);
                }
            }            
        
        }
        
    }
    
    function validateTagOrder( sender, tagIndex )
    {
        // check to see if selection valid
        for(i=0; i<tagCollection.length; i++)
        {
            if(tagCollection[i] == tagIndex)
                continue;
            
            if(tagOrdersActive[tagCollection[i]] == sender.selectedIndex)
            {
                alert('Landing Page Tag with order: '+sender.selectedIndex+' already in use');
                
                sender.selectedIndex = tagOrdersActive[tagIndex];
                
                return false;
            }
            
            tagOrdersActive[tagIndex] = sender.selectedIndex;
        }
        
            
        for(i=0; i<tagCollection.length; i++)
        {
            var tagOption = $('UrlTags'+tagCollection[i]+'Order');
            
            for(j=0; j<tagOption.options.length; j++)
            {
                tagOption.options[j].disabled = false;
            }
            
            for(j=0; j<tagCollection.length; j++)
            {
                if(tagCollection[i] != tagCollection[j])
                {
                    tagOption.options[tagOrdersActive[tagCollection[j]]].disabled = true;
                }
            }
        }
        
    }

    function saveAdgroupTags( form )
    {
        var formFields      = form.getInputs('checkbox');
        
        var tagFields       = new Array('Name','ParameterKey','ParameterValue');
        var tagFieldsNames  = new Array('name','parameter_key','parameter_value');
        
        var selectedTags    = $A();
        
        var nextUnOrdered   = (formFields.length+1);
        
        $('UrlTags').update();
        $('urlTagsHidden').update();
        
        for(i=0; i<formFields.length; i++)
        {
            if(formFields[i].checked)
            {
                var tagOrderSelect  = $('UrlTags'+formFields[i].id+'Order');
                var tagOrder        = tagOrderSelect.options[tagOrderSelect.selectedIndex].value
                
                if(tagOrder != '-1')
                {
                    selectedTags[tagOrder] = formFields[i].id;
                }
                else
                {
                    selectedTags[nextUnOrdered] = formFields[i].id;
                    
                    nextUnOrdered++;
                }
            }
        }
        
        order = 0;
        
        var updatedTagFields = new Array();
        
        for(i=0; i<selectedTags.length; i++)
        {
            if(selectedTags[i] != null && selectedTags[i] >= 0)
            {
                var newTagItem      = document.createElement('li');
                    newTagItem.id   = 'UrlTag'+order;
                    newTagItem.style.marginBottom = '10px';
                    
                var newTagName                      = document.createElement('div');
                    newTagName.style.width          = 'auto';
                    newTagName.innerHTML            = $('UrlTags'+selectedTags[i]+'Name').value;
                    
                var newTagKeyValue = document.createElement('div');
                    newTagKeyValue.style.width  = 'auto';
                    newTagKeyValue.style.marginLeft = '10px';
                    newTagKeyValue.style.marginTop = '5px';
                   // newTagKeyValue.style.color = 'silver';
                    newTagKeyValue.innerHTML    = $('UrlTags'+selectedTags[i]+'ParameterKey').value+' = '+$('UrlTags'+selectedTags[i]+'ParameterValue').value;
                    
                newTagItem.appendChild(newTagName);
                newTagItem.appendChild(newTagKeyValue);
                
                $('UrlTags').appendChild(newTagItem);
                
                for(f=0; f<tagFieldsNames.length; f++)
                {
                    var newTagField         = document.createElement('input');
                        newTagField.type    = 'hidden';
                        newTagField.id      = 'UrlTag'+order+tagFields[f];
                        newTagField.name    = 'data[UrlTag]['+order+']['+tagFieldsNames[f]+']';
                        newTagField.value   = $('UrlTags'+selectedTags[i]+tagFields[f]).value;
                        
                        updatedTagFields.push(newTagField);
                        //$('urlTagsHidden').appendChild(newTagField);
                }
                
                var newTagField         = document.createElement('input');
                    newTagField.type    = 'hidden';
                    newTagField.id      = 'UrlTag'+order+'Id';
                    newTagField.name    = 'data[UrlTag]['+order+'][id]';
                    newTagField.value   = $(selectedTags[i]).value;
                
                    updatedTagFields.push(newTagField);
                    //$('urlTagsHidden').appendChild(newTagField);
                
                var newTagField         = document.createElement('input');
                    newTagField.type    = 'hidden';
                    newTagField.id      = 'UrlTag'+order+'Order';
                    newTagField.name    = 'data[UrlTag]['+order+'][order]';
                    newTagField.value   = order;
                    
                    updatedTagFields.push(newTagField);
                    //$('urlTagsHidden').appendChild(newTagField);
                    
                //order++;
            }
            
            order++;
        }
        
        for(i=0; i<updatedTagFields.length; i++)
        {
            $('urlTagsHidden').appendChild(updatedTagFields[i]);
        }
        
        tagCollection = new Array();
        
        //closeOverlay();
        DC.enableInput(false);
    }   
    
