String.prototype.stripTags = function () {
   return this.replace(/<([^>]+)>/g,'');
};
String.prototype.htmlEntities = function () {
   return this.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');
};

function gebi(elid) {
  return document.getElementById(elid) || false;  //instead of null
}

function fixeml() {
  var subject, i, emla, neweml;
  var emlregex = /"(.+)\sat\s(.+)"/;
  var spans = document.getElementsByTagName("span");
  for(i=0;i<spans.length;i++) {
    if(spans[i].className.indexOf("emailaddress") > -1) {
      subject='';
      if(spans[i].title!=='') {
        subject='?subject='+spans[i].title;
        //hide hover hint
        spans[i].title = '';
      }
      emla=emlregex.exec(spans[i].innerHTML);
      if(emla!==null && emla.length===3) {
        neweml=emla[1]+String.fromCharCode(64)+emla[2];
        spans[i].innerHTML='<a href="mailto:'+neweml+subject+'">'+neweml+'</a>';
      }
    }
  }
} //fixeml()

function showQotd() {
  var b=gebi('banner');
  if(!b) {return;}
  var bannerwidth=b.offsetWidth;
  var docwidth=0;
  if (window.innerWidth) {
    //if browser supports window.innerWidth
    docwidth=window.innerWidth;
  }
  else if (document.all) {
    //else if browser supports document.all (IE 4+)
    docwidth=document.documentElement.clientWidth;
  }
  if(docwidth<1) {return;}
  var availablepercent=(docwidth-bannerwidth)/docwidth*70;
  if(availablepercent>25) {
    var qotddiv=gebi('qotd');
    if(!qotddiv) {return;}
    qotddiv.style.width=availablepercent+'%';
    qotddiv.style.display='block';
    if(qotddiv.offsetWidth > 456) {
      if(qotddiv.innerHTML.length < 234) {
        qotddiv.style.width=456+'px';
      }
    }
    var qh=gebi('qotdholder');
    if(qh) {
      b.parentNode.insertBefore(qotddiv,qh);
      qotddiv.style.visibility='visible';
    }
  }
} //showQotd()

function blurMe() {
  this.blur();
}
function addBlurToLinks() {
  var i,linklist=document.getElementsByTagName("a");
  for(i=0;i<linklist.length;i++) {
    linklist[i].onmouseup=blurMe;
  }
  var inputlist=document.getElementsByTagName("input");
  for(i=0;i<inputlist.length;i++) {
    if(inputlist[i].className.indexOf("submitbtn")>-1) {
      inputlist[i].onmouseup=blurMe;
    }
  }
} //addBlurToLinks()
function gotourl(url) {
  document.location=url;
}
/*****************
 * modified by John Homerstad January 2009
 * to directly take an object rather than an id
 * modified by John Homerstad May 2010
 * to operate on 'this'
 * Script by hscripts.com
 * copyright of HIOX INDIA
 * Free javascripts @ http://www.hscripts.com
 *****************/
function fnDeSelect() {
  if (document.selection) {
    document.selection.empty();
  }
  else if (window.getSelection) {
    window.getSelection().removeAllRanges();
  }
}
function fnSelectThis() {
  var range;
  fnDeSelect();
  if (document.selection) {
    range = document.body.createTextRange();
    range.moveToElementText(this);
    range.select();
  }
  else if (window.getSelection) {
    range = document.createRange();
    range.selectNode(this);
    window.getSelection().addRange(range);
  }
}
function blogCommentSubmit(frm) {
  var i;
  for(i=0;i<frm.elements.length;i++) {
    frm.elements[i].value = frm.elements[i].value.stripTags().htmlEntities();
  }
}
function addBlogCodeEvents(bw) {
  var pretagarray=[],codedivarray=[],i;
  pretagarray=bw.getElementsByTagName('pre');
  for(i=0;i<pretagarray.length;i++) {
    pretagarray[i].ondblclick=fnSelectThis;
  }
  //old blog codediv areas
  codedivarray=bw.getElementsByTagName('div');
  for(i=0;i<codedivarray.length;i++) {
    if(codedivarray[i].className==='codediv') {
      codedivarray[i].ondblclick=fnSelectThis;  //replaces the hardcoded fnSelect(this);
    }
  }
} //addBlogCodeEvents(bw)
function reload_image() {
  gebi("rndimg").src+=1;
}
function fixReloadImg(ri) {
  var rt=gebi('reloadtext');
  if(rt) {rt.style.display='inline';}
  ri.onclick=reload_image;
  ri.style.cursor='pointer';
}
function clearValueIfDefault() {
  if(this.value===this.defaultValue) {
    this.value='';
  }
}
function addEvents() {
  var qotddiv=gebi('qotd'),b=gebi('banner'),st=gebi('searchtext'),bw=gebi('wrapper'),ri=gebi('randomImg'),bs=gebi('blogsearch');
  if(b) {
    b.onclick=function() {gotourl('http://www.SlashbackAssociates.com/');};
  }
  if(st) {
    st.onfocus=clearValueIfDefault;
  }
  if(qotddiv) {
    qotddiv.onclick=function() {gotourl('/quotes.html');};
  }
  addBlurToLinks();
  if(bs) {
    bs.onfocus=clearValueIfDefault;
  }
  if(ri) {
    fixReloadImg(ri);
  }
  if(bw) {
    addBlogCodeEvents(bw);
  }
} //addEvents()

function setFaqTarget(id) {
  var i,faqdivs,fc=gebi('faq-container');
  if(fc) {
    faqdivs=fc.getElementsByTagName("div");
    for(i=0;i<faqdivs.length;i++) {
      if(faqdivs[i].className==='faqtarget highlightbox') {
        faqdivs[i].className='faq';
      }
    }
    gebi(id).className='faqtarget highlightbox';
  }
} //setFaqTarget(id)


function isDonate(){
  return document.URL.indexOf("donate")>-1;
}
// store
function isStore(){
  return document.URL.indexOf("store")>-1;
}

var vpricealert, vcalcprice, vttqtyform, vttqtyid;
function calculate() {
  var qty=vttqtyid.value, i;
  vpricealert.innerHTML='';
  vcalcprice.innerHTML='';
  if(qty<1) {
    return false;
  }
  var pricealert='', pricetot='', priceupgrade='';
  if(qty<prices[0][0]) {
    pricetot=qty+' license: $'+qty*priceforone;
  }
  else if(qty>=prices[prices.length-1][0]) {
    pricetot=qty+' licenses: $'+qty*prices[prices.length-1][1];
  }
  else {
    for(i=0;i<prices.length-1;i++) {
      if(qty>=prices[i][0] && qty<prices[i+1][0]) {
        var thisprice = (qty*prices[i][1]).toFixed(2);
        var upgprice = (prices[i+1][0]*prices[i+1][1]).toFixed(2);
        if(qty*prices[i][1] > prices[i+1][0]*prices[i+1][1]) {
          pricealert='The price for '+prices[i+1][0]+' licenses ($'+upgprice+') is less than the price for '+qty+' licenses ($'+thisprice+').<br />';
          vpricealert.innerHTML=pricealert;
        }
        pricetot=qty+' licenses: $'+thisprice;
        if(pricealert.length<1) {
          priceupgrade='<br />You may want to consider upgrading to<br />'+prices[i+1][0]+' licenses for $'+upgprice+'.';
        }
        break;
      }
    }
  }
  vcalcprice.innerHTML=pricetot+priceupgrade;
  return true;
} //calculate()
function storeStartup() {
  vpricealert=gebi('pricealert');
  vcalcprice=gebi('calcprice');
  vttqtyform=gebi('ttqtyformid');
  vttqtyid=gebi('ttqtyid');
  //don't do anything unless all pieces are found
  if(vpricealert && vcalcprice && vttqtyform && vttqtyid) {
    vttqtyform.onsubmit=function(){window.location=swreglink+vttqtyid.value;return false;};
    vttqtyid.onkeyup=calculate;
  }
} //storeStartup()
// end store

//wow, had to add toLowerCase() because Safari keeps SlashbackAssociates.com as domain; others automatically lowercase it
var mydomain;
function externalDomain(url) {
  var urlparts = url.split("://");
  if(urlparts.length>1) {
    urlparts = urlparts[1].split("/");
    if(urlparts.length>0 && urlparts[0].toLowerCase() !== mydomain) {
      return true;
    }
  }
  return false;
} //externalDomain(url)

function externalUrls2NewWindow() {
  var i;
  mydomain = document.domain.toLowerCase();
  var mytarget = "_blank";
  var mytitle = "Opens in new window";

  var hdiv = gebi('header');
  var hlinks = hdiv.getElementsByTagName("a");
  for(i=0;i<hlinks.length;i++) {
    if(externalDomain(hlinks[i].href)) {
      hlinks[i].target = mytarget;
    }
  }
  var hforms = hdiv.getElementsByTagName("form");
  for(i=0;i<hforms.length;i++) {
    if(externalDomain(hforms[i].action)) {
      hforms[i].target = mytarget;
    }
  }
  var fdiv = gebi('footer');
  var flinks = fdiv.getElementsByTagName("a");
  for(i=0;i<flinks.length;i++) {
    if(externalDomain(flinks[i].href)) {
      flinks[i].target = mytarget;
    }
  }
  var fforms = fdiv.getElementsByTagName("form");
  for(i=0;i<fforms.length;i++) {
    if(externalDomain(fforms[i].action)) {
      fforms[i].target = mytarget;
    }
  }

  if(isStore()) {
    return;
  }
  var cdiv = gebi('content');
    var imgel = document.createElement('img');
    imgel.src='/i/external.png';
    imgel.alt=mytitle;
    imgel.className='extlink';
    imgel.height=10;
    imgel.width=10;

    var links = cdiv.getElementsByTagName("a");
    for(i=0;i<links.length;i++) {
      if(externalDomain(links[i].href)) {
        if(links[i].className.indexOf("newwinlink") === -1) {
          links[i].className += " newwinlink";
        }
      }
      if(links[i].className.indexOf("newwinlink")>-1) {
        links[i].appendChild(imgel.cloneNode(true));
        links[i].target = mytarget;
        links[i].title = mytitle;
      }
    }
    var k;
    var forms = cdiv.getElementsByTagName("form");
    for(i=0;i<forms.length;i++) {
      if(externalDomain(forms[i].action)) {
        if(!isDonate()) {
          for(k=0;k<forms[i].elements.length;k++) {
            if(forms[i].elements[k].type === "submit") {
              forms[i].elements[k].parentNode.appendChild(imgel.cloneNode(true));
            }
          }
        }
        forms[i].target = mytarget;
        forms[i].title = mytitle;
      }
  }
} //externalUrls2NewWindow()

//these run at onload
fixeml();
showQotd();
addEvents();
if(isStore()) {storeStartup();}
externalUrls2NewWindow();

