var curRequest;
var timer;
window.onunload = clearRequests;
function clearRequests() {
   if (curRequest) curRequest.transport.abort();
}

function checkKeyPress(e) {
	var keynum = getKeyNum(e);
	if ( keynum == '46' || keynum == '8' || keynum == '190') { // delete, backspace or decimal
		saveValue(getTarget(e));
		mk_sv_btn(getTarget(e));
		return true;
	} else if ( keynum == '9' || keynum == '37' || keynum == '38' || keynum == '39' || keynum == '40' ) { //tab + arrows
		return true;
	} else if ( keynum == '63233' || keynum == '63234' || keynum == '63235' || keynum == '63236' || keynum == '63272') { //apple arrows + delete
		return true;		
	} else if ( keynum > 47 && keynum < 58) { //any non-number key
		saveValue(getTarget(e));
		mk_sv_btn(getTarget(e));
		return true;
	} else { //any number key
		return false;
	}
}

function checkKeyDown(e) {
	var keynum = getKeyNum(e);
	if ( keynum == '46' || keynum == '8' || keynum == '190') { // delete, backspace or decimal
		saveValue(getTarget(e));
		mk_sv_btn(getTarget(e));
		return true;
	}
}

function getKeyNum(e) {
	return (e.which) ? e.which : e.keyCode;
}

function mk_sv_btn(input) {
	if (!document.getElementById('save-'+input.id)) {
		//remove children if there's any in container
		//make save button
		var sv_span = document.createElement('span');
		var sv_txt = document.createTextNode('save');
		sv_span.appendChild(sv_txt);
		sv_span.className = "save-cancel-button";
		sv_span.id = 'save-'+input.id;
		addEvent(sv_span, 'click', saveThis, false);

		//make cancel button
		var ca_span = document.createElement('span');
		var ca_txt = document.createTextNode('cancel');
		ca_span.appendChild(ca_txt);
		ca_span.className = "save-cancel-button";
		ca_span.id = 'cancel-'+input.id;
		addEvent(ca_span, 'click', cancelThis, false);

		var container = document.getElementById('container-'+input.id);
		//if button container, empty; else make one
		if (container) {
			removeChildren(container);
		} else {
			//make button container
			container = document.createElement('span');
			container.className = "container";
			container.id = 'container-'+input.id;
			document.getElementById(input.id).parentNode.appendChild(container);
		}
		var ct_txt = document.createTextNode(' | ');
		container.appendChild(sv_span);
		container.appendChild(ct_txt);
		container.appendChild(ca_span);
	}
}

function removeChildren(elem) {
	child = elem.firstChild;
	while (elem !=null && child != null) {
		elem.removeChild(child);
		child = elem.firstChild;
	}
}

saved = new Array;
function saveValue(input) {
	if(!saved[input.id]) saved[input.id] = input.value;
}

function cancelThis(e) {
	var targetId = getTarget(e).id;
	var inputId = targetId.slice(7,targetId.length);
	document.getElementById(inputId).value = saved[inputId];
	saved[inputId] = null;
	var container = document.getElementById('container-'+inputId);
	container.parentNode.removeChild(container);
}

function getTarget(e) {
	return (e.srcElement) ?	e.srcElement : e.target;
}

function addEvent(elm, evType, fn, useCapture)
// cross-browser event handling for IE5+, NS6+ and Mozilla/Gecko
// By Scott Andrew
{
	if (elm.addEventListener) {
		elm.addEventListener(evType, fn, useCapture);
		return true;
	} else if (elm.attachEvent) {
		var r = elm.attachEvent('on' + evType, fn);
		return r;
	} else {
		elm['on' + evType] = fn;
	}
}

function hilite(area) {
  if ( area == "from_today" ) {
	 document.dateForm.timeperiod[0].checked=true;
	 document.dateForm.timeperiod[1].checked=false;
	 document.getElementById('from_today').style.border = '1px solid #999999';
	 document.getElementById('date_range').style.border = '1px solid #d6ebf9';
	 document.getElementById('from_today').style.backgroundColor = '#eff7fc';
	 document.getElementById('date_range').style.backgroundColor = '#d6ebf9';
  }
  if ( area == "date_range") {
	 document.dateForm.timeperiod[0].checked=false;
	 document.dateForm.timeperiod[1].checked=true;
	 document.getElementById('from_today').style.border = '1px solid #d6ebf9';
	 document.getElementById('date_range').style.border = '1px solid #999999';
	 document.getElementById('from_today').style.backgroundColor = '#d6ebf9';
	 document.getElementById('date_range').style.backgroundColor = '#eff7fc';
  }
}

function selectPeriod(area) {
   if ( area == "from_today" ) {
    document.dateForm.timeperiod[0].checked=true;
    document.dateForm.timeperiod[1].checked=false;
   }
   if ( area == "date_range") {
    document.dateForm.timeperiod[0].checked=false;
    document.dateForm.timeperiod[1].checked=true;
   }
}
function chkAll(frm, arr, mark) {
 for (i = 0; i <= frm.elements.length; i++) {
  try{
	if(frm.elements[i].name == arr && !frm.elements[i].disabled) {
	  frm.elements[i].checked = mark;
	}
  } catch(er) {}
 }
}

function saveThis(e){
	var targetId = getTarget(e).id;
	var inputId = targetId.slice(5,targetId.length);
	var target = 'container-'+inputId;
	var url = 'ajax-simple.php';
	var pars = 'inputid='+inputId+'&inputvalue='+ $F(inputId);
	document.getElementById(inputId).disabled = 'disabled';
	$(target).innerHTML = 'saving...';
	var myAjax = new Ajax.Updater(target, url, { method: 'get',	parameters: pars, evalScripts: true});
}

function saveThisOk(inputId, value, ok) {
	input = document.getElementById(inputId);
	input.disabled = '';
	input.value = value;
	saved[inputId] = value;
	if (inputId.slice(0,3) == 'bid') { //bid input
		if (ok != 'none') {
         marketOk(inputId, ok);
	   }
   }
}

function marketOk(inputId, ok) {
	if (ok == 'none') {
      return;
   }
   try { 
      var input = document.getElementById(inputId);
	} catch (e) {}
      var marketId = 'market-' + inputId.slice(4, inputId.length);
      var market = document.getElementById(marketId);
      if (ok) {
         try {
		      input.parentNode.className = 'bid-ok';
		   } catch (e) {}
         market.className = 'market-ok';
	   } else {
         try {
		      input.parentNode.className = 'bid-low';
		   } catch (e) {}
         market.className = 'market-low';
	   }
}
function resumeAd(adNum, adType, channel, version, bidColumn) {
   var target = 'status-' + adNum + '-' +adType;
   var inputId = 'bid-' + adNum + '-' + adType;
   var url = 'ajax-simple.php';
   if (bidColumn == 'available') {
	   var pars = 'inputid='+inputId+'&inputvalue='+ $F(inputId) + '&resume='+adNum+'&channel='+channel+'&version='+version;
   } else {
      var pars = 'inputid='+inputId+'&inputvalue=NA&resume='+adNum+'&channel='+channel+'&version='+version;
   }
   $(target).innerHTML = '<small>resuming</small>';
	var myAjax = new Ajax.Updater(target, url, { method: 'get',	parameters: pars, evalScripts: true});
}

function resumeAdOk(adNum, bidOk, adStat) {
   try {	
      document.getElementById('bid-' + adNum).disabled = '';
	   document.getElementById('bud-' + adNum).disabled = '';
   } catch (e) {}   
   if (adStat == 'Approved' || adStat == 'Finished' || adStat == 'Unknown' || adStat == 'Pending Review') {
   } else {
      document.getElementById('status-'+ adNum).className = 'status-active';
   }
   marketOk('bid-' + adNum, bidOk);
}

function resumeAdOkNew(adNum, bidOk, adStat) {
   try {
      document.getElementById('bid-' + adNum).disabled = '';
      document.getElementById('bud-' + adNum).disabled = '';
   } catch (e) {}
   switch(adStat) {
      case 'Pending Review':
         document.getElementById('status-'+ adNum).className = 'status-pending-review';
         break;
      case 'Active':
         document.getElementById('status-'+ adNum).className = 'status-running';
         break;
      case 'Finished':
         document.getElementById('status-'+ adNum).className = 'status-finished';
         break;
      case 'Approved':
         document.getElementById('status-'+ adNum).className = 'status-approved';
         break;
      default:
         document.getElementById('status-'+ adNum).className = '';
   }
   marketOk('bid-' + adNum, bidOk);
}

function setHeadline(headline, banner_id) {
   var target = "headline-"+banner_id;
   $(target).innerHTML = headline;
}

function closeNotification() {
	var url = 'aj_close_notify.php';
	var myAjax = new Ajax.Request( url, { method: 'post', onComplete: closeNotificationOk });
}
function closeNotificationOk(req) {
	var box = document.getElementById('notify');
	box.parentNode.removeChild(box);
}
var lineCount = 0;

function getCMP(banner_id, page) {
	var cmp_string = "$0.30";
	var status = true;
	var target = 'aj_result';
	var url = 'aj_load_cmp.php';
	var pars = 'banner_id=' + banner_id + '&page=' + page;
	curRequest = new Ajax.Updater(target, url, { method: 'post', parameters: pars, evalScripts: true});
   timer = setTimeout("requestTimeout('" + banner_id + "')",10000);
}
function requestTimeout(banner_id) {
   if (curRequest) curRequest.transport.abort();
   showCMP(banner_id, '-', false);
}

function getSitesZone() {
   try {
      var banner_id = document.getElementById('banner_id').value;
      var zone_id_str = document.getElementById('zone_id_str').value;
      getSitesCMP(banner_id, zone_id_str, 'manage_campaign_sites');
   } catch (e) {
      zone_id_str = '';
   }
}

var banners = new Array();
function getBanners() {
   var trs = document.getElementsByTagName('tr');
   for (i = 0; i < trs.length; i ++) {
      try {
         var tr_banner = trs[i].id;
      } catch (e) {
         tr_banner = '';
      }
      if (tr_banner.indexOf('ad-') > -1) {
         var banner_arr = tr_banner.split('-');
         var banner_id = banner_arr[1];
         banner_id = parseInt(banner_id);
         if (banner_id) {
            banners.push(banner_id);
         }
      }
   }
  getCMP(banners[0],'manage_campaigns');
}

function getZones() {
   try {
      var zone_id = document.getElementById('zone_id');
      var zone_id_str = document.getElementById('zone_id_str');
      if (zone_id_str.value) {
         getZonesCMP(zone_id_str.value, 'set_budget');
      }
   } catch (e) {}
}

function getSitesCMP(banner_id, zone_id_str, page) {
   var cmp_string = 'N/A';
   var status = true;
   var target = 'aj_result';
   var url = 'aj_load_cmp.php';
   var pars = 'banner_id=' + banner_id + '&zone_id_str=' + zone_id_str + '&page=' + page;
   pars += getZoneBids();   
   curRequest = new Ajax.Updater(target, url, { method: 'post', parameters: pars, evalScripts: true});
}

function getZoneBids() {
   var inputs = document.getElementsByTagName('input');
   var param_str = '';
   for (var i = 0; i < inputs.length; i++ ) {
      try {
         if (inputs[i].className == 'zone_bids') {
            param_str += '&' + inputs[i].id + '=' + inputs[i].value;
         }
      } catch (e) {}
   }
   return param_str;
}

function getZonesCMP(zone_id_str, page) {
   var cmp_string = 'N/A';
   var status = true;
   var target = 'aj_result';
   var url = 'aj_load_cmp.php';
   var pars = 'page=' + page;
   pars = gather_targeting() + '&' + pars;
   var myAjax = new Ajax.Updater(target, url, { method: 'post', parameters: pars, evalScripts: true});
}

function showCMP(banner_id, cmp_string, notify) {
   clearTimeout(timer);
	if (document.getElementById('ad-'+banner_id)) {
      var row = document.getElementById('ad-'+banner_id);
	   var tds = row.getElementsByTagName('td');
	   tds[11].innerHTML = cmp_string;
	   if (notify) {
	      tds[11].className = 'market-low';
	      tds[12].className = 'bid-low';
	   }
   }
   if (banners.length>1) {
      banners.shift();
      getCMP(banners[0], 'manage_campaigns');
   }
}

function showSitesCMP(zone_id, cmp_string, notify) {
   var row = document.getElementById('ad-'+zone_id);
   var tds = row.getElementsByTagName('td');
   tds[3].innerHTML = cmp_string;
   if (notify) {
      tds[3].className = 'market-low';
      tds[4].className = 'bid-low';
   }
}

function showZonesCMP(zone_id, cmp_string, notify, ad_type, min_bid, use_min_bid) {
   var row = document.getElementById('tr_'+zone_id);
   var tds = row.getElementsByTagName('td');
   var bid_input = document.getElementById('bid_'+ zone_id);
   if (use_min_bid) {
      bid_input.value = min_bid;
   } else {
      bid_input.value = cmp_string;	
   }

   if (cmp_string == '-') {
   tds[1].innerHTML = cmp_string;
   } else {
      tds[1].innerHTML = '$' + cmp_string + ' ' + ad_type;
   }
}

