﻿/*****************************************************/
/*                                                    */
/* Copyright (C) 2006 Tomas Hnilica                   */
/*                                                    */
/* Tento program je volne programove vybaveni; muzete */
/* jej sirit a modifikovat  podle  ustanoveni  Obecne */
/* verejne licence GNU pro Ceskou republiku, vydavane */
/* Free  Software  Foundation  a  obcanskym sdruzenim */
/* zastudena.cz  a  to  bud  verze 2.CZE teto licence */
/* anebo  (podle vaseho uvazeni)  kterekoli  pozdejsi */
/* verze.                                             */
/*                                                    */
/******************************************************/

///////////////////////////////////////////////////////// 
// Common Flexiweb scripts
///////////////////////////////////////////////////////// 


function str_replace(srch, need, subj){
	var re = new RegExp (srch, 'gi') ;
	var newstr = subj.replace(re, need) ;
	return newstr;
}


function url_decode(subj){
	
	subj = " "+subj;
	subj = str_replace("&nbsp;"," ",subj);
	subj = str_replace("&lt;","<",subj);
	subj = str_replace("&gt;",">",subj);
	subj = str_replace("&amp;","&",subj);
	subj = str_replace("\"","&quot;",subj);
	
	subj = str_replace("&copy;","©",subj);
	subj = str_replace("&reg;","®",subj);
	
	return subj;
}

		function trim(inputString) {
		   // Removes leading and trailing spaces from the passed string. Also removes
		   // consecutive spaces and replaces it with one space. If something besides
		   // a string is passed in (null, custom object, etc.) then return the input.
		   if (typeof inputString != "string") { return inputString; }
		   var retValue = inputString;
		   var ch = retValue.substring(0, 1);
		   while (ch == " ") { // Check for spaces at the beginning of the string
		      retValue = retValue.substring(1, retValue.length);
		      ch = retValue.substring(0, 1);
		   }
		   ch = retValue.substring(retValue.length-1, retValue.length);
		   while (ch == " ") { // Check for spaces at the end of the string
		      retValue = retValue.substring(0, retValue.length-1);
		      ch = retValue.substring(retValue.length-1, retValue.length);
		   }
		   while (retValue.indexOf("  ") != -1) { // Note that there are two spaces in the string - look for multiple spaces within the string
		      retValue = retValue.substring(0, retValue.indexOf("  ")) + retValue.substring(retValue.indexOf("  ")+1, retValue.length); // Again, there are two spaces in each of the strings
		   }
		   return retValue; // Return the trimmed string back to the user
		} // Ends the "trim" function
		

		function explode(delimiter,item) {
			tempArray=new Array(1);
			var Count=0;
			var tempString=new String(item);
			while (tempString.indexOf(delimiter)>0) {
			tempArray[Count]=tempString.substr(0,tempString.indexOf(delimiter));
			tempString=tempString.substr(tempString.indexOf(delimiter)+1,tempString.length-tempString.indexOf(delimiter)+1); 
			Count=Count+1
			}
			tempArray[Count]=tempString;
			return tempArray;
			}




/*
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@ 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;

}



