﻿/******************************************************/
/*                                                    */
/* Copyright (C) 2010 Tomas Hnilica                   */
/*                                                    */
/******************************************************/

/*
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@ FUNCTIONS FOR ADVANCED EDITING FEATURES IN LIST MODE
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
*/

function lc_oc(elm)
{		
	var myQS = location.href;
	myQS = setURLParm(myQS,"sfx", base64Encode(elm.getAttribute("sortfield")));
	myQS = setURLParm(myQS,"smx", base64Encode(elm.getAttribute("sortmethod")));
	location.href = myQS;
}

function setURLParm(qs,key,val)
{ 
	
//	key = key.replace("=","%3D");
//	key = key.replace("=","");
	qs = qs.replace("php#","php");
	var keypos = qs.indexOf("&" + key);
	if (keypos == -1) keypos = qs.indexOf("?" + key);
	if (keypos == -1) {
		fkeypos = qs.indexOf("#");
		if (fkeypos == -1) {
		   if (qs.indexOf("?") == -1) return (qs + "?" + key + "=" + escape(val));
		   else return (qs + "&" + key + "=" + val);
		} else {
		   if (qs.indexOf("?") == -1) return (qs.substr(0,fkeypos) + "?" + key + "=" + escape(val) + qs.substr(fkeypos));
		   else return (qs.substr(0,fkeypos) + "&" + key + "=" + val + qs.substr(fkeypos));
		   
		}
	}
	else {
		var keypos2 = qs.indexOf("&", keypos + 1);
		if (keypos2 == -1) return (qs.substr(0, keypos + 1) + key + "=" + escape(val));
		else return (qs.substr(0, keypos + 1) + key + "=" + val + qs.substr(keypos2));
	}

}

/*
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@ END
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@


@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@ BASE64 ENCODING JS FUNCTION
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
*/

function base64Encode(p_str)
{ 
	
	var BaseTable = new Array(	"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P",
						"Q","R","S","T","U","V","W","X","Y","Z","a","b","c","d","e","f",
						"g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v",
						"w","x","y","z","0","1","2","3","4","5","6","7","8","9","+","/");

	var out = "";
	var c1, c2, c3;
	var b1, b2, b3, b4;

	var n			= p_str.length;
	var n3byt		= parseInt(n / 3);     	/* how 3 bytes groups? */
	var nrest		= n % 3;     			/* the remaining bytes from the grouping */
	var k			= n3byt * 3; 			/* we are doing 3 bytes at a time */
	var linelength 	= 0;         			/* current linelength */
	var i          	= 0;         			/* index */

	/* do the 3-bytes groups ... */

	while ( k > i )
	{

		c1 = p_str.charCodeAt(i);
		c2 = p_str.charCodeAt(i + 1);
		c3 = p_str.charCodeAt(i + 2);

		out += BaseTable[((c1 & 0xFC) >> 2)];
		out += BaseTable[(((c1 & 0x03) << 4) | ((c2 & 0xF0) >> 4))];
		out += BaseTable[(((c2 & 0x0F) << 2) | ((c3 & 0xC0) >> 6))];
		out += BaseTable[(c3 & 0x3F)];

		if ((linelength += 4) >= 76)
		{
			out += "\r\n";
			linelength = 0;
		}

		i += 3;
	}

	if (nrest > 0)
	{
		if ((linelength += 4) >= 76) out += "\r\n";

		c1 = p_str.charCodeAt(k);
		if (n > (k + 1)) c2 = p_str.charCodeAt(k + 1);

		if (nrest==2)
		{
			/* 2 bytes left */

			out += BaseTable[(( c1 & 0xFC) >> 2)];
			out += BaseTable[(((c1 & 0x03) << 4) | ((c2 & 0xF0) >> 4))];
			out += BaseTable[(( c2 & 0x0F) << 2)];
			out += "=";
		}
		else
		{
			if (nrest==1)
			{
				/* 1 byte left */

				out += BaseTable[((c1 & 0xFC) >> 2)];
				out += BaseTable[((c1 & 0x03) << 4)];
				out += "==";
			}
		}
	}

	return out;

}





