/*
  Name:    Simple Anti-Spam Protection
  Version: 0.3 (28. 08. 2008)
  Author:  Roman Riska
  License: BSD License

  * Copyright (c) 2008, Roman Riska
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are met:
  *     * Redistributions of source code must retain the above copyright
  *       notice, this list of conditions and the following disclaimer.
  *     * Redistributions in binary form must reproduce the above copyright
  *       notice, this list of conditions and the following disclaimer in the
  *       documentation and/or other materials provided with the distribution.
  *     * Neither the name of the <organization> nor the
  *       names of its contributors may be used to endorse or promote products
  *       derived from this software without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY ROMAN RISKA ``AS IS'' AND ANY
  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  * DISCLAIMED. IN NO EVENT SHALL <copyright holder> BE LIABLE FOR ANY
  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/

function addLoadEvent(func) {
  var oldonload = window.onload;

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

function mailDecoder(mail) {
	var i, new_mail = new Array();

  for (i = 0; i < mail.length; i = i + 2)
	{
		if (i < mail.length - 1) {
			new_mail[i] = mail.substr(i + 1, 1);
			new_mail[i + 1] = mail.substr(i, 1);
		}
		else {
			new_mail[i] = mail.substr(i, 1);
		}
	}

	return (new_mail.join(''));
}

function anchorDecode(anchor) {
  if (anchor.getAttribute('href') != undefined ) {
    var filter=/^[a-zA-Z0-9\.\_\-\:]+@[a-zA-Z0-9\.\-\:]+\.[a-zA-Z0-9]{1,4}$/;

    var hrefProtocol = anchor.getAttribute('href').substr(0,7);
    var hrefMail = anchor.getAttribute('href').substr(7,anchor.getAttribute('href').length-7);
    var caption = anchor.innerHTML;

    // hyperlink is email
    if (filter.test(hrefMail)) {
      anchor.setAttribute('href', hrefProtocol + mailDecoder(hrefMail));
    }

    // hyperlink text is email
    if (filter.test(caption)) {
      anchor.innerHTML = mailDecoder(caption);
    }
  }
}

function spamDecoder() {
  var links = document.getElementsByTagName('a');

  for (var i = 0; i < links.length; i++) {
    anchorDecode(links[i]);
  }
}

addLoadEvent(spamDecoder);
