/*
*	Author:		D. K.
*	Website:	Magixite.com
*	Copyright:	(c) Magixite.com
*	License:	This code may not be copied, or reproduced in parts or in whole without written permission of Magixite.com.
*/

// anonimize all links
function mx_AEL(exdn)
{
	if(exdn == undefined) exdn = "";
	
	var _a = document.getElementsByTagName('a');
	var chost = document.location.hostname;
	var cdn = chost.substr(chost.lastIndexOf(".", chost.lastIndexOf(".") - 1) + 1);
	
	//exdn = ((exdn != "") ? exdn + ',' + cdn : cdn).replace(" ", ""); // add current domain name to be excluded
	
	_exdn = exdn.split(","); // remove empty elements
	_exdn.Remove("")
	
	for(var i = 0; i < _a.length; i++)
	{
		var href = _a[i].href;
		
		if(!href || href == "" || href.indexOf(cdn+'/') > -1 || !mx_CIDIIU(href, _exdn) || href.indexOf("://") == -1 || href.indexOf("://") > 8 || href.indexOf('http://magixite.com') == 0)
		{
			// skip url link
		}
		else
		{
			if(typeof mx_encrypt_urls == "undefined" || mx_encrypt_urls == false)
			{
				_a[i].href = 'http://magixite.com/?' + href.EncodeURL();
			}
			else if(mx_encrypt_urls == true)
			{
				_a[i].href = 'http://magixite.com/?' + mx_B64ENC(href.EncodeURL()) + '&b64';
			}
			
			
			if(mx_open_exturl_in_new_window)
			{
				if(_a[i].target == "" || !_a[i].target) _a[i].target = "_blank";
			}
		}
	}
	
}

// checks if href should be changed
function mx_CIDIIU(href, _exdn)
{
	for(var d = 0; d < _exdn.length; d++)
	{
		if(href.indexOf(_exdn[d]+'/') > -1)
		{
			return false;
		}
	}
	
	return true;
}

// add event to start anonim on page load
function mx_ABOLE()
{
	try
	{
		if (window.addEventListener)
		{
			window.addEventListener('load', mx_SAAEL, true);
		}
		else if(window.attachEvent)
		{
			return window.attachEvent("on" + 'load', mx_SAAEL);
		}
		else
		{
			mx_SAAEL();
		}
	}
	catch(exeption)
	{
		mx_SAAEL();
	}
}

function mx_SAAEL()
{
	mx_AEL(mx_exclude_domains.replace(" ", ""));
}

Array.prototype.Remove = function(value)
{
	var _args = Array.prototype.Remove.arguments
	var limit = (_args.length > 1) ? _args[1] : 0;
	var count = 0;
	
	for(i = 0; i < this.length; i++)
	{
		if(this[i] == value)
		{
			this.splice(i, 1)
			i--;
			count++;
			
			if(count >= limit && limit != 0)
			{
				i = this.length;
			}
		}
	}
}

String.prototype.EncodeURL = function()
{
	url = this.replace(RegExp("\\\\","g"),"/");
	return encodeURI(url);
}

function mx_B64ENC(input)
{
	var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
	var output = "";
	var chr1, chr2, chr3;
	var enc1, enc2, enc3, enc4;
	var i = 0;
 
	do
	{
		chr1 = input.charCodeAt(i++);
		chr2 = input.charCodeAt(i++);
		chr3 = input.charCodeAt(i++);
 
		enc1 = chr1 >> 2;
		enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
		enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
		enc4 = chr3 & 63;
 
		if (isNaN(chr2))
		{
			enc3 = enc4 = 64;
		}
		else if (isNaN(chr3))
		{
			enc4 = 64;
		}
 
		output = output + keyStr.charAt(enc1) + keyStr.charAt(enc2) + keyStr.charAt(enc3) + keyStr.charAt(enc4);
	}
	while (i < input.length);
   
	return output;
}

mx_ABOLE();
