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 (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) { }
    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';
	getRetargetingPixel($F('retargetingPixelsExisting'),0);
    }
}

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;
   } 
}

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 (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);
	}
	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);
   }
}

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";
		}
	}
}

// AJAX to fetch the retargeting pixel

function getRetargetingPixel(pixelselected, createnew) {

   var getRetargetingPixelURL = "/mb/aj_getRetargetingPixel.php";
   var params =   "pixelselected=" + pixelselected + "&createnew=" +  createnew;
	if (createnew) {
		retargetingCodebox = document.getElementById('retargetingPixelCodeNew'); 
	} else {
		retargetingCodebox = document.getElementById('retargetingPixelCodeExisting'); 
	}
	retargetingCodebox.value = 'loading...';
	retargetingPixelReq = new Ajax.Request( getRetargetingPixelURL, { method: 'get', parameters: params, onSuccess: getRetargetingPixelSuccess, onFailure: getRetargetingPixelFailed});
}

function getRetargetingPixelFailed() {
	if(document.getElementById("create_retargeting_pixel_failure")) {
	   document.getElementById("create_retargeting_pixel_failure").style.display = "block";
    }
    retargetingCodebox.value = 'Oops, there seem to be a problem retrieving your retargeting pixel. Please try again.';
}
function getRetargetingPixelSuccess(response) {	
	var responses_array = new Array();
	if(document.getElementById("create_retargeting_pixel_success")) {
	   document.getElementById("create_retargeting_pixel_success").style.display = "block";
    }
	responses_array = response.responseText.split('*****',2);
	retargetingCodebox.value = responses_array[0];
	pixelId = document.getElementById('pixel_id');
   pixelId.value = responses_array[1]; 
}

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').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-cpc').style.display = 'none';
			document.getElementById('payforclicks').className = 'off';
			document.getElementById('payforviews').className = '';
			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-cpc').style.display = 'block';
			document.getElementById('payforclicks').className = '';
			document.getElementById('payforviews').className = 'off';
			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";
   }
}

