function isEmail(address)
{
  var regex = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
  return regex.test(address);
}



function SwitchImg()
{
  var rem, keep = 0, store, obj, switcher = new Array, history = document.Data;

  for ( rem = 0; rem < (SwitchImg.arguments.length - 2); rem += 3 )
  {
    store = SwitchImg.arguments[!document.all ? rem : rem + 1];

    if ( !document.all ) // Mozilla
      store = 'document' + store.substring(store.lastIndexOf('.'), store.length);
    else // IE
      store = 'document.all' + store.substring(store.lastIndexOf('.'), store.length);

    obj = eval(store);

    if ( obj != null )
    {
      switcher[keep++] = obj;
      switcher[keep++] = ( history == null || history[keep - 1] != obj ) ? obj.src : history[keep];
      obj.src = SwitchImg.arguments[rem + 2];
    }
  }

  document.Data = switcher;
}



function RestoreImg()
{
  if ( document.Data != null )
    for ( var rem = 0; rem < ( document.Data.length - 1 ); rem += 2 )
     document.Data[rem].src = document.Data[rem + 1];
}



//  end hiding contents -->



function openWindow(src)
{
  var url = src.getAttribute('href');

  var w = window.open(url);
  w.focus();

  return w;
}



function switchClass(object, newClass)
{
  object.className = '' + newClass + '';
}



function htmlspecialchars(s)
{
  s = s.replace(/&/g,"&amp;");
  s = s.replace(/\"/g,"&quot;");
  s = s.replace(/\'/g,"&#039;");
  s = s.replace(/<\\/g,"&lt;");
  s = s.replace(/>/g,"&gt;");

  return s;
}



// recursively find an element position
function findPosition(obj)
{
  var curleft = curtop = 0;

  if ( obj.offsetParent )
  {
    curleft = obj.offsetLeft;
    curtop = obj.offsetTop;

    while ( obj = obj.offsetParent )
    {
      curleft += obj.offsetLeft;
      curtop += obj.offsetTop;
    }
  }

  return [curleft, curtop];
}



function stripTags(str, allowedTags) {
    // http://kevin.vanzonneveld.net
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: Luke Godfrey
    // +      input by: Pul
    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   bugfixed by: Onno Marsman
    // +      input by: Alex
    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +      input by: Marc Palau
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // *     example 1: stripTags('<p>Kevin</p> <br /><b>van</b> <i>Zonneveld</i>', '<i><b>');
    // *     returns 1: 'Kevin <b>van</b> <i>Zonneveld</i>'
    // *     example 2: stripTags('<p>Kevin <img src="someimage.png" onmouseover="someFunction()">van <i>Zonneveld</i></p>', '<p>');
    // *     returns 2: '<p>Kevin van Zonneveld</p>'
    // *     example 3: stripTags("<a href='http://kevin.vanzonneveld.net'>Kevin van Zonneveld</a>", "<a>");
    // *     returns 3: '<a href='http://kevin.vanzonneveld.net'>Kevin van Zonneveld</a>'

    var key = '', tag = '', allowed = false;
    var matches = allowed_array = [];

    var replacer = function(search, replace, str) {
        return str.split(search).join(replace);
    };

    // Build allowes tags associative array
    if (allowedTags) {
        allowed_array = allowedTags.match(/([a-zA-Z]+)/gi);
    }

    str += '';

    // Match tags
    matches = str.match(/(<\/?[^>]+>)/gi);

    // Go through all HTML tags
    for (key in matches) {
        if (isNaN(key)) {
            // IE7 Hack
            continue;
        }

        // Save HTML tag
        html = matches[key].toString();

        // Is tag not in allowed list? Remove from str!
        allowed = false;

        // Go through all allowed tags
        for (k in allowed_array) {
            // Init
            allowed_tag = allowed_array[k];
            i = -1;

            if (i != 0) { i = html.toLowerCase().indexOf('<'+allowed_tag+'>');}
            if (i != 0) { i = html.toLowerCase().indexOf('<'+allowed_tag+' ');}
            if (i != 0) { i = html.toLowerCase().indexOf('</'+allowed_tag)   ;}

            // Determine
            if (i == 0) {
                allowed = true;
                break;
            }
        }

        if (!allowed) {
            str = replacer(html, "", str); // Custom replace. No regexing
        }
    }

    return str;
}

