var request_id = 0;
var countTimer = null;
var ignore_submit_flag = false;
var page_name;


function show(target) {
   target = document.getElementById(target);
   target.style.display = 'block';
}

function hide(target) {
   target = document.getElementById(target);
   target.style.display = 'none';
}

function addMadminListeners() {
   Event.observe( 'targetByQual0', 'click', toggleRunOfNetwork, false );
} 

function addListeners() {
   //addSymbolListeners();
   //Event.observe( 'targetByGeo0', 'click', toggleGeoChecks, false );
   //Event.observe( 'targetByGeo1', 'click', toggleGeoChecks, false );
   Event.observe( 'geo-country', 'click', toggleGeos, false );
   Event.observe( 'geo-region', 'click', toggleGeos, false );
   if (
      page_settings.mode == 'direct_buy' || 
      page_settings.mode == 'create' || 
      page_settings.mode == 'manage_madmin' || 
      (page_settings.mode == 'manage' && page_settings.targeting_type == 'standard')
   ) {
      if (document.getElementById('targeting_category')) {
         Event.observe( 'targetByCat0', 'click', toggleCategoryChecks, false );
         Event.observe( 'targetByCat1', 'click', toggleCategoryChecks, false );
      }
      if (document.getElementById('targeting_demo_age')) {
         Event.observe( 'targetByAge0', 'click', toggleAgeChecks, false );
         Event.observe( 'targetByAge1', 'click', toggleAgeChecks, false );
      }
      if (document.getElementById('targeting_keyword')) {
         Event.observe( 'write_keywords', 'click', writeKeywords, false );
         Event.observe( 'targetByKeywords0', 'click', toggleKeywordsChecks, false );
         Event.observe( 'targetByKeywords1', 'click', toggleKeywordsChecks, false );
      }
      if (document.getElementById('targeting_behavioral_category')) { // don't do any initializing behavorial targeting is not applicable
         if(document.getElementById('ad_type_interstitial')) { 
            Event.observe( 'ad_type_interstitial', 'click',  hideshowbehavorial, false );
         }
         if(document.getElementById('ad_type_image')) { 
            Event.observe( 'ad_type_image', 'click',  hideshowbehavorial, false );
            hideshowbehavorial(); //no need to initialize if we show or hide this widget, if there is no banner radio button, since for now, the behavioral targeting only can appear for banner campaigns
         }
         if(document.getElementById('ad_type_text')) { 
            Event.observe( 'ad_type_text', 'click' ,  hideshowbehavorial, false );
         }
         Event.observe( 'targetByBehavorialCat0', 'click', toggleBehavorialCategoryChecks, false );
         Event.observe( 'targetByBehavorialCat1', 'click', toggleBehavorialCategoryChecks, false );
         toggleBehavorialCategoryChecks();
      }
   }
   if (document.getElementById('targeting_retargeting')) {
      Event.observe( 'targetByRetargetingOption0', 'click', toggleRetargetingOption, false );
      Event.observe( 'targetByRetargetingOption1', 'click', toggleRetargetingOption, false );
   }
   
   addInputListeners();
   if (response_type == 'everything') {
      add_enter_override_listeners();
      window.onkeypress = disableEnter;
   }
   
   try {
      set_options(target_settings);
   } catch(err) { }
   if (page_settings.mode == 'create' || (page_settings.mode == 'manage' && page_settings.targeting_type == 'basic')) {
      toggleCategoryChecks();
      toggleAgeChecks();
      toggleKeywordsChecks();
   }
   toggleGeoChecks();
   hideOldChannels();
}

function hideOldChannels() {
   // 18-24
   if (document.getElementById('category_id_631')) {
      var ck = document.getElementById('category_id_631');
      if (!ck.checked) ck.parentNode.parentNode.style.display = 'none';
   }
   // 21+ beverages
   if (document.getElementById('category_id_636')) {
      var ck = document.getElementById('category_id_636');
      if (!ck.checked) ck.parentNode.parentNode.style.display = 'none';
   }
   // 35+
   if (document.getElementById('category_id_605')) {
      var ck = document.getElementById('category_id_605');
      if (!ck.checked) ck.parentNode.parentNode.style.display = 'none';
   }
   // blogs
   if (document.getElementById('category_id_629')) {
      var ck = document.getElementById('category_id_629');
      if (!ck.checked) ck.parentNode.parentNode.style.display = 'none';
   }
}

function set_options (targeting_settings) {
   for (i=0; i < targeting_settings.length; i++) {
      if (document.getElementById(targeting_settings[i]) ) {
         document.getElementById(targeting_settings[i]).checked = 'checked';
      } 
   }
}
/*

function set_regions (regions) {
      document.getElementById('final_selected_countries').value += ","
      document.getElementById('final_selected_countries').value += regions;
      //alert(document.getElementById('final_selected_countries').value);
      if ( ! selectedArrayWasBuild ) {
         selectedRegionsArray = new Array();
         selectedRegionsArray.push("GB");
         selectedArrayWasBuilt = true;
      }
      buildRegionsArray(document.forms[0], 'countries'); 
      addRegions(document.forms[0], 'countries');

}

   function toggle_demo(state) {
      ethnicity_module = document.getElementById('targeting_demo_ethnicity');
      income_module = document.getElementById('targeting_demo_income');
      income_module.style.display = state;
      ethnicity_module.style.display = state;
   }
*/
function selectGeoTargeting() {
   document.getElementById('targetByGeo1').checked = 'checked';
}

function selectCategoryTargeting() {
   document.getElementById('targetByCat1').checked = 'checked';
}

function selectIncomeTargeting() {
   document.getElementById('targetByIncome1').checked = 'checked';
}

function selectEthTargeting() {
   document.getElementById('targetByEth1').checked = 'checked';
}

function addBannerWarnListeners() {
   // Event.observe( 'ad_type_image', 'click' , showBannerWarn, false );
   Event.observe( 'ad_type_text', 'click' , hideBannerWarn, false );
   Event.observe( 'ad_type_interstitial', 'click', hideBannerWarn, false );
   addInputListeners();
}

function showBannerWarn() {
   Element.show("banner-warning");
}

function hideBannerWarn() {
   Element.hide('banner-warning');
}

function enableInputsIn(elem, bool) {
   inputs = $(elem).getElementsByTagName('input');
   disabled = (bool) ? '' : 'disabled';
   for (i=0;i<inputs.length;i++) {
      inputs[i].disabled = disabled;
   }
}

function toggleCategoryChecks(e) {
   if (document.getElementById('targetByCat0').checked ) {
      Element.hide('categoryChecks');
   } else if (document.getElementById('targetByCat1').checked) {
      Element.show('categoryChecks');
   }
}

function toggleBehavorialCategoryChecks(e) {
   if (document.getElementById('targetByBehavorialCat0').checked ) {
      Element.hide('BehavorialCategoryChecks');
   } else if (document.getElementById('targetByBehavorialCat1').checked) {
      Element.show('BehavorialCategoryChecks');
   }
}

function toggleRetargetingOption(e) {
   if (document.getElementById('targetByRetargetingOption0').checked ) {
      document.getElementById('retargetingNew').style.display = 'block';
      document.getElementById('retargetingExisting').style.display = 'none';
      document.getElementById('retargetingPixelAreaNew').style.display= 'block';
      document.getElementById('retargetingPixelAreaExisting').style.display= 'none';
   } else if (document.getElementById('targetByRetargetingOption1').checked) {
      document.getElementById('retargetingNew').style.display = 'none';
      document.getElementById('retargetingExisting').style.display = 'block';
      document.getElementById('retargetingPixelAreaNew').style.display= 'none';
      document.getElementById('retargetingPixelAreaExisting').style.display= 'block';
      
   }
}

function toggleKeywordsChecks(e) {
   if (document.getElementById('targetByKeywords0').checked) {
      Element.hide('keywordChecks');
   } else if (document.getElementById('targetByKeywords1').checked) {
      Element.show('keywordChecks');
   }
}

function toggleIncomeChecks(e) {
   if (document.getElementById('targetByIncome0').checked) {
      Element.hide('incomeChecks');
   } else if (document.getElementById('targetByIncome1').checked) {
      Element.show('incomeChecks');
   }
}

function toggleEthChecks(e) {
   if (document.getElementById('targetByEth0').checked) {
      Element.hide('ethChecks');
   } else if (document.getElementById('targetByEth1').checked) {
      Element.show('ethChecks');
   }
}
function toggleAgeChecks(e) {
   if (document.getElementById('targetByAge0').checked) {
      Element.hide('ageChecks');
   } else if (document.getElementById('targetByAge1').checked) {
      Element.show('ageChecks');
   }
}
function toggleRunOfNetwork(e) {
   if (Event.element(e).value == 'run_of_network' ) {
      Element.show('madmin-run-of-network');
      var default_net_qual = document.getElementById('targetByQual4');
      default_net_qual.checked = 'checked';
   } else {
      Element.hide('madmin-run-of-network');
      var run_of_net_id = document.getElementById('targetByQual3');
      run_of_net_id.checked = '';
   }
}

function toggleGeoChecks(e) {
   if (document.getElementById('targetByGeo0').checked ) {
      Element.hide('geoChecks');
      //toggle_demo('block');
   } else if (document.getElementById('targetByGeo1').checked ) {
      Element.show('geoChecks');
      document.getElementById('geoChecks').style.display = 'block';
      
   }
}

function toggleGeos(e) {
   if (Event.element(e).value == 'country' ) {
      Element.hide('regions');
      Element.show('countries');
   } else if (Event.element(e).value == 'region' ) {
      Element.hide('countries');
      Element.show('regions');
      //toggle_demo('block');
   }
}

function getCheckedValue(radioObj) {
   if(!radioObj)
      return "";
   var radioLength = radioObj.length;
   if(radioLength == undefined)
      if(radioObj.checked)
         return radioObj.value;
      else
         return "";
   for(var i = 0; i < radioLength; i++) {
      if(radioObj[i].checked) {
         return radioObj[i].value;
      }
   }
   return "";
}

function togglecategories() {
   
   var ad_type_selected = getCheckedValue(document.forms['targeting_form'].elements['ad_type']);
   var targeting_category = document.getElementById('targeting_category');
   if (ad_type_selected == 'network') {
      targeting_category.style.display = 'none';
   } else {
      targeting_category.style.display = 'block';
   }
}

function togglebehavorialcategories() {
   
   var ad_type_selected = getCheckedValue(document.forms['targeting_form'].elements['ad_type']);
   var targeting_category = document.getElementById('targeting_behavorial_category');
   if (ad_type_selected == 'network') {
      targeting_category.style.display = 'none';
   } else {
      targeting_category.style.display = 'block';
   }
}


function updateImp(imp,sites, responding_id) {
  /* if (responding_id == request_id) {
   if ( page_name != 'splash page') removeCalculate();
      $('imp').innerHTML = imp;
      if ($('sites')) $('sites').innerHTML = sites;
   } 
   */
}

/* for traffic estimator
function addSimpleInputListeners() {
   //checkboxes, radios, buttons
   inputs = document.getElementsByTagName('input');
   for (i=0;i<inputs.length;i++) {
      if (inputs[i].type == 'radio' || inputs[i].type == 'checkbox' ) {
         Event.observe(inputs[i], 'click', inputChanged, false);
      }
   }
}
*/

function addInputListeners() {
   //checkboxes, radios, buttons
   inputs = document.getElementsByTagName('input');
   /* For traffic estimator
   for (i=0;i<inputs.length;i++) {
      if (inputs[i].type == 'radio' || inputs[i].type == 'checkbox' ) {
         Event.observe(inputs[i], 'click', inputChanged, false);
      }
   }
   */
   //selected areas for geos
   /*
   geoBtns = $('geotarget').getElementsByTagName('input');
   
   
   for (i=0;i<geoBtns.length;i++) {
      if (geoBtns[i].type == 'button') {
         Event.observe(geoBtns[i], 'click', geoChanged, false);
      }
   }
   geoSelects = $('geotarget').getElementsByTagName('select');
   for (i=0;i<geoSelects.length;i++) {
      Event.observe(geoSelects[i], 'dblclick', geoChanged, false);
   }
   */
   /*
   if (page_settings.mode == 'create' || (page_settings.mode == 'manage' && page_settings.targeting_type == 'basic')) {
       Event.observe('keywords', 'keydown', keywordsChanged, false);
    }
    */
}

function add_enter_override_listeners() {
   var inputs = document.getElementsByTagName('input');

   for ( i = 0; i < inputs.length; i++ ) {
      Event.observe(inputs[i], 'keydown', checkEnterKey, false);
   }
}
/*  for traffic estimator
function inputChanged(e) {
   if (response_type == 'none') return;
   if ( response_type == 'everything') {
      estTraffic();
   } else {
      if ( page_name != 'splash page') makeCalculate();
      var container = 'aj_result';
      var url = '/mb/aj_imp_target.php';
      var pars = gather_targeting();
      var myAjax = new Ajax.Updater(container, url, {
         method: 'post',
         parameters: pars,
    evalScripts: true
      });
   }
}
*/
function geoChanged(e) {
  /* if (response_type == 'none') return;
   if ( response_type == 'everything') {
         estTraffic();
   } else {
      makeCalculate();
      var container = 'aj_result';
      var url = 'aj_imp_target.php';
      var pars = gather_targeting();
      var myAjax = new Ajax.Updater(container, url, {
    method: 'post',
    parameters: pars,
    evalScripts: true
      });
   }  */
}

function keywordsChanged(e) {
   if (response_type == 'none') return;
   var keyNum = (e.which) ? e.which : e.keyCode;
   if (keyNum == Event.KEY_RETURN) {
      if ( response_type == 'everything') {
    estTraffic();
      }
      makeCalculate();
      var container = 'aj_result';
      var url = 'aj_imp_target.php';
      var pars = gather_targeting();
      var myAjax = new Ajax.Updater(container, url, {
    method: 'post',
    parameters: pars,
    evalScripts: true
      });
   }
}

function AdBriteFirstPageView() {
  var container = 'aj_result';
  var url = 'aj_imp_target.php';
  var pars = gather_targeting();
  var myAjax = new Ajax.Updater(container, url, {
      method: 'post',
     parameters: pars,
     evalScripts: true
   });
}

function AdBriteAddLoadEvent(func) {
   var oldonload = window.onload;
   if (typeof window.onload != 'function') {
      window.onload = func;
   } else {
      window.onload = function () {
         oldonload();
         func();
      }
   }
}

function writeKeywords(e) {
   Element.toggle('keywords');
   Element.toggle('upload_keywords');
   Element.toggle('keyword_hint');
}

function addSymbolListeners() {
   div = $('categoryChecks');
   symbols = document.getElementsByClassName('symbols', div);
   for( i in symbols ) {
      Event.observe( symbols[i], 'click', toggleSymbol, false );
   }
}

function addParentCheckListeners() {
   div = $('categoryChecks');
   lis = document.getElementsByClassName('category-parent', div);
   for( i=0; i<lis.length; i++ ) {
      var checkbox = lis[i].getElementsByTagName('input')[0];
      Event.observe( checkbox, 'click', selectAllSubcats, false );
   }
}

function selectAllSubcats(e) {
   var checked = ( Event.element(e).checked ) ? 'checked' : '';
   var parentLi = Event.element(e).parentNode.parentNode;
   var subUl = parentLi.getElementsByTagName('ul')[0];
   var subChecks = subUl.getElementsByTagName('input');
   for (i=0; i<subChecks.length; i++) {
      subChecks[i].checked = checked;
   }
}

function toggleSymbol(e) {
   symbol = Event.element(e);
   ul = symbol.parentNode.getElementsByTagName('ul')[0];
   if ( Element.visible(ul) ) {
      Element.hide(ul);
      symbol.style.backgroundImage = 'url(images/plus.png)'
   } else {
      Element.show(ul);
      symbol.style.backgroundImage = 'url(images/minus.png)'
   }
}

function estTraffic() {
   if (response_type == 'none') return;
   var cpc = $F('cpc_est');
   var bud = $F('bud_est');
   
   /* disableInputs('input-bar'); */

   // $('est_btn').disabled = 'disabled';
   $('est_btn').value = 'Estimating...'; 
   if ($('bulk-buy-sites')) disableInputs('bulk-buy-sites');
   container = 'aj_return';
   var pars = gather_targeting();
   var url = 'aj_imp_target.php';
   var myAjax = new Ajax.Updater(container, url, {
      method: 'post',
      parameters: pars,
      evalScripts: true
   });
}


function showErrors(bid, budget) {
        clearErrorMessages();
        document.getElementById('error_feedback_box').style.display = 'block';
        if (bid && Element.visible('bid')) {
                var insideLi = document.createElement('li');
                insideLi.id = 'bid-error';
                insideLi.appendChild(document.createTextNode(bid));
                $('errors').appendChild(insideLi);
                $('cpc_est').className="error_input_warning";
        }
        if (budget) {
                var insideLi = document.createElement('li');
                insideLi.id = 'budget-error';
                insideLi.appendChild(document.createTextNode(budget));
                $('errors').appendChild(insideLi);
                $('bud_est').className="error_input_warning";
        }
        // enableInputs('input-bar');
        if ($('bulk-buy-sites')) enableInputs('bulk-buy-sites');
        $('est_btn').value = 'Estimate Traffic';
        $('est_btn').style.display = 'none';
        removeCalculate2();
}

function hideErrors() {
   if (document.getElementById('error_feedback_box')) {
      document.getElementById('error_feedback_box').style.display = 'none';
   }
}
/*
function showErrors(errors) {
        clearErrorMessages();
   if (errors['cpc']) {
      var insideDiv = document.createElement('div');
      insideDiv.id = 'bid-error';
      insideDiv.appendChild(document.createTextNode(errors['cpc']));
      div.appendChild(insideDiv);
   }
        if (errors['bud']) {
                var insideDiv = document.createElement('div');
                insideDiv.id = 'budget-error';
                insideDiv.appendChild(document.createTextNode(errors['bud']));
                div.appendChild(insideDiv);
   }       
}
*/

function clearErrorMessages() {
   if ($('bid-error')) {
      Element.remove('bid-error');
      $('cpc_est').className="input_field";
   }
   if ($('budget-error')) {
      Element.remove('budget-error');
      $('bud_est').className="input_field";
   }
}

function populateEsts( imp, sites, cpm, clks, spend, responding_id ) {
   removeCalculate2();
   // if (responding_id == request_id) {
    //   clearErrorMessages();
    //   $('imp').innerHTML = imp;

   if (responding_id == request_id) {
      clearErrorMessages();
      $('est_btn').value = 'Estimate Traffic';
      $('est_btn').style.disabled = '';
      $('imp').innerHTML = imp;
      if ($('sites')) $('sites').innerHTML = sites;
      $('cpm').innerHTML = '$' + cpm;      // don't forget the $
      $('clic').innerHTML = clks;
      $('spend').innerHTML = '$' + spend;  // don't forget the $
      /* enableInputs('input-bar'); */
      if ($('bulk-buy-sites')) enableInputs('bulk-buy-sites');
      $('est_btn').style.display = 'none';
   }
}

function show_estimate_button () {
   document.getElementById('est_btn').style.display = 'inline';
}

function populateOfs( imp, sites, clks, spend, responding_id ) {
   if (responding_id == request_id) {
      if ( spend < 75 ) {
         $('spend-percent').className = 'alert';
      } else {
         $('spend-percent').className = 'no_alert';
      }
 
      $('imp-total').innerHTML = '&nbsp;out of&nbsp;<b>' + imp + '</b>&nbsp;available impressions';
      $('sites-total').innerHTML = '&nbsp;out of&nbsp;<b>' + sites + '</b>&nbsp;available sites';
      $('clic-total').innerHTML = '&nbsp;out of&nbsp;<b>' + clks + '</b>&nbsp;projected potential clicks';
      $('spend-percent').innerHTML = '&nbsp;(' + spend +'% of your daily budget)';
      // enableInputs('input-bar');
      if ($('bulk-buy-sites')) enableInputs('bulk-buy-sites');
   }
}
function disableInputs(elem) {
        var inputs = $(elem).getElementsByTagName('input');
        for (i=0; i<inputs.length; i++ ) {
                if (!(inputs[i].disabled)) inputs[i].disabled = 'disabled';
        }
}
function enableInputs(elem) {
        var inputs = $(elem).getElementsByTagName('input');
        for (i=0; i<inputs.length; i++ ) {
                if (inputs[i].disabled) inputs[i].disabled = '';
        }
}

function count() {
        var imp = $('imp').innerHTML;
        var nImp = '';
        for (i=0; i<imp.length; i++ ) {
                var character = imp.substr(i,1);
                if (parseInt(character, 10) || parseInt(character, 10) == 0 ) {
                        nImp += Math.round(Math.random()*9)
                } else {
                        nImp += character;
                }
        }
        $('imp').innerHTML = nImp;
        if ($('sites')) { //don't count sites if it's site-specific/bulk
            var sites = $('sites').innerHTML;
            var nSites = '';
            for (i=0; i<sites.length; i++ ) {
                var character = sites.substr(i,1);
                if (parseInt(character, 10) || parseInt(character, 10) == 0 ) {
                        nSites += (Math.round(Math.random()*9))
                } else {
                        nSites += character;
                }
            }
            $('sites').innerHTML = nSites;
         }
}

function makeCalculate2() {
   if ( !countTimer ) {
      document.getElementById('calculating').style.display='block';
      countTimer = setInterval('count()', 200);
   }
}
function removeCalculate2() {
   document.getElementById('calculating').style.display='none';
   clearInterval(countTimer);
   countTimer = null;
}


function makeCalculate() {
   /*if ( !countTimer ) {
        div = document.createElement('div');
        div.id = 'calculating';
        img = document.createElement('img');
        img.src = 'images/loading.gif';
        img.alt = 'loading';
        var txt = document.createTextNode(' Calculating...');
        div.appendChild(img);
        div.appendChild(txt);
        $('est-imp').appendChild(div);
        countTimer = setInterval('count()', 200);
   }*/
}
function removeCalculate() {
   /*est = $('est-imp');
   est.removeChild(est.lastChild);
   clearInterval(countTimer);
   countTimer = null;*/
}


function gather_targeting() {

   request_id++;

   var qs = formData2QueryString(document.targeting_form) + '&request_id=' + request_id + '&response_type=' + response_type;
   return qs;
}

function checkEnterKey(evt) {
   evt = (evt) ? evt : event;
   var charCode = (evt.charCode) ? evt.charCode :
   ((evt.which) ? evt.which : evt.keyCode);
   if (charCode == 13 || charCode == 3) {
      estTraffic();
      ignore_submit_flag = true;  
   } 
}
function disableEnter(evt) {
   var evt = (evt) ? evt : ((event) ? event : null);
   var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
   if((onkeypress.keyCode == 13))  {return false;}
}
function check_submit_flag() {
   if (ignore_submit_flag == true) {
      ignore_submit_flag = false;
      return false;
   } else {
      return true;
   }
}

function applyMassBid(mass_bid) {
   var value = $F(mass_bid);
   var table = $("bulk-buy-sites");
   var inputs = table.getElementsByTagName("input");

   for ( i=0; i<inputs.length; i++ ) {
      inputs[i].value = value;
   }

   $('cpc_est').value = value;
}

var arrayWasBuilt = false;
var selectedArrayWasBuild = false;
var nonUniqueArray = new Array();
var indexArray = new Array(); 
var fieldNameArray = new Array();
var indexArrayBuilt = false;

function buildRegionsArray(whichForm, fieldName) {
   var orig_fieldname = fieldName;
   fieldName = 'available_' + fieldName;
   if ( ! arrayWasBuilt ) {
      availableRegionsArray = new Array();
      for (var indexNum = whichForm.elements[fieldName].length - 1; indexNum >= 0; indexNum--) {
         availableRegionsArray[indexNum] = whichForm.elements[fieldName][indexNum].text;
      }   
      nonUniqueArray = find_duplicates(availableRegionsArray);
      arrayWasBuilt = true;
   }
   var checker = checkFieldnameArray(whichForm, orig_fieldname);
   if (checker == null) {
      addFieldName(orig_fieldname);      
     saveFromAvailable(whichForm, orig_fieldname);
   }
}

function checkFieldnameArray(whichForm, fieldName) {
   var indexArrLen = fieldNameArray.length;
   for (i = 0; i < indexArrLen; i ++) {
      if (fieldNameArray[i] == fieldName) {
      return i;
      }
   }
   return null;
}

function addFieldName(fieldName){
   var indexArrLen = fieldNameArray.length;
fieldNameArray[indexArrLen] = fieldName;
}

function saveFromAvailable(whichForm, fieldName) {
   var availableFieldName = 'available_' + fieldName;
   var selectedFieldName = 'selected_' + fieldName;
   var arrayLen = whichForm.elements[availableFieldName].length;
   var indexArrLen = indexArray.length;
   for (var i = 0; i < arrayLen; i ++){
        if (whichForm.elements[availableFieldName][i].disabled == true) {
          indexArray[indexArrLen] = new Array(whichForm.elements[availableFieldName][i].text, i, fieldName);
          indexArrLen++; 
        }
   }
} 

function findFromDuplicate(whichForm, fieldName, text){
   var availableFieldName = 'available_' + fieldName;
   var selectedFieldName = 'selected_' + fieldName;
   var dupLen = nonUniqueArray.length;
   for (var i = 0; i < dupLen; i++) {
      var text2 = nonUniqueArray[i][0];
      if (text.replace(/\u00a0/g,'') == text2.replace(/\u00a0/g,'')){
         whichForm.elements[availableFieldName][nonUniqueArray[i][1]].disabled = false;
          whichForm.elements[availableFieldName][nonUniqueArray[i][1]].style.color = '#000000';
          whichForm.elements[availableFieldName][nonUniqueArray[i][2]].disabled = false;
          whichForm.elements[availableFieldName][nonUniqueArray[i][2]].style.color = '#000000';
         return 1;
      }
    }
    return 0;
  }

function findFromIndexArray(whichForm, fieldName){
   var availableFieldName = 'available_' + fieldName;
   var selectedFieldName = 'selected_' + fieldName;
   var indexArrLen = indexArray.length;
   for (var i = 0; i < indexArrLen; i ++) {
      if (indexArray[i][1] != null && indexArray[i][2] == fieldName) {
          whichForm.elements[availableFieldName][indexArray[i][1]].disabled = true;
          whichForm.elements[availableFieldName][indexArray[i][1]].style.color = '#777777';
        }   
   }     
} 

function addIndexArray(text, index, fieldName){
   var indexArrLen = indexArray.length;
   var dupArrLen = nonUniqueArray.length;
   for (var i = 0; i < dupArrLen; i ++) {
        if (nonUniqueArray[i][0].replace(/\u00a0/g,'') == text.replace(/\u00a0/g,'')){
          indexArray[indexArrLen] = new Array(nonUniqueArray[i][0], nonUniqueArray[i][1], fieldName);
          indexArray[indexArrLen + 1] = new Array(nonUniqueArray[i][0], nonUniqueArray[i][2], fieldName);            
          return;
        }
   }
   indexArray[indexArrLen] = new Array(text, index, fieldName);
}

function removeIndexArray(whichForm, fieldName, text){
   var availableFieldName = 'available_' + fieldName;
   var selectedFieldName = 'selected_' + fieldName;
   var indexArrLen = indexArray.length;
   for (var i = 0; i < indexArrLen; i ++) {
        if( text.replace(/\u00a0/g,'') == indexArray[i][0].replace(/\u00a0/g,'') && indexArray[i][1] != null && indexArray[i][2] == fieldName) {
          whichForm.elements[availableFieldName][indexArray[i][1]].disabled = false;
          whichForm.elements[availableFieldName][indexArray[i][1]].style.color = '#000000';
          indexArray[i][1] = null;
        }
   }
}

function find_duplicates(list) {
   var tmp = new Array(0);
   for (var i = 0; i < list.length; i++) {
        for (var j = i + 1; j < list.length; j ++) {
          if( list[i] == list[j] ) {
            tmp[tmp.length] = new Array(list[i], i, j);
         }
        }
   }
   return tmp;
}

function buildSelectedRegionsArray(whichForm, fieldName) {
   fieldName = 'selected_' + fieldName;
   var useSelectedField = 'use_' + fieldName;
   whichForm.elements[useSelectedField].value = 1;
   if ( ! selectedArrayWasBuild ) {
        selectedRegionsArray = new Array();
        for (var indexNum = whichForm.elements[fieldName].length - 1; indexNum >= 0; indexNum--) {
          selectedRegionsArray[indexNum] = whichForm.elements[fieldName][indexNum].text;
        }
        selectedArrayWasBuilt = true;
   }
}

function getMatch(field1, field2){
   if(field1.replace(/\u00a0/g,'') == field2.replace(/\u00a0/g,'')) {
        return 1;
   } else {
        return 0;
   }
}

function clearAvailableRegions() {
   for (var indexNum = document.geotargeting_form.availableareas.length - 1; indexNum >= 0; indexNum--) {
        document.geotargeting_form.availableareas[indexNum] = null;
   }
}

function findIndexNum(textToFind) {
   for ( var i=0; i<availableRegionsArray.length; i++ ) {
        if ( availableRegionsArray[i].replace(/\u00a0/g,'') == textToFind.replace(/\u00a0/g,'') ) {
          return i;
        }
   }
   return false;
}

function findIndexAvail(whichForm, availableFieldName, textToFind) {
   for ( var i=0; i<whichForm.elements[availableFieldName].length; i++ ) {
        if (whichForm.elements[availableFieldName][i].text.replace(/\u00a0/g,'') == textToFind.replace(/\u00a0/g,'') ) {
          if(whichForm.elements[availableFieldName][i].selected){
          } else {
            return i;
          }
        }
   }
   return false;
}


function disableCopy(whichForm, fieldName){ 
   var availableFieldName = 'available_' + fieldName;
   var selectedFieldName = 'selected_' + fieldName;
   var j = whichForm.elements[availableFieldName].length;
   if (whichForm.elements[availableFieldName][0].text.replace(/\u00a0/g,'') == 'All countries' && whichForm.elements[availableFieldName][0].selected){
      getSelectedRegions(whichForm, fieldName);
      return;
   }
   enableFullList(whichForm, fieldName);
   findFromIndexArray(whichForm, fieldName);
   var k = nonUniqueArray.length;
   for(var availIndex = 0; availIndex < j; availIndex ++){
      if(whichForm.elements[availableFieldName][availIndex].selected){
         for(var nonUnIndex = 0; nonUnIndex < k; nonUnIndex ++) {
            var getIndex = nonUniqueArray[nonUnIndex];
            if (whichForm.elements[availableFieldName][availIndex].text.replace(/\u00a0/g,'') == getIndex[0].replace(/\u00a0/g,'')) {
               var indexToDisable1 = getIndex[1];
               var indexToDisable2 = getIndex[2];
               //case 1: 1st duplicate selected
               if(getIndex[2] != availIndex && whichForm.elements[availableFieldName][getIndex[1]].selected){
                  whichForm.elements[availableFieldName][indexToDisable2].disabled = true;
                  whichForm.elements[availableFieldName][indexToDisable2].style.color = '#777777';
               }
               //case 2: 2nd duplicate selected
               if (getIndex[1] != availIndex && whichForm.elements[availableFieldName][getIndex[2]].selected) {
                  whichForm.elements[availableFieldName][indexToDisable1].disabled = true;
                  whichForm.elements[availableFieldName][indexToDisable1].style.color = '#777777';
               }
               //case 3: 2 of them are selected
               if(whichForm.elements[availableFieldName][getIndex[2]].selected && whichForm.elements[availableFieldName][getIndex[1]].selected){
                  whichForm.elements[availableFieldName][indexToDisable2].selected = false;
                  whichForm.elements[availableFieldName][indexToDisable2].disabled = true;
                  whichForm.elements[availableFieldName][indexToDisable2].style.color = '#777777';                     
               }                  
            }          
         }
      }
   }      
}
   
function addRegions(whichForm, fieldName) {
   var availableFieldName = 'available_' + fieldName;
   var selectedFieldName = 'selected_' + fieldName;
   var j = whichForm.elements[availableFieldName].length;
   var useSelectedField = 'use_selected_' + fieldName;
   whichForm.elements[useSelectedField].value = 1;
   for (var selIndex = 0; selIndex < j; selIndex++) {
      if (whichForm.elements[availableFieldName][selIndex].selected) {
         if (whichForm.elements[availableFieldName][selIndex].disabled == false) {
            if (whichForm.elements[availableFieldName][selIndex].text.replace(/\u00a0/g,'') == 'All countries') {
               if (whichForm.elements[selectedFieldName].length > 0 ) {
                  removeFullListFromSelected(whichForm, fieldName);
               }
               var newText  = whichForm.elements[availableFieldName][selIndex].text;
               var newValue = whichForm.elements[availableFieldName][selIndex].value;
               var newOption = new Option(newText, newValue)
               whichForm.elements[selectedFieldName][whichForm.elements[selectedFieldName].length] = newOption;
               addIndexArray(whichForm.elements[availableFieldName][selIndex].text, selIndex, fieldName); 
               whichForm.elements[availableFieldName][selIndex].disabled = true;
               whichForm.elements[availableFieldName][selIndex].style.color = '#777777';                
               whichForm.elements[availableFieldName][selIndex].selected = false;
               var newText  = whichForm.elements[availableFieldName][selIndex].text;
               var newValue = whichForm.elements[availableFieldName][selIndex].value;
               var newOption = new Option(newText, newValue)
               addIndexArray(whichForm.elements[availableFieldName][selIndex].text, selIndex, fieldName);
               getSelectedRegions(whichForm, fieldName);
               return;            
            } else {
               var newText  = whichForm.elements[availableFieldName][selIndex].text;
               var newValue = whichForm.elements[availableFieldName][selIndex].value;
               var newOption = new Option(newText, newValue)
               whichForm.elements[selectedFieldName][whichForm.elements[selectedFieldName].length] = newOption;
               whichForm.elements[availableFieldName][selIndex].disabled = true;
               whichForm.elements[availableFieldName][selIndex].style.color = '#777777';
               whichForm.elements[availableFieldName][selIndex].selected = false;
                 addIndexArray(whichForm.elements[availableFieldName][selIndex].text, selIndex, fieldName);
            }
         }
      }
   }
   getSelectedRegions(whichForm, fieldName);
}
      
function removeRegions(whichForm, fieldName) {
   var availableFieldName = 'available_' + fieldName;
   var selectedFieldName = 'selected_' + fieldName;
   buildSelectedRegionsArray(whichForm, fieldName);
   var j = whichForm.elements[selectedFieldName].length;
   var i = whichForm.elements[availableFieldName].length;
   for (var selIndex = j - 1; selIndex >= 0; selIndex--) {
      if (whichForm.elements[selectedFieldName][selIndex].selected) {
         if (whichForm.elements[selectedFieldName][selIndex].value == '') {
            removeFullListFromSelected(whichForm, fieldName);
            enableFullList(whichForm, fieldName);
         }
         removeIndexArray(whichForm, fieldName, whichForm.elements[selectedFieldName][selIndex].text);
         var findIndex = findFromDuplicate(whichForm, fieldName, whichForm.elements[selectedFieldName][selIndex].text);
         whichForm.elements[selectedFieldName][selIndex] = null;
      }
   }
   getSelectedRegions(whichForm, fieldName);
}
      
function getSelectedRegions(whichForm, fieldName) {
   var availableFieldName = 'available_' + fieldName;
   var selectedFieldName = 'selected_' + fieldName;
   var finalSelectedFieldName = 'final_selected_' + fieldName;
   whichForm.elements[finalSelectedFieldName].value = '';
   var selectedAll = false;
   for (var selIndex = whichForm.elements[selectedFieldName].length - 1; selIndex >= 0; selIndex--) {
      var newValue =  whichForm.elements[selectedFieldName][selIndex].value;
      if ( newValue == '' ) selectedAll = true;
      if ( whichForm.elements[finalSelectedFieldName].value == '' ) {
         whichForm.elements[finalSelectedFieldName].value = newValue;
      } else {
         whichForm.elements[finalSelectedFieldName].value += ',' + newValue;
      }
   }
   if ( selectedAll ) {
      whichForm.elements[finalSelectedFieldName].value = '';
      removeFullListFromSelected(whichForm, fieldName);
   }
}

function removeFullListFromSelected(whichForm, fieldName) {
   var availableFieldName = 'available_' + fieldName;
   var selectedFieldName = 'selected_' + fieldName;
   var selLen = whichForm.elements[selectedFieldName].length;
   for (var k = 0; k < selLen; k ++) {
      var text = whichForm.elements[selectedFieldName][k].text;
      removeIndexArray(whichForm, fieldName, text);
   }
   for (var j = whichForm.elements[selectedFieldName].length - 1; j != 0 ; j --) {
      if (whichForm.elements[selectedFieldName][0].text.replace(/\u00a0/g,'') != 'All countries'){
         whichForm.elements[selectedFieldName][0] = null;
      }
   }
   for ( var i=0;i<whichForm.elements[availableFieldName].length;i++) {
      whichForm.elements[availableFieldName][i].disabled = true;
      whichForm.elements[availableFieldName][i].style.color = '#777777';
   }
}

function enableFullList(whichForm, fieldName) {
   var availableFieldName = 'available_' + fieldName;
   var selectedFieldName = 'selected_' + fieldName;
   for ( var i=0; i<whichForm.elements[availableFieldName].length; i++) {
      if (whichForm.elements[availableFieldName][i].value != '') {
         whichForm.elements[availableFieldName][i].disabled = false;
         whichForm.elements[availableFieldName][i].style.color = '#000000';
      }
      if (whichForm.elements[availableFieldName][i].text.replace(/\u00a0/g,'') == 'All countries') {
         whichForm.elements[availableFieldName][i].disabled = false;
         whichForm.elements[availableFieldName][i].style.color = '#000000';
      }
   }
}

function toggle_more_targeting() {
   var more_targeting = document.getElementById('more_targeting');
   if (more_targeting.style.display != 'block') {
      more_targeting.style.display = 'block';
      
   }
}

function calculate_est_traffic() {
   document.getElementById('traffic_info').style.display = 'none';
   makeCalculate2();
   estTraffic();
}

function toggle_suboptions(which_category) {
   var category = which_category.parentNode.parentNode;
   var temp_ul_holder = category.getElementsByTagName('ul');
   var behavorialOptions = temp_ul_holder[0];
   var individualOptions = behavorialOptions.getElementsByTagName('input');
   if (which_category.checked) {
      behavorialOptions.style.display = 'block';
      if( !(individualOptions[0].checked) && !(individualOptions[1].checked) ) {
         individualOptions[0].checked = 'checked';
         individualOptions[1].checked = 'checked';
      }
   } else {
      behavorialOptions.style.display = 'none';
   }
}

function checkOptions(which_option) {
   if ( !(which_option.checked) ) {
      
      var view_click_options = which_option.parentNode.parentNode.parentNode;
      var individualOptions = view_click_options.getElementsByTagName('input');
      var what_category_these_options_are_in = view_click_options.parentNode;
      var allcBox = what_category_these_options_are_in.getElementsByTagName('input');
      var turn_off = 0;
      for (var i=0; i < individualOptions.length; i++ ) {
         if (individualOptions[i].checked) {
            turn_off++;
         }
      }
      if (turn_off == 0) {
         allcBox[0].checked = "";
         view_click_options.style.display = "none";
      }
   }
}






function reset_feedback_msg() {
   document.getElementById("create_retargeting_pixel_success").style.display = "none";
   document.getElementById("create_retargeting_pixel_failure").style.display = "none";
}

// END AJAX to fetch the retargeting pixel


function hideshowbehavorial() {
   if (!(document.getElementById('ad_type_image_cpm').checked) && !(document.getElementById('ad_type_image_cpc').checked)) {
      $('targeting_behavioral_category').style.display = 'none';
   } else if (document.getElementById('ad_type_image').checked){
          if( show_behavior_targeting ) {
           $('targeting_behavioral_category').style.display = 'block';
           }
   }
}

function init_behavorial_category() {
   var behavorial_categories_array = new Array();
   behavorial_categories_array = document.getElementsByClassName('behavorial_category');
   for (i = 0; i < behavorial_categories_array.length; i++) {
      toggle_suboptions(behavorial_categories_array[i]);
   }
}

function swapbidtype(bidtype) {
   if (bidtype == 'cpm') {
      document.getElementById('budget-box-cpm').style.display = 'block';
      document.getElementById('budget-box-cpc2').style.display = 'none';
      document.getElementById('payforclicks').className = '';
      document.getElementById('payforviews').className = 'active';
      document.getElementById('bid_type').value = 'cpm';
      update_bid(document.getElementById('cpm_bid'));
      update_budget(document.getElementById('cpm_budget'));
   } else if (bidtype == 'cpc') {
      document.getElementById('budget-box-cpm').style.display = 'none';
      document.getElementById('budget-box-cpc2').style.display = 'block';
      document.getElementById('payforclicks').className = 'active';
      document.getElementById('payforviews').className = '';
      document.getElementById('bid_type').value = 'cpc';
      update_bid(document.getElementById('cpc_bid'));
      update_budget(document.getElementById('cpc_budget'));
   }
}
   
function update_bid(bidbox) {
   document.getElementById('cpc_est').value = bidbox.value;
}
function update_budget(budgetbox) {
   document.getElementById('bud_est').value = budgetbox.value;
}

function adjust_retargeting_intro_size() {
   var retargeting_side_intro = document.getElementById('retargeting_side_intro');
   if (document.documentElement.clientHeight < 560) {
      var new_height = document.documentElement.clientHeight - 280;
      retargeting_side_intro.style.height = new_height + "px";
   } else {
      retargeting_side_intro.style.height = "auto";
   }
}


