/* $Id: lib.js 339 2009-09-07 06:14:54Z flaviovs $ */

function onchangeZoneFormat(el)
{
     if ( el.options[el.selectedIndex].value.substring(0, 1) == 'F' )
     {
	  xDisplay('fixedzone', 'block');
	  xDisplay('expandablezone', 'none');

	  var w, h;

	  switch ( el.options[el.selectedIndex].value.substring(2) )
	  {
	  case '1': w = 728; h = 90; break;
	  case '2': w = 468; h = 60; break;
	  case '3': w = 234; h = 60; break;
	  case '4': w = 125; h = 125; break;
	  case '5': w = 120; h = 600; break;
	  case '6': w = 160; h = 600; break;
	  case '7': w = 180; h = 150; break;
	  case '8': w = 120; h = 240; break;
	  case '9': w = 300; h = 250; break;
	  case '10': w = 250; h = 250; break;
	  case '11': w = 336; h = 280; break;
	  }
	  xWidth('fixedzonesample', w);
	  xHeight('fixedzonesample', h);
	  xGetElementById('fixedzonesample').style.lineHeight = h + 'px';
     }
     else
     {
	  xDisplay('fixedzone', 'none');
	  xDisplay('expandablezone', 'block');
     }
}

function fieldVal(f, fld)
{
     return f.elements["fe[" + fld + "]"] ? f.elements["fe[" + fld + "]"].value : null;
}


function fieldChecked(f, fld)
{
     return f.elements["fe[" + fld + "]"] ? f.elements["fe[" + fld + "]"].checked : false;
}

function colorVal(v)
{
     return v ? (v.substring(0, 1) == '#' ? v.substring(1) : v) : '';
}

function fixedFormat2WxH(ffid)
{
     switch (ffid)
     {
     case '1': return "728x90";
     case '2': return "468x60";
     case '3': return "234x60";
     case '4': return "125x125";
     case '5': return "120x600";
     case '6': return "160x600";
     case '7': return "180x150";
     case '8': return "120x240";
     case '9': return "300x250";
     case '10': return "250x250";
     case '11': return "336x280";
     }
     return "0x0";
}

function updateCode()
{
     var code, src, dhost, dhostval, t, custclr;

     f = xGetElementById("zonecode");

     fmt = fieldVal(f, "format");

     dhostval = fieldVal(f, "dhost");
     dhost = dhostval ? dhostval : "d.acalama.com";

     src = "http://" + dhost + "/emit.js";

     code = "<sc" + "ript type=\"text/javascript\"><!--\n"
	  + "_ac_id = \""
	  + fieldVal(f, "pacid") + "-"
	  + fieldVal(f, "sid") + "-"
	  + fieldVal(f, "zid") + "-"
	  + fmt
	  + "\";\n";

     if ( fmt == 'X' )
	  code += "_ac_xfmt = \"" + fieldVal(f, "xfmt") + "\";\n";
     else
	  code += "_ac_xfmt = \"" + fixedFormat2WxH(fieldVal(f, "ffid"))
	       + "\";\n";

     custclr = xGetElementById("custom_colors");
     if ( !custclr || custclr.checked )
	  color_spec = colorVal(fieldVal(f, "adbg")) + "-"
	       + colorVal(fieldVal(f, "adtx")) + "-"
	       + colorVal(fieldVal(f, "adbd")) + "-"
	       + colorVal(fieldVal(f, "adti")) + "-"
	       + colorVal(fieldVal(f, "addu"));
     else
	  color_spec = "----";

     code += "_ac_fmt = \""
	  + color_spec + "-"
	  + (fieldChecked(f, "adtib") ? '1' : '0') + "-"
	  + (fmt == 'F' && fieldChecked(f, "adtiu") ? '1' : '0') + "-"
	  + (fmt == 'F' && fieldChecked(f, "adduu") ? '1' : '0')
	  + "\";\n";

     if ( dhostval )
	  code += "_ac_dhost = \"" + dhostval + "\";\n";
     code += "--></sc" + "ript>\n"
	  + "<script src=\"" + src + "\"\n"
	  + " type=\"text/javascript\"></script>";

     ta = xGetElementById("code");
     ta.value = code;
}

function updateSampleAd()
{
     var ad, tit, txt, u;
     var adbg, adbd, adti, adtx, addu, fmt, custclr;

     fmt = fieldVal(f, "format");

     ad = xGetElementById("code-sample-text-ad");
     tit = xGetElementById("code-sample-text-ad-title");
     txt = xGetElementById("code-sample-text-ad-text");
     u = xGetElementById("code-sample-text-ad-url");


     adbg = xGetElementById("adbg");
     adbd = xGetElementById("adbd");
     adti = xGetElementById("adti");
     adtx = xGetElementById("adtx");
     addu = xGetElementById("addu");
     custclr = xGetElementById("custom_colors");

     if ( !custclr || custclr.checked )
     {
	  ad.style.background = adbg.value;
	  ad.style.border = adbd.value == '' ? '' : '1px solid ' + adbd.value;
	  tit.style.color = adti.value;
	  txt.style.color = adtx.value;
	  u.style.color = addu.value;
     }
     else
	  ad.style.background = ad.style.border = tit.style.color
	       = txt.style.color = u.style.color = '';

     tit.style.fontWeight = xGetElementById("adtib").checked ? "bold" : "normal";
     if ( fmt == 'F' )
     {
	  tit.style.textDecoration = xGetElementById("adtiu").checked ? "underline" : "none";
	  u.style.textDecoration = xGetElementById("adduu").checked ? "underline" : "none";
     }
}

function getElementValue(el)
{
     var id;

     id = xGetElementById();
     return id ? id.value : '';
}

function updateAd()
{
     var tit1, tit2, txt1, txt2, txt3, txt4, u, fmtel, fmt, tit, txt;

     tit1 = xGetElementById("title1");
     tit2 = xGetElementById("title2");
     txt1 = xGetElementById("text1");
     txt2 = xGetElementById("text2");
     u = xGetElementById("display_url");
     fmtel = xGetElementById("format");
     if ( !fmtel )
     {
	  if ( document.buyad )
	       // Ad buy form
	       fmt = fieldVal(document.buyad, "ad_format");
	  else
	       fmt = 'S';
     }
     else
	  fmt = fmtel.options[fmtel.selectedIndex].value;

     tit = tit1.value;
     if ( fmt == 'X' && tit2 )
	  tit += ' ' + tit2.value;
     xInnerHtml("sample-text-ad-title", tit);

     txt = txt1.value + ' ' + txt2.value;
     if ( fmt == 'X' )
     {
	  txt3 = xGetElementById("text3");
	  txt4 = xGetElementById("text4");
	  if ( txt3 )
	       txt += ' ' + txt3.value;
	  if ( txt4 )
	       txt += ' ' + txt4.value;
     }
     xInnerHtml("sample-text-ad-text", txt);

     if ( u.value != 'http://' )
	  xInnerHtml("sample-text-ad-url", u.value);
}

function onchangeAdFormat(el)
{
     if ( el.options[el.selectedIndex].value == 'S' )
     {
	  xDisplay("form-title2", "none");
	  xDisplay("form-text3", "none");
	  xDisplay("form-text4", "none");
     }
     else
     {
	  xDisplay("form-title2", "block");
	  xDisplay("form-text3", "block");
	  xDisplay("form-text4", "block");
     }
     updateAd();
}

function setAdURL()
{
     var du, u;

     du = xGetElementById("display_url");
     u = xGetElementById("url");

     if ( du && u )
     {
	  if ( du.value.substring(0, 7) == "http://" )
	       du.value = du.value.substring(7);

	  if (u.value == 'http://')
	       u.value += du.value;
	  else if ( u.value == '' )
	       u.value = 'http://' + du.value;
     }

     updateAd();

}

function showRejectionReason(el)
{
     xDisplay("reason-div-" + el.id.substring(9),
	      el.checked ? "none" : "block");
}

function updateColorPickerBox(el)
{
     var cp;

     cp = xGetElementById("cp-form-" + el.id);
     if ( cp )
     {
	  cp.style.background = el.value;
	  cp.style.color = '#' + getCompColor(el.value);
     }
}

function getCompColor(c)
{
     var r, g, b;
     r = parseInt(c.substring(1, 3), 16);
     g = parseInt(c.substring(3, 5), 16);
     b = parseInt(c.substring(5, 7), 16);
     return (((0.3 * r) + (0.59 * g) + (0.11 * b)) <= 128)
	  ? "ffffff" : "000000";
}

function onchangeStatsPeriod()
{
     p = xGetElementById("p");
     xDisplay('stats-period',
	      p.options[p.selectedIndex].value == 'dt' ? 'block' : 'none');
}

function onclickCampaignStart()
{
     el = xGetElementById('opst-none'); // document.newcampaign.elements['fe[stop-none]'];
     xDisplay('campaign-start-date',
	      el.checked ? 'none' : 'block');
}

function displayClass(cl, val)
{
     els = xGetElementsByClassName(cl);
     for (i = 0; i < els.length; i++)
          xDisplay(els[i], val);
}

function hideDlg()
{
     displayClass('dlg', "none");
}

function getYPosition(obj)
{
     var curtop = 0;

     if (obj.offsetParent)
     {
	  while (obj.offsetParent)
	  {
	       curtop += obj.offsetTop
		    obj = obj.offsetParent;
	  }
     }
     else if (obj.y)
	  curtop += obj.y;

     return curtop;
}

function scrollPos()
{
     var pos = document.body.scrollTop;
     if (pos == 0)
     {
	  if (window.pageYOffset)
	       pos = window.pageYOffset;
	  else
	       pos = (document.body.parentElement)
		    ? document.body.parentElement.scrollTop : 0;
     }
     return pos;
}

function makeVisible(el)
{
     var top, elh, clh, sp, s;

     top = xOffsetTop(el);
     elh = xHeight(el);
     sp = scrollPos();
     clh = xClientHeight();

     if ( (top + elh) > (sp + clh) )
     {
	  xa = new xAnimation(window);
	  if ( elh < clh )
	       xAniScroll(xa, xLeft(el), (top + elh) - clh + 5, 200);
	  else
	       xAniScroll(xa, xLeft(el), top - 5, 200);
     }
}

function showDlg(id)
{
     var el, shown;

     el = xGetElementById(id);
     if ( !el ) return;

     shown = (el.style.display == 'block');

     hideDlg();
     if ( !shown )
     {
          xDisplay(id, 'block');
	  makeVisible(el);
     }
}

function onchangePaymentType()
{
     pt = xGetElementById("payment_type");
     if ( !pt ) return;

     xDisplay('payment-bank', 'none');
     xDisplay('payment-email', 'none');
     switch ( pt.options[pt.selectedIndex].value )
     {
     case 'D':
	  xDisplay('payment-bank', 'block');
	  break;
     case 'B':
     case 'P':
	  xDisplay('payment-email', 'block');
	  break;
     }
}

function uncheckZonePrices(f)
{
     var i, el;

     if ( fieldVal(f, 'passcode') == '' ) return;

     for (i = 0; i < f.elements['fe[zpid]'].length; i++)
     {
	  el = f.elements['fe[zpid]'][i].checked = false;
     }
}

function addSubmit(form, func)
{
     var oldSubmit = form.onsubmit;

     if (typeof(oldSubmit) != 'function')
	  form.onsubmit = func;
     else
	  form.onsubmit = function() {
	       return oldSubmit() && func();
	  }
}

function elementHasChanged(el)
{
     var changed;

     changed = false;

     switch ( el.type.toLowerCase() )
     {
     case 'text':
     case 'textarea':
     case 'password':
	  changed = (el.value != el.defaultValue);
	  break;

     case 'radio':
     case 'checkbox':
	  changed = (el.checked != el.defaultChecked);
	  break;

     case 'select-one':
	  if ( el.selectedIndex == -1 )
	       break;

	  var def;
	  for (var i = 0; i < el.options.length; i++)
	  {
	       if ( el.options[i].defaultSelected )
	       {
		    changed = (el.options[i].value != el.options[el.selectedIndex].value);
		    break;
	       }
	  }
	  break;

     case 'select-multiple':
	  if ( el.selectedIndex == -1 )
	       break;

	  for (var i = 0; i < el.options.length; i++)
	  {
	       if ( el.options[i].selected != el.options[i].defaultSelected )
	       {
		    changed = true;
		    break;
	       }
	  }
	  break;
     }

     return changed;
}


function formHasChanged(f)
{
     var i, changed;

     changed = false;
     for (i = 0; i < f.elements.length; i++)
     {
	  if ( f.elements[i].type && elementHasChanged(f.elements[i]) )
	  {
	       changed = true;
	       break;
	  }
     }
     return changed;
}

function formsHasChanged()
{
     var i, changed;

     changed = false;
     for (i = 0; i < document.forms.length; i++)
     {
	  if ( document.forms[i].checkSubmit
	       && formHasChanged(document.forms[i]) )
	  {
	       changed = true;
	       break;
	  }
     }

     return changed;
}

function checkChangedForms(e)
{
     var message = null;

     if ( !e && window.event )
	  e = window.event;

     var changed = formsHasChanged();

     if ( !is_submit && changed && e )
	  e.returnValue = 'As alterações no formulário serão perdidas.';
}

function attachSubmitWarning(id)
{
     var f;

     f = xGetElementById(id);
     if ( !f )
	  return;

     f.checkSubmit = true;
     addSubmit(f, function() {
	  is_submit = true;
	  return true;
     });
}

function showTab(id)
{
     var i, els;

     displayClass('tab', 'none');
     xDisplay(id, 'block');

     els = xGetElementsByClassName('tab-handler');
     for (i = 0; i < els.length; i++)
     {
	  if ( xHasClass(els[i], id + "-handler") )
	       xAddClass(els[i], "active");
	  else
	       xRemoveClass(els[i], "active");
     }
}

function onchangeFillType()
{
     var el;

     el = xGetElementById("fill_type");

     displayClass('fill-type-extra', 'none');

     switch ( el.options[el.selectedIndex].value )
     {
     case 'C':
	  xDisplay('zone-fill-html-code', 'block');
	  break;
     case 'H':
	  xDisplay('zone-house-ad', 'block');
	  break;
     case 'U':
	  xDisplay('zone-fill-url', 'block');
	  break;
     }
}

function progressWait(m)
{
     var msg, ob;

     msg = (m ? m : "Aguarde...")
	  + '<br /><img src="img/progressbarbox.gif" alt="Espere" />';

     ob = xGetElementById("wait");
     if ( !ob )
     {
	  ob = xCreateElement("div");
	  ob.id = "mask";
	  xAppendChild(xGetElementById("container"), ob);

	  ob = xCreateElement("div");
	  ob.id = "wait";
	  xAppendChild(xGetElementById("container"), ob);
     }

     xInnerHtml("wait", msg);
}

function progressDone()
{
     xDisplay("wait", "none");
     xDisplay("mask", "none");
}

function onchangeRefLink(el)
{
     if ( el.options[el.selectedIndex].value == '' )
	  xDisplay('form-url2', 'block');
     else
     {
	  xDisplay('form-url2', 'none');
	  el.form.submit();
     }
}

function isNumeric(s)
{
     var nums = "0123456789", i;
     for (i = 0; i < s.length; i++)
	  if ( nums.indexOf(s.charAt(i)) == -1 )
	       return false;
     return true;
}

function checkVBVBin(f)
{
     var w, v, ok;


     v = f.NumeroCartao.value;
     if ( v.substring(0, 1) != '4'
	  || v.length != 6
	  || !isNumeric(v) )
     {
	  alert('Por favor, informe os 6 primeiros números do seu cartão de crédito VISA corretamente.');
	  return false;
     }

     w = window.open('', 'VISANET', 'toolbar=0,location=0,directories=0,status=1,menubar=0,scrollbars=1,resizable=0,screenX=0,screenY=0,left=0,top=0,width=765,height=460');
     if ( w )
	  w.focus();

     return true;
}

function setCursor(c)
{
     document.body.style.cursor = c;
}

function getCursor()
{
     return document.body.style.cursor;
}

function _showWizardPage(curid, newid)
{
     var el, shown;

     el = xGetElementById(newid);
     if ( !el ) return;

     shown = (el.style.display == 'block');

     displayClass('wizard-page', "none");
     displayClass('wizard-controls', "none");

     if ( !shown )
     {
	  xDisplay(newid, 'block');
	  xDisplay(newid + '-controls', 'block');
     }

     var ct;
     ct = xGetElementById(curid + "-prev");
     if ( ct )
	  ct.disabled = false;
     ct = xGetElementById(curid + "-next");
     if ( ct )
	  ct.disabled = false;

     els = xGetElementsByClassName("active-wiz-bc");
     for (i = 0; i < els.length; i++)
          xRemoveClass(els[i], "active-wiz-bc");
     xAddClass("wiz-bc-" + newid, "active-wiz-bc");

     setCursor(wiz_cursor);
}

function showWizardPage(curid, newid)
{
     wiz_cursor = getCursor();
     setCursor("wait");
     ct = xGetElementById(curid + "-prev");
     if ( ct )
	  ct.disabled = true;
     ct = xGetElementById(curid + "-next");
     if ( ct )
	  ct.disabled = true;
     setTimeout("_showWizardPage('" + curid + "', '" + newid + "')", 300);
}

window.onbeforeunload = checkChangedForms;

is_submit = false;
