// This code is in the public domain. Feel free to link back to http://jan.moesen.nu/
function sprintf()
{
	if(!arguments || arguments.length < 1 || !RegExp)
	{
		return;
	}
	var str = arguments[0];
	var re = /([^%]*)%('.|0|\x20)?(-)?(\d+)?(\.\d+)?(%|b|c|d|u|f|o|s|x|X)(.*)/;
	var a = b = [], numSubstitutions = 0, numMatches = 0;
	while (a = re.exec(str))
	{
		var leftpart = a[1], pPad = a[2], pJustify = a[3], pMinLength = a[4];
		var pPrecision = a[5], pType = a[6], rightPart = a[7];
				
		//alert(a + '\n' + [a[0], leftpart, pPad, pJustify, pMinLength, pPrecision);

		numMatches++;
		if (pType == '%')
		{
			subst = '%';
		}
			else
			{
				numSubstitutions++;
				if (numSubstitutions >= arguments.length)
				{
					alert('Error! Not enough function arguments (' + (arguments.length - 1) + ', excluding the string)\nfor the number of substitution parameters in string (' + numSubstitutions + ' so far).');
				}
					var param = arguments[numSubstitutions];
					var pad = '';
					       if (pPad && pPad.substr(0,1) == "'") pad = leftpart.substr(1,1);
					  else if (pPad) pad = pPad;
					var justifyRight = true;
					       if (pJustify && pJustify === "-") justifyRight = false;
					var minLength = -1;
					       if (pMinLength) minLength = parseInt(pMinLength);
					var precision = -1;
					       if (pPrecision && pType == 'f') precision = parseInt(pPrecision.substring(1));
					var subst = param;
					       if (pType == 'b') subst = parseInt(param).toString(2);
					  else if (pType == 'c') subst = String.fromCharCode(parseInt(param));
					  else if (pType == 'd') subst = parseInt(param) ? parseInt(param) : 0;
					  else if (pType == 'u') subst = Math.abs(param);
					  else if (pType == 'f') subst = (precision > -1) ? Math.round(parseFloat(param) * Math.pow(10, precision)) / Math.pow(10, precision): parseFloat(param);
					  else if (pType == 'o') subst = parseInt(param).toString(8);
					  else if (pType == 's') subst = param;
					  else if (pType == 'x') subst = ('' + parseInt(param).toString(16)).toLowerCase();
					  else if (pType == 'X') subst = ('' + parseInt(param).toString(16)).toUpperCase();
			}
			str = leftpart + subst + rightPart;
	}
	return str;
}

// BEGIN: Zaznacz i kopiuj
function copyit(theField)
{
	var tempval = eval("document."+theField)
	tempval.focus()
	tempval.select()
	therange = tempval.createTextRange()
	therange.execCommand("Copy")
}

function copy_clip(meintext)
{
	if (window.clipboardData)
	{
   
   // the IE-manier
   window.clipboardData.setData("Text", meintext);
   
   // waarschijnlijk niet de beste manier om Moz/NS te detecteren;
   // het is mij echter onbekend vanaf welke versie dit precies werkt:
   }
   else if (window.netscape) 
   { 
   
   // dit is belangrijk maar staat nergens duidelijk vermeld:
   // you have to sign the code to enable this, or see notes below 
   netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
   
   // maak een interface naar het clipboard
   var clip = Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interfaces.nsIClipboard);
   if (!clip) return;
   
   // maak een transferable
   var trans = Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable);
   if (!trans) return;
   
   // specificeer wat voor soort data we op willen halen; text in dit geval
   trans.addDataFlavor('text/unicode');
   
   // om de data uit de transferable te halen hebben we 2 nieuwe objecten nodig   om het in op te slaan
   var str = new Object();
   var len = new Object();
   
   var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
   
   var copytext=meintext;
   
   str.data=copytext;
   
   trans.setTransferData("text/unicode",str,copytext.length*2);
   
   var clipid=Components.interfaces.nsIClipboard;
   
   if (!clip) return false;
   
   clip.setData(trans,null,clipid.kGlobalClipboard);
   
   }
   // alert("Following info was copied to your clipboard:\n\n" + meintext);
   //return false;
}

function GotoURL(object)
{
 	value = object.options[object.selectedIndex].value;
	if(value=='0')
	   return;
	window.parent.location.href = value;
}

function GGStatusRefresh(id, t)
{
	var img = new Image();
	var date = new Date();
	// var m = date.getTime();
	var time = 30; // PÃ³Åºniej z konfiguracji
	var oId = "gg"+id;
	t = parseInt(t);
	
	var urls = "http://www.gadu-gadu.pl/users/status.asp?id=%d&amp;styl=%d";

	img.src = sprintf(urls, id, t);
	document.getElementById(oId).src = img.src;
	setTimeout("GGStatusRefresh('"+id+"', "+t+");", time*1000);
}

function StatusKomunikator(t, id)
{
	GGStatusRefresh(id, 1);
}

function skypeStatusRefresh(login, url)
{
	var img = new Image();
	//var data = new Date();
	// var m = data.getTime();
	
	/*if( default_time_refresh == 'undefined' )
	{
		var default_time_refresh = 120;
	}*/
	// var seconds = default_time_refresh;
	var seconds = 120; // pí®®í½©ej bé£ºie 3adowany z konfiguracji
	
	img.src = url;
	// ------------------------------------------------------
   // Nie dzia3a z parametrem
	// +"?"+m;
   // ------------------------------------------------------
   
	var skypeid = "skype_"+login;
	document.getElementById(skypeid).src = img.src;
	setTimeout("skypeStatusRefresh('"+login+"', '"+url+"')", seconds*1000);
}

/* function send_email (e, vdomain)
{
	var text = new Array();
	var p = 'mailto:';
	var ad = '%40';
	var em = p+e+ad+vdomain;
	window.open(em, '_blank');
} */

// ------------------------------------------------------
// XHConn - Simple XMLHTTP Interface - bfults@gmail.com - 2005-04-08
// Code licensed under Creative Commons Attribution-ShareAlike License
// http://creativecommons.org/licenses/by-sa/2.0/
// ------------------------------------------------------
function XHConn()
{
	var xmlhttp, bComplete = false;
	try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); }
	catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); }
	catch (e) { try { xmlhttp = new XMLHttpRequest(); }
	catch (e) { xmlhttp = false; }}}
	if( !xmlhttp )
		return null;
	this.connect = function(sURL, sMethod, sVars, fnDone)
	{
		if( !xmlhttp )
			return false;
		bComplete = false;
	   sMethod = sMethod.toUpperCase();

   	try
		{
   	   if( sMethod == "GET" )
			{
      		xmlhttp.open(sMethod, sURL+"?"+sVars, true);
	      	sVars = "";
   	   }
      		else
      		{
					xmlhttp.open(sMethod, sURL, true);
					xmlhttp.setRequestHeader("Method", "POST "+sURL+" HTTP/1.1");
					xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
      		}
	   	xmlhttp.onreadystatechange = function()
			{
      		if (xmlhttp.readyState == 4 && !bComplete)
        		{
         		bComplete = true;
					fnDone(xmlhttp);
				}
			};
	      xmlhttp.send(sVars);
		}
   	catch(z)
		{
			return false;
		}
		return true;
	};
	return this;
}

function submitForm(id)
{
	var o = window.document.getElementById(id);
	o.rsb.disabled = true;
	o.sb.disabled = true;
	o.sb.value = lang['Please_wait'];
	o.submit();
}

function submitForm2(id, submitb)
{
	var o = document.getElementById(id)
	o.submitb.disabled = true;
	o.sb.value = lang['Please_wait'];
	o.submit();
}

/*
function Active(what)
{
	what.style.backgroundColor = factive_color;
}

function NotActive(what)
{
	what.style.backgroundColor = '';
}*/

/* Przyk3ad:
<form name="it">
<div align="center">
<input onclick="copyit('it.select1')" type="button" value="Klikni, aby zaznaczyäŸ© skopiowaä  name="cpy">

<textarea name="select1" rows="4" cols="25">
Tekst testowy, ktíª‡í· po kliknié¢©u znajdzie sièŸ· schowku
</textarea>
</div>
</form>
*/
// END: Zaznacz i kopiuj
