
var _hoverPopPage = false;
var _prePopPageScrollY=0;

var _currentPop_permalink = null;
var _currentPop_type = null;


function findPosY(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 findPosX(obj) {
	var curleft = 0;
	if (obj.offsetParent) {
		while (obj.offsetParent) {
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x) {
		curleft += obj.x;
	}
	return curleft; 
}

function showTipAFriend(obj) {
    var tippop = document.getElementById('tipafriend_pop');
    if (tippop) {
        tippop.style.left = (findPosX(obj)-100)+'px';
        tippop.style.top = (findPosY(obj)-50)+'px';
        tippop.style.display='block'; 
   }
}
function sendTipToAFriend() {
    var tippop = document.getElementById('tipafriend_pop');
    var tippop_email = document.getElementById('tipafriend_email');
    var tippop_sendername = document.getElementById('tipafriend_sendername');
    var tippop_senderemail = document.getElementById('tipafriend_senderemail');
    var tippop_message = document.getElementById('tipafriend_message');
    var tippop_error1 = document.getElementById('tipafriend_error1');
    var tippop_error2 = document.getElementById('tipafriend_error2');
    var tippop_error3 = document.getElementById('tipafriend_error3');
    
    var sendername, senderemail, message, email;
    var valid = false;
    
    
    sendername = tippop_sendername.value.trim();
    senderemail = tippop_senderemail.value.trim();
    message = tippop_message.value.trim();
    email = tippop_email.value.trim();
    
    // validate email
    
    var regExpression =  /^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3} \.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/
    var rx = new RegExp(regExpression);
    var matches = rx.exec(email);
    if (matches != null && email == matches[0]){
        valid = true
        tippop_error3.style.display='none';
    } else {
        valid = false;
        tippop_error3.style.display='block';
    }		
    
    if (sendername.length==0) {
        tippop_error1.style.display='block';
        valid = false;
    } else {
        tippop_error1.style.display='none';
    }
    
    if (valid) {       
        //Public Function SendPageToFriend(ByVal SenderName As String, ByVal SenderEmail As String, ByVal Message As String, ByVal FriendEmail As String, ByVal PageUrl As String) As Boolean
        White.Web.UI.Client.Service.TipAFriend.SendPageToFriend(sendername,senderemail, message, email, _currentPop_permalink);
        closeTipAFriend();
    }
}

function closeTipAFriend() {
    var tippop = document.getElementById('tipafriend_pop');
    var tippop_email = document.getElementById('tipafriend_email');
    var tippop_sendername = document.getElementById('tipafriend_sendername');
    var tippop_senderemail = document.getElementById('tipafriend_senderemail');
    var tippop_message = document.getElementById('tipafriend_message');
    
    tippop.style.display='none';
    tippop_email.value='';
    tippop_sendername.value='';
    tippop_senderemail.value='';
    tippop_message.value='';
}

function centerPopPageAnim(obj) { 
    var arrayPageSize = getPageSize();
    var elemWidth, pageWidth, elemLeft;
    
    elemWidth = obj.element.offsetWidth;
    pageWidth = arrayPageSize[0];    
    elemLeft = (pageWidth/2)-(elemWidth/2); 
    obj.element.style.left = elemLeft+'px';
}

function activatePoppedPrintCss() {
    var classname;
    if ($('body').className){
        classname = $('body').className;
        classname = classname.replace('popped','');
        classname = classname + ' popped';
        $('body').className = classname;
    }
}

function inactivatePoppedPrintCss() {  
    if ($('body').className){
        classname = $('body').className;
        classname = classname.replace('popped','');
        $('body').className = classname;
    }
}

function popExperience(pageId,link) {
   
    if (link) {
        _currentPop_permalink = link.href;
        _currentPop_type = 'experience';
    }
    
    var succeeded = function(result) {
        var poppage_sheet,poppage_segment,poppage_segment_loading; 
        var poppage_segment_anim = document.getElementById('poppage_segment_anim');
        var arrayPageScroll = getPageScroll();
        var arrayPageSize = getPageSize();
        
        activatePoppedPrintCss();
    
        poppage_segment_anim.style.width='10px';
        poppage_segment_anim.style.top='0px';
        poppage_segment_anim.style.left= '50%'
        poppage_segment_anim.style.height = '4000px'; 
         _prePopPageScrollY = arrayPageScroll[1];      
       
        new Effect.Parallel (
         [ 
            new Effect.Appear( poppage_segment_anim, { sync: true} ), 
            new Effect.ReSize( poppage_segment_anim, { sync: true, direction:'horiz', toSize:860, afterUpdate: centerPopPageAnim } )
         ]
         , { duration: 0.6 } 
        );  
       
        poppage_sheet = document.getElementById('poppage_sheet');	            
        poppage_segment = document.getElementById('poppage_segment');
        poppage_segment_loading=document.getElementById('poppage_segment_loading');
        	            
        poppage_sheet.innerHTML = result;
        
        poppage_segment_loading.style.display='none';
        
        setTimeout('showPopSegment()',600);        
        setTimeout('hideAnimSegment()',600); 
        setTimeout('lightboxInit()',1000);         
    }
    var failed = function() { alert('popExperience:Something went wrong'); }
	
    White.Web.UI.Client.Service.Experience.Render(pageId,succeeded,failed);
}

function reloadComments(issuePostId) {
    
    var succeeded = function(result) {
        var item_comments = document.getElementById('item_comments');
        var item_comments_count = document.getElementById('item_comments_count');
        
        var html, count;
        
        html = result['html'];
        count = result['count'];                          
        
        item_comments.innerHTML = html;
        item_comments_count.innerHTML = count;
    }   
    
    var failed = function(result) {
         
    }
    
    White.Web.UI.Client.Service.Issue.ReloadComments(issuePostId,succeeded,failed);

}
function saveIssuePostComment(issuePostId) {

    var succeeded = function(result) {
         reloadComments(issuePostId);
    }   
    
    var failed = function(result) {
    }
    
    var author, email, title, body, error;
    
    author = document.getElementById('comment_author').value;
    email = document.getElementById('comment_email').value;
    title = document.getElementById('comment_title').value;
    body = document.getElementById('comment_body').value;    
    error = document.getElementById('comment_error');
    
    if (author.length>0 && email.length>0 && title.length>0 && body.length>0) {
    
        White.Web.UI.Client.Service.Issue.CommentPost(issuePostId, author ,email, title, body,succeeded, failed);

        document.getElementById('comment_author').value='';
        document.getElementById('comment_email').value='';
        document.getElementById('comment_title').value='';
        document.getElementById('comment_body').value='';
        
        error.style.display='none';
    } else {
        // display input errormsg.
        error.style.display='';
    }
}

function popIssuePost(postId,link) {

    if (link) {
        _currentPop_permalink = link.href;
        _currentPop_type = 'issuepost';
    }

    var succeeded = function(result) {
        var poppage_sheet,poppage_segment,poppage_segment_loading; 
        var poppage_segment_anim = document.getElementById('poppage_segment_anim');
        var arrayPageScroll = getPageScroll();
        var arrayPageSize = getPageSize();
    
        activatePoppedPrintCss();
            
        poppage_segment_anim.style.width='10px';
        poppage_segment_anim.style.top='0px';
        poppage_segment_anim.style.left= '50%'
        poppage_segment_anim.style.height = '4000px'; 
         _prePopPageScrollY = arrayPageScroll[1];      
       
        new Effect.Parallel (
         [ 
            new Effect.Appear( poppage_segment_anim, { sync: true} ), 
            new Effect.ReSize( poppage_segment_anim, { sync: true, direction:'horiz', toSize:560, afterUpdate: centerPopPageAnim } )
         ]
         , { duration: 0.6 } 
        );  
       
        poppage_sheet = document.getElementById('midsizepoppage_sheet');	            
        poppage_segment = document.getElementById('midsizepoppage_segment');
        poppage_segment_loading=document.getElementById('poppage_segment_loading');
        	            
        poppage_sheet.innerHTML = result;

        poppage_segment_loading.style.display='none';
        
        setTimeout('showMidPopSegment()',600);        
        setTimeout('hideAnimSegment()',600); 
        setTimeout('lightboxInit()',1000);         
    }
    var failed = function() { alert('popIssuePost:Something went wrong'); }
	
    White.Web.UI.Client.Service.Issue.Render(postId,succeeded,failed);
}

function popNews(newsId,link) {

    if (link) {
        _currentPop_permalink = link.href;
        _currentPop_type = 'news';
    }

    var succeeded = function(result) {
        var poppage_sheet,poppage_segment,poppage_segment_loading; 
        var poppage_segment_anim = document.getElementById('poppage_segment_anim');
        var arrayPageScroll = getPageScroll();
        var arrayPageSize = getPageSize();
    
        activatePoppedPrintCss();
            
        poppage_segment_anim.style.width='10px';
        poppage_segment_anim.style.top='0px';
        poppage_segment_anim.style.left= '50%'
        poppage_segment_anim.style.height = '4000px'; 
         _prePopPageScrollY = arrayPageScroll[1];      
       
        new Effect.Parallel (
         [ 
            new Effect.Appear( poppage_segment_anim, { sync: true} ), 
            new Effect.ReSize( poppage_segment_anim, { sync: true, direction:'horiz', toSize:560, afterUpdate: centerPopPageAnim } )
         ]
         , { duration: 0.6 } 
        );  
       
        poppage_sheet = document.getElementById('midsizepoppage_sheet');	            
        poppage_segment = document.getElementById('midsizepoppage_segment');
        poppage_segment_loading=document.getElementById('poppage_segment_loading');
        	            
        poppage_sheet.innerHTML = result;

        poppage_segment_loading.style.display='none';
        
        setTimeout('showMidPopSegment()',600);        
        setTimeout('hideAnimSegment()',600); 
        setTimeout('lightboxInit()',1000);         
    }
    var failed = function() { alert('popNews:Something went wrong'); }
	
    White.Web.UI.Client.Service.Live.RenderNews(newsId,succeeded,failed);
}

function popDocumentation(documentionId,link) {

    if (link) {
        _currentPop_permalink = link.href;
        _currentPop_type = 'documentation';
    }

    var succeeded = function(result) {
        var poppage_sheet,poppage_segment,poppage_segment_loading; 
        var poppage_segment_anim = document.getElementById('poppage_segment_anim');
        var arrayPageScroll = getPageScroll();
        var arrayPageSize = getPageSize();
    
        activatePoppedPrintCss();
           
        poppage_segment_anim.style.width='10px';
        poppage_segment_anim.style.top='0px';
        poppage_segment_anim.style.left= '50%'
        poppage_segment_anim.style.height = '4000px'; 
         _prePopPageScrollY = arrayPageScroll[1];      
       
        new Effect.Parallel (
         [ 
            new Effect.Appear( poppage_segment_anim, { sync: true} ), 
            new Effect.ReSize( poppage_segment_anim, { sync: true, direction:'horiz', toSize:560, afterUpdate: centerPopPageAnim } )
         ]
         , { duration: 0.6 } 
        );  
       
        poppage_sheet = document.getElementById('midsizepoppage_sheet');	            
        poppage_segment = document.getElementById('midsizepoppage_segment');
        poppage_segment_loading=document.getElementById('poppage_segment_loading');
        	            
        poppage_sheet.innerHTML = result;

        poppage_segment_loading.style.display='none';
        
        setTimeout('showMidPopSegment()',600);        
        setTimeout('hideAnimSegment()',600); 
        setTimeout('lightboxInit()',1000);         
    }
    var failed = function() { alert('popNews:Something went wrong'); }
	
    White.Web.UI.Client.Service.Live.RenderDocumentation(documentionId,succeeded,failed);
}

function popEvent(eventId,link) {

    if (link) {
        _currentPop_permalink = link.href;
        _currentPop_type = 'event';
    }
    
    var succeeded = function(result) {
        var poppage_sheet,poppage_segment,poppage_segment_loading; 
        var poppage_segment_anim = document.getElementById('poppage_segment_anim');
        var arrayPageScroll = getPageScroll();
        var arrayPageSize = getPageSize();
    
        activatePoppedPrintCss();
            
        poppage_segment_anim.style.width='10px';
        poppage_segment_anim.style.top='0px';
        poppage_segment_anim.style.left= '50%'
        poppage_segment_anim.style.height = '4000px'; 
         _prePopPageScrollY = arrayPageScroll[1];      
       
        new Effect.Parallel (
         [ 
            new Effect.Appear( poppage_segment_anim, { sync: true} ), 
            new Effect.ReSize( poppage_segment_anim, { sync: true, direction:'horiz', toSize:560, afterUpdate: centerPopPageAnim } )
         ]
         , { duration: 0.6 } 
        );  
       
        poppage_sheet = document.getElementById('midsizepoppage_sheet');	            
        poppage_segment = document.getElementById('midsizepoppage_segment');
        poppage_segment_loading=document.getElementById('poppage_segment_loading');
        	            
        poppage_sheet.innerHTML = result;

        poppage_segment_loading.style.display='none';
        
        setTimeout('showMidPopSegment()',600);        
        setTimeout('hideAnimSegment()',600); 
        setTimeout('lightboxInit()',1000);         
    }
    var failed = function() { alert('popIssuePost:Something went wrong'); }
	
    White.Web.UI.Client.Service.Live.RenderEvent(eventId,succeeded,failed);
}


function showPopSegment() { 
    var poppage_segment = document.getElementById('poppage_segment');
    showPopFog();
    poppage_segment.style.display='';
}

function showMidPopSegment() { 
    var poppage_segment = document.getElementById('midsizepoppage_segment');
    showMidPopFog();
    poppage_segment.style.display='';
}

function hideAnimSegment() {
    var poppage_segment_anim = document.getElementById('poppage_segment_anim');
    poppage_segment_anim.style.display='none';
}
       
function showPopFog() {
    var popfog,  poppage, poppage_sheet, poppage_segment, poppage_segment_loading;
    var arrayPageScroll = getPageScroll();
    var arrayPageSize = getPageSize();
        
    popfog = document.getElementById('popfog');
    poppage = document.getElementById('poppage');
    poppage_segment = document.getElementById('poppage_segment');
    
    popfog.onclick = function() { if (!_hoverPopPage) { closePopFog(); } }
    poppage_segment.onclick = function() { if (!_hoverPopPage) {closePopFog(); } }
    
    poppage.onmouseover = function() { _hoverPopPage=true; }
    poppage.onmouseout = function() { _hoverPopPage=false; }
    
    popfog.style.width=arrayPageSize[0]+'px';
    popfog.style.height=(arrayPageSize[1]+arrayPageScroll[1])+'px';
    popfog.style.display='block';
          
    poppage_segment_loading = document.getElementById('poppage_segment_loading');	
    poppage_segment.style.display='none';
    poppage_segment_loading.style.display='';
    
    poppage_segment_loading.style.top = (arrayPageScroll[1]+15) +'px';
    poppage_segment.style.top = (arrayPageScroll[1]+15) +'px';
}

function showMidPopFog() {
    var popfog, poppage, poppage_sheet, poppage_segment, poppage_segment_loading;
    var arrayPageScroll = getPageScroll();
    var arrayPageSize = getPageSize();
        
    popfog = document.getElementById('popfog');
    poppage = document.getElementById('midsizepoppage');
    poppage_segment = document.getElementById('midsizepoppage_segment');
    
    popfog.onclick = function() { if (!_hoverPopPage) { closePopFog(); } }
    poppage_segment.onclick = function() { if (!_hoverPopPage) {closePopFog(); } }
    
    poppage.onmouseover = function() { _hoverPopPage=true; }
    poppage.onmouseout = function() { _hoverPopPage=false; }
    
    popfog.style.width=arrayPageSize[0]+'px';
    popfog.style.height=(arrayPageSize[1]+arrayPageScroll[1])+'px';
    popfog.style.display='block';
          
    poppage_segment_loading = document.getElementById('poppage_segment_loading');	
    poppage_segment.style.display='none';
    poppage_segment_loading.style.display='';
    
    poppage_segment_loading.style.top = (arrayPageScroll[1]+15) +'px';
    poppage_segment.style.top = (arrayPageScroll[1]+15) +'px';
}

function closePopFog() {
    
    var popfog,poppage_segment,poppage_sheet,midsizepoppage_segment,midsizepoppage_sheet;
    popfog = document.getElementById('popfog');
    
    poppage_segment = document.getElementById('poppage_segment');
    poppage_sheet = document.getElementById('poppage_sheet');
    
    midsizepoppage_segment = document.getElementById('midsizepoppage_segment');
    midsizepoppage_sheet = document.getElementById('midsizepoppage_sheet');
    
    poppage_segment.style.display='none';
    midsizepoppage_segment.style.display='none';
    
    popfog.style.display='none';
    
    new Effect.PageScroll( null, { scrollTo: _prePopPageScrollY, duration: 0.5, transition: Effect.Transitions.slowstop } );

    inactivatePoppedPrintCss();
    closeTipAFriend();
}

function lightbox_showFog() {
    var lightboxfog;
    var arrayPageScroll = getPageScroll();
    var arrayPageSize = getPageSize();

    lightboxfog = document.getElementById('lightboxfog');
    lightboxfog.style.width=arrayPageSize[0]+'px';
    lightboxfog.style.height=(arrayPageSize[1]+arrayPageScroll[1])+'px';
    
    lightboxfog.style.display='block';
}

function lightbox_hideFog() {
    var lightboxfog;
    lightboxfog = document.getElementById('lightboxfog');
    lightboxfog.style.display='none';
}

function lightboxInit() {
    myLightbox.updateImageList();
}

// script.aculo.us EffectResize.js

// Copyright(c) 2007 - Frost Innovation AS, http://ajaxwidgets.com
//
// EffectResize.js is freely distributable under the terms of an MIT-style license.
// For details, see the script.aculo.us web site: http://script.aculo.us/

// Modified by Elijah Lofgren to work with Prototype 1.4.0_rc3

/* 
    Helper Effect for resizing elements...
 */
 
Effect.ReSize = Class.create();
Object.extend(Object.extend(Effect.ReSize.prototype, Effect.Base.prototype), {
  initialize: function(element) {
    this.element = element;
    if(!this.element) throw(Effect._elementDoesNotExistError);
    var options = Object.extend({ amount: 100, direction: 'vert', toSize:null }, arguments[1] || {});
    if( options.direction=='vert')
      this.originalSize = options.originalSize || parseInt(this.element.style.height);
    else
      this.originalSize = options.originalSize || parseInt(this.element.style.width);

    if( options.toSize != null ) {
        options.amount = options.toSize - this.originalSize;
        //console.log('amount: ' + options.amount);
    }
    this.start(options);
  },
  setup: function() {
    // Prevent executing on elements not in the layout flow
    if(this.element.style.display=='none') { this.cancel(); return; }
  },
  update: function(position) {
    if( this.options.direction=='vert'){
      this.element.style.height = this.originalSize+(this.options.amount*position)+'px';
    } else {
      this.element.style.width = this.originalSize+(this.options.amount*position)+'px';
    }
  },
  finish: function(){
    if( this.options.direction=='vert'){
      this.element.style.height = this.originalSize+this.options.amount+'px';
    } else {
      this.element.style.width = this.originalSize+this.options.amount+'px';
    }
  }});

/* 
    Helper Effect for scrolling the page
*/
 
Effect.PageScroll = Class.create();
Object.extend(Object.extend(Effect.PageScroll.prototype, Effect.Base.prototype), {
  initialize: function(element) {
    this.element = element;
    var options = Object.extend({ scrollTo: 0 }, arguments[1] || {});
    var arrayPageScroll = getPageScroll();
    
    options.startPosition = arrayPageScroll[1];
    this.start(options);
  },
  setup: function() {
    // nop
  },
  update: function(position) {
    var offset = this.options.startPosition-this.options.scrollTo;
    var newScrollPos = this.options.startPosition-(offset*position);
    window.scrollTo(0,newScrollPos);
  },
  finish: function(){
    window.scrollTo(0,this.options.scrollTo);
  }});
  
  	/**
*
*  Base64 encode / decode
*  http://www.webtoolkit.info/
*
**/
 
var Base64 = {
 
	// private property
	_keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
 
	// public method for encoding

 
	// public method for decoding
	decode : function (input) {
		var output = "";
		var chr1, chr2, chr3;
		var enc1, enc2, enc3, enc4;
		var i = 0;
 
		input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
 
		while (i < input.length) {
 
			enc1 = this._keyStr.indexOf(input.charAt(i++));
			enc2 = this._keyStr.indexOf(input.charAt(i++));
			enc3 = this._keyStr.indexOf(input.charAt(i++));
			enc4 = this._keyStr.indexOf(input.charAt(i++));
 
			chr1 = (enc1 << 2) | (enc2 >> 4);
			chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
			chr3 = ((enc3 & 3) << 6) | enc4;
 
			output = output + String.fromCharCode(chr1);
 
			if (enc3 != 64) {
				output = output + String.fromCharCode(chr2);
			}
			if (enc4 != 64) {
				output = output + String.fromCharCode(chr3);
			}
 
		}
 
		output = Base64._utf8_decode(output);
 
		return output;
 
	},
 
	
 
	// private method for UTF-8 decoding
	_utf8_decode : function (utftext) {
		var string = "";
		var i = 0;
		var c = c1 = c2 = 0;
 
		while ( i < utftext.length ) {
 
			c = utftext.charCodeAt(i);
 
			if (c < 128) {
				string += String.fromCharCode(c);
				i++;
			}
			else if((c > 191) && (c < 224)) {
				c2 = utftext.charCodeAt(i+1);
				string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
				i += 2;
			}
			else {
				c2 = utftext.charCodeAt(i+1);
				c3 = utftext.charCodeAt(i+2);
				string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
				i += 3;
			}
 
		}
 
		return string;
	}
}

/*
	Developed by Robert Nyman, http://www.robertnyman.com
	Code/licensing: http://code.google.com/p/getelementsbyclassname/
*/
var getElementsByClassName = function (className, tag, elm){
	if (document.getElementsByClassName) {
		getElementsByClassName = function (className, tag, elm) {
			elm = elm || document;
			var elements = elm.getElementsByClassName(className),
				nodeName = (tag)? new RegExp("\\b" + tag + "\\b", "i") : null,
				returnElements = [],
				current;
			for(var i=0, il=elements.length; i<il; i+=1){
				current = elements[i];
				if(!nodeName || nodeName.test(current.nodeName)) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	else if (document.evaluate) {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "),
				classesToCheck = "",
				xhtmlNamespace = "http://www.w3.org/1999/xhtml",
				namespaceResolver = (document.documentElement.namespaceURI === xhtmlNamespace)? xhtmlNamespace : null,
				returnElements = [],
				elements,
				node;
			for(var j=0, jl=classes.length; j<jl; j+=1){
				classesToCheck += "[contains(concat(' ', @class, ' '), ' " + classes[j] + " ')]";
			}
			try	{
				elements = document.evaluate(".//" + tag + classesToCheck, elm, namespaceResolver, 0, null);
			}
			catch (e) {
				elements = document.evaluate(".//" + tag + classesToCheck, elm, null, 0, null);
			}
			while ((node = elements.iterateNext())) {
				returnElements.push(node);
			}
			return returnElements;
		};
	}
	else {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "),
				classesToCheck = [],
				elements = (tag === "*" && elm.all)? elm.all : elm.getElementsByTagName(tag),
				current,
				returnElements = [],
				match;
			for(var k=0, kl=classes.length; k<kl; k+=1){
				classesToCheck.push(new RegExp("(^|\\s)" + classes[k] + "(\\s|$)"));
			}
			for(var l=0, ll=elements.length; l<ll; l+=1){
				current = elements[l];
				match = false;
				for(var m=0, ml=classesToCheck.length; m<ml; m+=1){
					match = classesToCheck[m].test(current.className);
					if (!match) {
						break;
					}
				}
				if (match) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	return getElementsByClassName(className, tag, elm);
};

Event.observe(window, 'load', function() { 
	var mails = document.getElementsByClassName("base64mail");
	
	for(var i = 0;i<mails.length;i++){
		mail = mails[i];
		var mailaddress = Base64.decode(mail.getAttribute("href"));
		mail.setAttribute("href", mailaddress);
	}
});
