/*
	General
	author: Közös
	lastmod: 2006.01.21.
	
	Általános függvények, változók, konstansok
*/



// IE vagy nem eldöntésre, pf.
var isIE = navigator.userAgent.match(/MSIE/) == "MSIE";


// Levélküldés a levélcím feltárása nélkül.
function level(felhasznalo, domen, tema)
{
	if(tema == undefined)
		document.location = "mailto:" + felhasznalo + "@" + domen;
	else
		document.location = "mailto:" + felhasznalo + "@" + domen + "?subject=" + tema;
}


// A szöveg széleirol levágja a szóközöket
function trim(s)
{
	var rs = "";
	
	for(i = 0; i < s.length; i++)
	{
		if(s.charAt(i) != " ")
			break;
	}

	for(i2 = s.length-1; i2 > 0; i2--)
	{
		if(s.charAt(i2) != " ")
			break;
	}
	i2 += 1;
	
	rs = s.substring(i, i2);
	
	return rs;
}


/*
	Szöveges mezők funkciói
*/
function numeric_format(input)
{
	if(input.value.indexOf('.') != -1)
	{
		fp = input.value.substr(input.value.indexOf('.'), 5);
		ip = input.value.substr(0, input.value.indexOf('.'));
		input.value = makeNumber(ip) + "." + makeNumber2(fp);
	}
	else
		input.value = makeNumber(input.value);
}

function numeric_format2(input)
{
	input.value = makeNumber2(input.value, ".");
}

function makeNumber(str)
{
	var ns = "";
	var valid = "0123456789";
	
	for(i = 0; i < str.length; i++)
	{
		if(valid.indexOf(str.charAt(i)) != -1)
			ns += str.charAt(i);
	}
	
	if(ns == "")
		ns = "0";
	
	ns = String(parseInt(ns));
	
	a = new Array();
	c = 0;
	while(ns != "")
	{
		if(ns.length > 3)
		{
			a[c] = ns.substr(ns.length-3, 3);
			ns = ns.substr(0, ns.length-3);
		}
		else
		{
			a[c] = ns;
			ns = "";
		}
		c++;
	}
	
	for(i = 0; i < c; i++)
		ns = a[i] + " " + ns;
	
	ns = trim(ns);
	
	return ns;
}

function makeNumber2(str, spec)
{
	if(spec == undefined || spec == null)
		spec = "";

	var valid = spec + "0123456789";
	var ns = "";
	
	if(str == "")
	{
		str = "0";
		return str;
	}
	
	for(i = 0; i < str.length; i++)
	{
		if(valid.indexOf(str.charAt(i)) != -1)
			ns += str.charAt(i);
	}
	
	if(ns == "")
		ns = "0";

	str = parseInt(ns);
	
	return str;
}

function general_replace(sOrgVal,sSearchVal,sReplaceVal)
{
   var sVal;
   try
   {
      sVal = new String(sOrgVal);
      if (sVal.length < 1) { return sVal; }
      var sRegExp = eval("/" + sSearchVal + "/g");
      sVal = sVal.replace(sRegExp,sReplaceVal);
   }
   catch (exception)  { }
   return sVal;

 }



/*
	String függvények
*/

//slasheket helyez el ahová kell, ',",\,0
function addslashes(str) 
{
	str=str.replace(/\'/g,'\\\'');
	str=str.replace(/\"/g,'\\"');
	str=str.replace(/\\/g,'\\\\');
	str=str.replace(/\0/g,'\\0');
	str=str.replace(/\n/g,'\\n');
	return str;
}


// a feleslegesen stringben hagyott slasheket szedi ki
function stripslashes(str) 
{
	str=str.replace(/\\'/g,'\'');
	str=str.replace(/\\"/g,'"');
	str=str.replace(/\\\\/g,'\\');
	str=str.replace(/\\0/g,'\0');
	str=str.replace(/\\n/g,'\n');
	return str;
}



/*
	SHA1 és segédfüggvények
*/

//számok osztályának bővítése
Number.prototype.toHexStr = function()
{
    var s="", v;
    for (var i=7; i>=0; i--) { v = (this>>>(i*4)) & 0xf; s += v.toString(16); }
    return s;
}

// sha1 'f' függvénye
function f(s, x, y, z) 
{
    switch (s) {
    case 0: return (x & y) ^ (~x & z);
    case 1: return x ^ y ^ z;
    case 2: return (x & y) ^ (x & z) ^ (y & z);
    case 3: return x ^ y ^ z;
    }
}


// körkörös balshiftelés x-en n pozicioval
function ROTL(x, n)
{
    return (x<<n) | (x>>>(32-n));
}


//sha1 hash fv
function sha1(msg)
{
	// konstansok
	var K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];

	// maga a művelet

	msg += String.fromCharCode(0x80);

	// A stringet int tömbbé konvertáljuk
	var l = Math.ceil(msg.length/4) + 2; 
	var N = Math.ceil(l/16);
	var M = new Array(N);

	for (var i=0; i<N; i++) 
	{
		M[i] = new Array(16);
		for (var j=0; j<16; j++) 
		{
			M[i][j] = (msg.charCodeAt(i*64+j*4)<<24) | (msg.charCodeAt(i*64+j*4+1)<<16) | (msg.charCodeAt(i*64+j*4+2)<<8) | (msg.charCodeAt(i*64+j*4+3));
		}
	}

	M[N-1][14] = ((msg.length-1) >>> 30) * 8;
	M[N-1][15] = ((msg.length-1)*8) & 0xffffffff;

	// kezdő hash érték beállítása
	var H0 = 0x67452301;
	var H1 = 0xefcdab89;
	var H2 = 0x98badcfe;
	var H3 = 0x10325476;
	var H4 = 0xc3d2e1f0;

	// hash számítás

	var W = new Array(80); 
	var a, b, c, d, e;
	for (var i=0; i<N; i++) 
	{
		for (var t=0;t<16; t++) 
			W[t] = M[i][t];

		for (var t=16; t<80; t++) 
			W[t] = ROTL(W[t-3] ^ W[t-8] ^ W[t-14] ^ W[t-16], 1);

	
		a = H0; 
		b = H1; 
		c = H2; 
		d = H3; 
		e = H4;

		// főciklus
		for (var t=0; t<80; t++) 
		{
			var s = Math.floor(t/20);
			var T = (ROTL(a,5) + f(s,b,c,d) + e + K[s] + W[t]) & 0xffffffff;
			e = d;
			d = c;
			c = ROTL(b, 30);
			b = a;
			a = T;
		}


		H0 = (H0+a) & 0xffffffff;
		H1 = (H1+b) & 0xffffffff; 
		H2 = (H2+c) & 0xffffffff; 
		H3 = (H3+d) & 0xffffffff; 
		H4 = (H4+e) & 0xffffffff;
	}

return H0.toHexStr() + H1.toHexStr() + H2.toHexStr() + H3.toHexStr() + H4.toHexStr();
}

//Tömb konstruktor teszter
function isArray(_obj) 
{

	if (_obj.constructor.toString().indexOf("Array") == -1)
		return false;

	else
		return true;
}


//példány referencia lekérő függvény
function getReferenceOf(_instance)
{
	refof=eval(_instance);
	return refof;
}


function changeClass(itemId, newClassName)
{
	var element= document.getElementById(itemId);
	element.className=newClassName;
}

function refreshConfirmCode()
{
	$("#confirmcodeimage").hide();
	$("#confirmcodeprogress").show();
	$("#confirmcodeprogress")[0].src="themes/global/images/animations/loading.gif";
	$("#confirmcodeimage")[0].src="?page=confirm_code&rnd="+(Math.floor(Math.random() * (9999 - 1000)) + 1000);
}


function swapConfirmCode()
{
	$("#confirmcodeprogress").hide();
	$("#confirmcodeimage").show();
}
