var letistni_napovidac = null;
var letistni_napovidac_zdroj = null;
var letistni_napovidac_zanik;
var letistni_napovidac_to;
var letistni_napovidac_posledni="";
var letiste_xmlhttp;
var letistni_napovidac_zaviratko=document.createElement("a");
letistni_napovidac_zaviratko.className="zaviratko";
letistni_napovidac_zaviratko.href="javascript:letiste_napovidac_zrusit()";


function letiste_napovidac(zdroj,oblast) {
	if (!oblast) oblast="L";
	if (zdroj.value.length<3 || (letistni_napovidac_zdroj!=zdroj && letistni_napovidac_zdroj!=null)) {
		letiste_napovidac_zrusit();
		if (zdroj.value.length<3) return;
	}
	if (letistni_napovidac && letistni_napovidac_zdroj==zdroj) {
		letiste_napovidac_priprav_stahovani(oblast);
		return;
	}

	letistni_napovidac_zdroj=zdroj;
	letistni_napovidac_zanik=false;
	letistni_napovidac = document.createElement("div");
	letistni_napovidac.className="napovidac";
	letistni_napovidac.style.left=poziceX(zdroj)+"px";
	letistni_napovidac.style.top=(poziceY(zdroj)+25)+"px";
	letistni_napovidac.onmouseover=function() {letistni_napovidac_zanik=false;}
	letistni_napovidac.onclick=function() {letistni_napovidac_zanik=false;}
	if (oblast=="L") letistni_napovidac.innerHTML="<span class=\"informace\">Napište několik znaků hledaného letiště...</span>";
	if (oblast=="H") letistni_napovidac.innerHTML="<span class=\"informace\">Napište několik znaků hledaného města...</span>";
	if (oblast=="A") letistni_napovidac.innerHTML="<span class=\"informace\">Napište několik znaků hledaného města...</span>";
	if (oblast.length>1) letistni_napovidac.innerHTML="<span class=\"informace\">Napište několik znaků hledaného města...</span>";
	document.onkeydown=function(e) {
		var keynum;
		if(window.event && window.event.keyCode) {
			keynum = window.event.keyCode;
		}
		else if (e.keyCode) {
			keynum =  e.keyCode;
		} else if (e.which) {
			keynum = e.which;
  		}
  		if (keynum==27) letiste_napovidac_zrusit();
	}	
	document.body.appendChild(letistni_napovidac);
	letiste_napovidac_priprav_stahovani(oblast);
}

function letiste_napovidac_priprav_stahovani(oblast) {
	letistni_napovidac_posledni = letistni_napovidac_zdroj.value;
	if (letistni_napovidac_to) window.clearTimeout(letistni_napovidac_to);
	letistni_napovidac_to = window.setTimeout("letiste_napovidac_stahuj('"+oblast+"')",500);
}

function letiste_napovidac_stahuj(oblast) {
	if (!letistni_napovidac_zdroj || letistni_napovidac_posledni != letistni_napovidac_zdroj.value) {return;}
	if (letiste_xmlhttp) return;

	letistni_napovidac.innerHTML="<span class=\"informace\">Stahuji možnosti...</span>";
	letiste_xmlhttp = (window.XMLHttpRequest ? new XMLHttpRequest : (window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : false)); 
	if (!letiste_xmlhttp) return false;
	letiste_xmlhttp.open("GET","napovidac.xml?cil="+oblast+"&slova="+urlencode(letistni_napovidac_zdroj.value));
	//letiste_xmlhttp.overrideMimeType("text/xml; charset=utf-8");
	letiste_xmlhttp.onreadystatechange = function() { 
		letiste_napovidac_zobraz(oblast);
	}
	letiste_xmlhttp.send("");
}


function letiste_napovidac_zobraz(oblast) {
	if (!letiste_xmlhttp) return;
	if (letiste_xmlhttp.readyState!=4) return;

	var data=letiste_xmlhttp.responseXML;
	var odpovedi=data.getElementsByTagName('moznost');
	var el,i,kod,popis,nazev;
	
	for (i=0;i<letistni_napovidac.childNodes.length;i++) {
		letistni_napovidac.removeChild(letistni_napovidac.childNodes[i]);
	}
	
	for (i=0;i<odpovedi.length;i++) {
		kod=odpovedi[i].getAttribute("kod");
		nazev=odpovedi[i].getAttribute("popis");
		popis=odpovedi[i].firstChild.data;
		popis=str_replace("***","<b>",popis);
		popis=str_replace("@@@","</b>",popis);
		el=document.createElement("a");
		el.setAttribute("href","javascript:letiste_napovidac_vypln('"+kod+"','"+nazev+"')");
		el.innerHTML=popis;
		letistni_napovidac.appendChild(el);	
	}
	if (odpovedi.length==0) {
		if (oblast=="L") letistni_napovidac.innerHTML="<span class=\"informace\">Žádné letiště bohužel neodpovídá...</span>";
		if (oblast=="H") letistni_napovidac.innerHTML="<span class=\"informace\">Žádné město bohužel neodpovídá...</span>";
		if (oblast=="A") letistni_napovidac.innerHTML="<span class=\"informace\">Žádné město bohužel neodpovídá...</span>";
		if (oblast.length>1) letistni_napovidac.innerHTML="<span class=\"informace\">Žádné město bohužel neodpovídá...</span>";
	}
	
	letistni_napovidac_zaviratko.style.left=(poziceX(letistni_napovidac)+272)+"px";
	letistni_napovidac_zaviratko.style.top=(poziceY(letistni_napovidac)-28)+"px";
	letistni_napovidac.parentNode.appendChild(letistni_napovidac_zaviratko);
	
	letiste_xmlhttp=null;
}


function letiste_napovidac_priprav_zanik(zdroj) {
	if (zdroj==letistni_napovidac_zdroj) {
		letistni_napovidac_zanik=true;
		window.setTimeout("letiste_napovidac_zanikni()",1000);
	}
}

function letiste_napovidac_vypln(co,nazev) {
	if (!letistni_napovidac_zdroj) return;
	var napovidac_data=document.getElementById(letistni_napovidac_zdroj.id+"_data");
	letistni_napovidac_zdroj.value=nazev;
	napovidac_data.value=co;
	letiste_napovidac_zrusit();
}

function letiste_napovidac_zanikni() {
	if (letistni_napovidac_zanik) letiste_napovidac_zrusit();
}

function letiste_napovidac_zrusit() {
	if (!letistni_napovidac) return;
	
	//Toto je ještě třeba pořešit
	letistni_napovidac.parentNode.removeChild(letistni_napovidac);
	letistni_napovidac=null;
	letistni_napovidac_zdroj=null;
	letistni_napovidac_zanik=false;
	letistni_napovidac_zaviratko.parentNode.removeChild(letistni_napovidac_zaviratko);	
	document.onkeydown=null;	
}

var vybirac_letist=null;
var vybirac_letist_zdroj=null;
var vybirac_letist_xmlhttp=null;
var vybirac_letist_zaviratko=document.createElement("a");
vybirac_letist_zaviratko.className="zaviratko";
vybirac_letist_zaviratko.href="javascript:vyber_letist_zrusit()";

function vyber_letist(tlacitko,zdroj,oblast,posunDoleva) {
	if (!oblast) oblast="L";
	if (posunDoleva==undefined) posunDoleva=false;
	if (vybirac_letist) {
		vyber_letist_zrusit();
		return;
	}
	
	vybirac_letist_zdroj=zdroj;
	
	vybirac_letist=document.createElement("div");
	vybirac_letist.className="napovidac";
	if (posunDoleva) vybirac_letist.style.left=(poziceX(tlacitko)-250)+"px";
		else vybirac_letist.style.left=(poziceX(tlacitko)-150)+"px";
	vybirac_letist.style.top=(poziceY(tlacitko)+20)+"px";
	document.onkeydown=function(e) {
		var keycode;
		if(window.event && window.event.keyCode) {
			keynum = window.event.keyCode;
		}
		else if (e.keyCode) {
			keynum =  e.keyCode;
		} else if (e.which) {
			keynum = e.which;
  		}
  		if (keynum==27) vyber_letist_zrusit();
	}
	vybirac_letist.innerHTML="<span class=\"informace\">Stahuji výběr zemí...</span>";
	
	document.body.appendChild(vybirac_letist);
	vybirac_letist_xmlhttp=(window.XMLHttpRequest ? new XMLHttpRequest : (window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : false)); 
	if (oblast=="L") akce="letiste_vyber";
	if (oblast=="H") akce="hotel_vyber";
	if (oblast=="A") akce="auta_vyber";
	if (oblast.length>1) akce="kombinace_vyber";
	vybirac_letist_xmlhttp.open("GET","napovidac.xml?akce="+akce+"&cil="+oblast);
	//letiste_xmlhttp.overrideMimeType("text/xml; charset=windows-1250");	
	vybirac_letist_xmlhttp.onreadystatechange = function() { 
		vybirac_letist_zobraz(oblast);
	}	
	vybirac_letist_xmlhttp.send("");
}



function vybirac_letist_zobraz(oblast) {
	if (!oblast) oblast="L";
	if (!vybirac_letist_xmlhttp) return;
	if (vybirac_letist_xmlhttp.readyState!=4) return;

	var data=vybirac_letist_xmlhttp.responseXML;
	var odpovedi=data.getElementsByTagName('zeme');
	var el,i,kod,popis,pocet;
	
	for (i=0;i<vybirac_letist.childNodes.length;i++) {
		vybirac_letist.removeChild(vybirac_letist.childNodes[i]);
	}
	
	for (i=0;i<odpovedi.length;i++) {
		kod=odpovedi[i].getAttribute("kod");
		popis=odpovedi[i].firstChild.data;
		el=document.createElement("a");
		el.setAttribute("href","javascript:vybirac_letist_zeme('"+kod+"','"+oblast+"')");
		el.innerHTML=popis;
		vybirac_letist.appendChild(el);	
	}
	if (odpovedi.length==0) {
		vybirac_letist.innerHTML="<span class=\"informace\">Žádné země nebyla nalezena...</span>";
	}

	vybirac_letist_zaviratko.style.left=(poziceX(vybirac_letist)+272)+"px";
	vybirac_letist_zaviratko.style.top=(poziceY(vybirac_letist)-28)+"px";
	vybirac_letist.parentNode.appendChild(vybirac_letist_zaviratko);
	
	vybirac_letist_xmlhttp=null;
}

function vybirac_letist_zeme(kod,oblast) {
	vybirac_letist_xmlhttp=(window.XMLHttpRequest ? new XMLHttpRequest : (window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : false)); 
	if (oblast=="L") akce="letiste_vyber";
	if (oblast=="H") akce="hotel_vyber";
	if (oblast=="A") akce="auta_vyber";
	vybirac_letist_xmlhttp.open("GET","napovidac.xml?akce="+akce+"&zeme="+kod+"&cil="+oblast);
	vybirac_letist_xmlhttp.onreadystatechange = function() { 
		vybirac_letist_zobraz_zeme(oblast);
	}	
	vybirac_letist_xmlhttp.send("");
	if (oblast=="L") vybirac_letist.innerHTML="<span class=\"informace\">Stahuji letiště ve vybrané zemi...</span>";
	if (oblast=="H") vybirac_letist.innerHTML="<span class=\"informace\">Stahuji města ve vybrané zemi...</span>";
	if (oblast=="A") vybirac_letist.innerHTML="<span class=\"informace\">Stahuji města ve vybrané zemi...</span>";
	if (oblast.length>1) vybirac_letist.innerHTML="<span class=\"informace\">Stahuji města ve vybrané zemi...</span>";	
}

function vybirac_letist_zobraz_zeme(oblast) {
	if (!vybirac_letist_xmlhttp) return;
	if (vybirac_letist_xmlhttp.readyState!=4) return;

	var data=vybirac_letist_xmlhttp.responseXML;
	var odpovedi=data.getElementsByTagName('letiste');
	var el,i,kod,popis,pocet,nazev;
	
	for (i=0;i<vybirac_letist.childNodes.length;i++) {
		vybirac_letist.removeChild(vybirac_letist.childNodes[i]);
	}
	
	for (i=0;i<odpovedi.length;i++) {
		kod=odpovedi[i].getAttribute("kod");
		nazev=odpovedi[i].getAttribute("popis");
		popis=odpovedi[i].firstChild.data;
		el=document.createElement("a");
		el.setAttribute("href","javascript:vybirac_letist_vyber('"+kod+"','"+nazev+"')");
		el.innerHTML=popis;
		vybirac_letist.appendChild(el);	
	}
	if (odpovedi.length==0) {
		if (oblast=="L")  vybirac_letist.innerHTML="<span class=\"informace\">Žádné letiště nebylo nalezeno...</span>";
		if (oblast=="H")  vybirac_letist.innerHTML="<span class=\"informace\">Žádné město nebylo nalezeno...</span>";
		if (oblast=="A")  vybirac_letist.innerHTML="<span class=\"informace\">Žádné město nebylo nalezeno...</span>";
		if (oblast.length>1) vybirac_letist.innerHTML="<span class=\"informace\">Žádné město nebylo nalezeno...</span>";		
	}

	vybirac_letist_zaviratko.style.left=(poziceX(vybirac_letist)+272)+"px";
	vybirac_letist_zaviratko.style.top=(poziceY(vybirac_letist)-28)+"px";
	vybirac_letist.parentNode.appendChild(vybirac_letist_zaviratko);
	
	vybirac_letist_xmlhttp=null;
}

function vybirac_letist_vyber(co,nazev) {
	if (!vybirac_letist_zdroj) return;
	var napovidac_data=document.getElementById(vybirac_letist_zdroj.id+"_data");
	vybirac_letist_zdroj.value=nazev;
	napovidac_data.value=co;
	vyber_letist_zrusit();
}
function letiste_napovidac_vypln(co,nazev) {
	if (!letistni_napovidac_zdroj) return;
	var napovidac_data=document.getElementById(letistni_napovidac_zdroj.id+"_data");
	letistni_napovidac_zdroj.value=nazev;
	napovidac_data.value=co;
	letiste_napovidac_zrusit();
}


function vyber_letist_zrusit() {
	vybirac_letist.parentNode.removeChild(vybirac_letist);
	vybirac_letist_zaviratko.parentNode.removeChild(vybirac_letist_zaviratko);
	vybirac_letist=null;
	vybirac_letist_zdroj=null;
	document.onkeydown=null;
}



















function poziceX(zdroj) {
	var vrat = 0;
	kontrola=0;
	while( zdroj != null && kontrola<100) {
		vrat += zdroj.offsetLeft;
		zdroj = zdroj.offsetParent;
		kontrola++;
	}
	return vrat;
}


function poziceY(zdroj) {
	var vrat = 0;
	kontrola=0;
	while( zdroj != null && kontrola<100) {
		vrat += zdroj.offsetTop;
		zdroj = zdroj.offsetParent;
		kontrola++;
	}
	return vrat;
}

function str_replace(z,na,zdroj) {
	textik=new String(zdroj);
	idt=new String(z);
	kontrola=0;
	for (i=0;i<textik.length;i++) {
		if (textik.charAt(i)==idt.charAt(0)) {
			var plati=true;
			for (j=1;j<idt.length;j++) {
				if (textik.charAt(i+j)!=idt.charAt(j)) plati=false;
			}
			if (plati) {
				textik=textik.substr(0,i)+na+textik.substr(i+idt.length);
			}
		}
		if (kontrola>1000) break;
		kontrola++;
	}
	return textik;
}

var stav_submenu=new Array();
function ukazat(cil) {
	if (stav_submenu[cil]==false || stav_submenu[cil]==undefined) {
		stav_submenu[cil]=true;
		var el=document.getElementById('submenu'+cil);
		if (el!=undefined) el.className='submenu';
		el=document.getElementById('menu'+cil);
		if (el!=undefined)el.className='kotva on';
	}
}
function schovat(cil) {
	stav_submenu[cil]=false;
	window.setTimeout('kill('+cil+')',150);
}
function kill(cil) {
	if (stav_submenu[cil]==false) {
		var el=document.getElementById('submenu'+cil);
		if (el!=undefined) el.className='submenu inv';
		el=document.getElementById('menu'+cil);
		if (el!=undefined) el.className='kotva';

	}
}

function preloz_cenu(vstup) {
	vstup=Math.round(vstup);
	if (vstup>1000) {
		vstup_str=new String(vstup);
		vstup=vstup_str.substr(0,vstup_str.length-3)+'.'+vstup_str.substr(vstup_str.length-3);
	}
	return vstup+' Kč';
}
function ukazDetailyLetu(id) {
	document.getElementById('tlacitko_infocast_'+id).className="inv";
	document.getElementById('tlacitko_infocast2_'+id).className="vysledek_tlacitko vysledek_tlacitko_2";
	var i,el;
	i=1;
	while (true) {
		el=document.getElementById("infocast_"+id+"_"+i);
		if (!el) break;
		el.className="info_cast doplnujici_info";
		i++;
	}
}
function  skryjDetailyLetu(id) {
	document.getElementById('tlacitko_infocast_'+id).className="vysledek_tlacitko vysledek_tlacitko_2";
	document.getElementById('tlacitko_infocast2_'+id).className="inv";
	var i,el;
	i=1;
	while (true) {
		el=document.getElementById("infocast_"+id+"_"+i);
		if (!el) break;
		el.className="inv";
		i++;
	}
}


var firda=true;
var firda_el=[];
function formularInteligentniRozsahDat(den1,mesic1,den2,mesic2) {
	var el1=document.getElementById(den1);
	var el2=document.getElementById(mesic1);
	var el3=document.getElementById(den2);
	var el4=document.getElementById(mesic2);
	el1.onchange=function() {
		formularInteligentniKontrola(0);
	}
	el2.onchange=function() {
		formularInteligentniKontrola(1);
	}
	el3.onchange=function() {
		formularInteligentniKontrola(2);
	}
	el4.onchange=function() {
		formularInteligentniKontrola(3);
	}
	firda_el=[el1,el2,el3,el4];
}

function formularInteligentniKontrola(co) {
	if (!firda) {return;}
	if (co==1) {
		var i,mesic2,rok2;
		var mesic=firda_el[1].value.substr(0,firda_el[1].value.indexOf("-"));
		var rok=firda_el[1].value.substr(firda_el[1].value.indexOf("-")+1);
		var els=firda_el[3].children;
		var prvniNormalni=null;
		var nutnoSwitchnout=false;
		for (i=0;i<els.length;i++) {
			mesic2=els[i].value.substr(0,els[i].value.indexOf("-"))*1;
			rok2=els[i].value.substr(els[i].value.indexOf("-")+1)*1;
			if (rok2<rok || (rok2==rok && mesic2<mesic)) {
				els[i].disabled=true;
				if (els[i].selected) {nutnoSwitchnout=true; els[i].selected=false;}
			} else {
				els[i].disabled=false;
				if (!prvniNormalni) prvniNormalni=i;
			}
		}
		if (nutnoSwitchnout) {
			var denKeSwitchi=firda_el[0].value*1;
			denKeSwitchi+=1;
			if (denKeSwitchi>28) {
				prvniNormalni++;
				denKeSwitchi=1;
			}
			els[prvniNormalni].selected=true;
			firda_el[2].value=denKeSwitchi;
		}
		if (firda_el[1].value==firda_el[3].value && firda_el[0].value>=firda_el[2].value*1) {
			firda_el[0].value=firda_el[2].value*1-1;
			if (firda_el[0].value==0) {
				firda_el[0].value=28;
				firda_el[1].selectedIndex=firda_el[1].selectedIndex-1;
			}
		}
	}
	if (co==3) {
		var i,mesic2,rok2;
		var mesic=firda_el[3].value.substr(0,firda_el[3].value.indexOf("-"));
		var rok=firda_el[3].value.substr(firda_el[3].value.indexOf("-")+1);
		var els=firda_el[1].children;
		var posledniNormalni=null;
		var nutnoSwitchnout=false;
		for (i=0;i<els.length;i++) {
			mesic2=els[i].value.substr(0,els[i].value.indexOf("-"))*1;
			rok2=els[i].value.substr(els[i].value.indexOf("-")+1)*1;
			if (rok2>rok || (rok2==rok && mesic2>mesic)) {
				els[i].disabled=true;
				if (els[i].selected) {nutnoSwitchnout=true; els[i].selected=false;}
			} else {
				els[i].disabled=false;
				posledniNormalni=i;
			}
		}
		if (nutnoSwitchnout) {
			var denKeSwitchi=firda_el[2].value*1;
			denKeSwitchi-=1;
			if (denKeSwitchi<=0) {
				posledniNormalni--;
				denKeSwitchi=28;
			}
			els[posledniNormalni].selected=true;
			firda_el[0].value=denKeSwitchi;
		}
		if (firda_el[1].value==firda_el[3].value && firda_el[0].value>=firda_el[2].value*1) {
			firda_el[0].value=firda_el[2].value*1-1;
			if (firda_el[0].value==0) {
				firda_el[0].value=28;
				firda_el[1].selectedIndex=firda_el[1].selectedIndex-1;
			}
		}
	
	}	
}

function formularInteligentniRozsahDatZapnout(co) {
	firda=co;
}

var hotelohledackaTimeout;
function hotelohledacka() {
	if (hotelohledackaTimeout) {
		window.clearTimeout(hotelohledackaTimeout);
		hotelohledackaTimeout=0;
	}
	hotelohledackaTimeout=window.setTimeout("hotelohledackaGo()",500);
}

function hotelohledackaGo() {
	if (hotelohledackaTimeout) {
		window.clearTimeout(hotelohledackaTimeout);
		hotelohledackaTimeout=0;
	}
	var zdroj=document.getElementById("hotel_searcher");
	var slova=zdroj.value.toLowerCase();

	var i,el,el2,nazev,je,asponJeden;
	
	if (!slova) {
		for (i=1;i<999;i++) {
			el=document.getElementById("vyhledany_hotylek_"+i);
			if (!el) continue;
			el.className="vysledek_box";
		}
		document.getElementById("nic_nezbylo_po_filtru").className="inv";
		return;
	}
	
	asponJeden=false;
	for (i=1;i<999;i++) {
		el=document.getElementById("vyhledany_hotylek_"+i);
		if (!el) continue;
		el2=document.getElementById("vyhledany_hotylek_nazev_"+i);
		nazev=el2.innerHTML.toLowerCase();
		if (nazev.indexOf(slova)==-1) {
			je=false;
		} else {
			je=true;
			asponJeden=true;
		}
		
		if (!je) el.className="inv";
			else el.className="vysledek_box";
	}
	
	el=document.getElementById("nic_nezbylo_po_filtru");
	if (!asponJeden) {
		el.className="";
	} else {
		el.className="inv";
	}
	
}


function urlencode (str) {
    // http://kevin.vanzonneveld.net
    // +   original by: Philip Peterson
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +      input by: AJ
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: Brett Zamir (http://brett-zamir.me)
    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +      input by: travc
    // +      input by: Brett Zamir (http://brett-zamir.me)
    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: Lars Fischer
    // +      input by: Ratheous
    // +      reimplemented by: Brett Zamir (http://brett-zamir.me)
    // %          note 1: This reflects PHP 5.3/6.0+ behavior
    // *     example 1: urlencode('Kevin van Zonneveld!');
    // *     returns 1: 'Kevin+van+Zonneveld%21'
    // *     example 2: urlencode('http://kevin.vanzonneveld.net/');
    // *     returns 2: 'http%3A%2F%2Fkevin.vanzonneveld.net%2F'
    // *     example 3: urlencode('http://www.google.nl/search?q=php.js&ie=utf-8&oe=utf-8&aq=t&rls=com.ubuntu:en-US:unofficial&client=firefox-a');
    // *     returns 3: 'http%3A%2F%2Fwww.google.nl%2Fsearch%3Fq%3Dphp.js%26ie%3Dutf-8%26oe%3Dutf-8%26aq%3Dt%26rls%3Dcom.ubuntu%3Aen-US%3Aunofficial%26client%3Dfirefox-a'
    // Chybku s novými řádky opravil Okoun
 
 	str=str_replace("\n","<br />",str);
 
 
    var hexStr = function (dec) {
        return '%' + dec.toString(16).toUpperCase();
    };
 
    var ret = '',
            unreserved = /[\w.-]/; // A-Za-z0-9_.- // Tilde is not here for historical reasons; to preserve it, use rawurlencode instead
    str = (str+'').toString();
 
    for (var i = 0, dl = str.length; i < dl; i++) {
        var ch = str.charAt(i);
        if (unreserved.test(ch)) {
            ret += ch;
        }
        else {
            var code = str.charCodeAt(i);
            // Reserved assumed to be in UTF-8, as in PHP
            if (code === 32) {
                ret += '+'; // %20 in rawurlencode
            }
            else if (code < 128) { // 1 byte
                ret += hexStr(code);
            }
            else if (code >= 128 && code < 2048) { // 2 bytes
                ret += hexStr((code >> 6) | 0xC0);
                ret += hexStr((code & 0x3F) | 0x80);
            }
            else if (code >= 2048 && code < 65536) { // 3 bytes
                ret += hexStr((code >> 12) | 0xE0);
                ret += hexStr(((code >> 6) & 0x3F) | 0x80);
                ret += hexStr((code & 0x3F) | 0x80);
            }
            else if (code >= 65536) { // 4 bytes
                ret += hexStr((code >> 18) | 0xF0);
                ret += hexStr(((code >> 12) & 0x3F) | 0x80);
                ret += hexStr(((code >> 6) & 0x3F) | 0x80);
                ret += hexStr((code & 0x3F) | 0x80);
            }
        }
    }
   
    return ret;
}
