﻿<!--//
// JScript File

function _init()
{
		if( typeof window.onInit == "function" ) window.onInit();
}
	
function onInit()
{	
    do_all("to_deobfuscate", "span", my_deobfuscate);
}


function getElementsByClassName(oElm, strTagName, oClassNames)
{
	var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
	var arrReturnElements = new Array();
	var arrRegExpClassNames = new Array();
	if(typeof oClassNames == "object"){
		for(var i=0; i<oClassNames.length; i++){
			arrRegExpClassNames.push(new RegExp("(^|\\s)" + oClassNames[i].replace(/\-/g, "\\-") + "(\\s|$)"));
		}
	}
	else{
		arrRegExpClassNames.push(new RegExp("(^|\\s)" + oClassNames.replace(/\-/g, "\\-") + "(\\s|$)"));
	}
	var oElement;
	var bMatchesAll;
	for(var j=0; j<arrElements.length; j++){
		oElement = arrElements[j];
		bMatchesAll = true;
		for(var k=0; k<arrRegExpClassNames.length; k++){
			if(!arrRegExpClassNames[k].test(oElement.className)){
				bMatchesAll = false;
				break;
			}
		}
		if(bMatchesAll){
			arrReturnElements.push(oElement);
		}
	}
	return (arrReturnElements)
}


function Code(str)
{
	//alert("Code 1 email:" + str);


    var re1 = new RegExp("(.*)\@(.*)\-([^\.]*)\.(.*)");
    re1.exec(str);
    
    // alert("Code 3 1:" + RegExp.$1 + " 2:" + RegExp.$2 + " 3:" + RegExp.$3 + " 4:" + RegExp.$4 + " ");
    var out = RegExp.$4;;
    out += "%";
    out += RegExp.$1;
    out += "-";
    out += RegExp.$2;
    out += "=";
    out += RegExp.$3;
    // alert("Code 4: " + out);
    return out;
}

function Decode(str)
{
    // alert("To decode: " + email);
    // org+info-sredec=sofia
    var re2 = new RegExp("(.*)\%(.*)\-(.*)\=(.*)");
    re2.exec(str);
    
    // alert("Decode 1:" + RegExp.$1 + " 2:" + RegExp.$2 + " 3:" + RegExp.$3 + " 4:" + RegExp.$4 + " ");
    var out = RegExp.$2;
    out += "@";
    out += RegExp.$3;
    out += "-";
    out += RegExp.$4;
    out += ".";
    out += RegExp.$1;
    
    return out;
}


function getEmail(plaintext)
{
    var re = new RegExp(".?\=\"(.*)\"\>(.*)\<");
    
    re.exec(plaintext);
    var em = {};
    em = {"email" : RegExp.$1, 
          "message" : RegExp.$2};
    return em;
}

function my_deobfuscate(inEl, outEl)
{
    var plaintext = inEl.innerHTML;
    var email_message = getEmail(plaintext);
    
    //alert("my_deobfuscate() email: " + all.email + " >> message: " + all.message);
    
    var decodedEmail = Decode(email_message.email);
    // alert("my_deobfuscate() decoded email: " + decodedEmail + " >> message: " + all.message);
    
    var result = "<a href='";
	result += "mailto:" + decodedEmail;
	result += "'>";
	result += email_message.message;
	result += "</a>";
    
    //alert("my_deobfuscate() FINAL result" + result);
    
    outEl.innerHTML = result; 
    return false;
}


function my_obfuscate(inEl, outEl)
{
    // alert ("In my_obfuscate");
    var e = inEl.value; 
    // alert ("to code: " + e);
    
    var codedEmail = Code(e);
    // alert ("coded: " + codedEmail);
    
    var obfusatation_class_name = "to_deobfuscate";
    
    var out = "<span class=\"" + obfusatation_class_name + "\"><a href=\"";
    out += codedEmail;
    out += "\">електронна поща</a></span>";
    
    outEl.value = out; 
    return false;
}

function do_all(email_class_name, tag_name, func)
{
    var els = getElementsByClassName(document, tag_name, email_class_name); 
    for (i = 0; i < els.length; i++)
    {
        func(els[i], els[i]);
    }
}

function test_obfuscate()
{   
    do_all("to_obfuscate", "input", my_obfuscate);
    do_all("to_deobfuscate", "span", my_deobfuscate);
}

//-->
