// file features.js

/* global declarations */
var folderChangeActive=false;

/* FUNCTIONS *********************************************************************/
$(document).ready(function()
{
 $("#logout").click(function()
 {
  document.forms.logoutForm.submit();
  return false;
 });
 
 $("input.poleSearch[name=sp]").focus(function()
 {
  if(this.value=='hledej...')
  {
   this.value='';
   changeColor(this, '#000');
  }
 }).blur(function()
 {
  if(this.value=='')
  {
   this.value='hledej...';
   changeColor(this, false);
  }
 });
 
 $("input.poleSearch[name=login]").focus(function()
 {
  if(this.value=='login')
  {
   this.value='';
   changeColor(this, '#000');
  }
 }).blur(function()
 {
  if(this.value=='')
  {
   this.value='login';
   changeColor(this, false);
  }
 });
 
 $("input.poleSearch[name=pwd]").focus(function()
 {
  if(this.value=='heslo')
  {
   this.value='';
   changeColor(this, '#000');
  }
 }).blur(function()
 {
  if(this.value=='')
  {
   this.value='login';
   changeColor(this, false);
  }
 });
 
 
 /*$("input.bTransfer").click(
 function()
 {
  $(this).parent().parent().effect("transfer", { to: $("#cartBox1") }, 800);
 }
 );*/
 $("form.fTransfer").submit(function()
 {
  $(this).effect("transfer", { to: $("#cartBox1") }, 800);
 });
});


function changeColor(el, color)
{
 if(color==false)
 {$(el).removeAttr("style");}
 else
 {$(el).attr("style", "color: "+color);}
 
 return false;
}


/* removeIndex(dd)
 * @param dd - element select
 * @return - void
 */
function removeIndex(dd)
{
 if(dd.options[0].value=='' || dd.options[0].value=='NULL')
 {
  dd.remove(dd.options[0]);
 }
}


/* makeSure(txt)
 * @param name - name of given element
 * @return - true if OK, false if canceled
 */
function makeSure(txt)
{
 return (confirm(txt))? true : false;
}


/* isElement(name, num)
 * @param name - output string
 * @param num - element's number in HTML Object collection
 * @return - true if OK, false if canceled
 */
function isElement(name, num)
{
 var x=document.getElementsByName(name);
 if(typeof(x)=="undefined" || typeof(x[num])=="undefined")
 {return false;}
 
 return x[num];
}


/* convertToInput()
 * @param el - a href element
 * 
 */
function convertToInput(el, key, val)
{
 if(folderChangeActive==true)
 {
  el.blur();
  return false;
 }
 
 var div=el.parentNode.parentNode;
 if(div)
 {div.style.display='none';}
 
 var nextDiv=div.nextSibling;
 if(nextDiv)
 {nextDiv.style.display='';}
 
 //el.style.visibility='hidden';
 
 folderChangeActive=true;
 
 var input=document.getElementById('folder_name_'+(key));
 if(input)
 {
  input.disabled=false;
  input.focus();
  input.select();
 }
 
 var span=document.getElementById('folder_id_'+(key));
 if(span)
 {span.innerHTML='<input name="id" type="hidden" value="'+(key)+'" />';}
 
 return false;
}


/* cancelInput()
 * @param el - a href element
 * 
 */
function cancelInput(el, key, val)
{
 var div=el.parentNode;
 if(div)
 {div.style.display='none';}
 
 var nextDiv=div.previousSibling;
 if(nextDiv)
 {nextDiv.style.display='';}
 
 var input=document.getElementById('folder_name_'+(key));
 if(input)
 {
  input.disabled=true;
  input.value=val;
 }
 
 var span=document.getElementById('folder_id_'+(key));
 if(span)
 {span.innerHTML='';}
 
 folderChangeActive=false;
 
 return false;
}


/* showHideEdit()
 * @param id - element id
 * 
 */
function showHideEdit(id)
{
 var folderEdit=document.getElementById('folder_edit_'+(id));
 if(folderEdit)
 {folderEdit.style.visibility=(folderEdit.style.visibility=='hidden')? '' : 'hidden';}
 
 return false;
}


/* submitMultiple()
 * @param val - value to determine multiple action
 * 
 */
function submitMultiple(val)
{
 if(document.forms.viewTableForm)
 {
  var newInput=document.createElement('input');
  newInput.name='multiple';
  newInput.type='hidden';
  newInput.value=val;
  document.forms.viewTableForm.appendChild(newInput);
  document.forms.viewTableForm.submit();
 }
 
 return false;
}


/* submitExport()
 * 
 */
function submitExport(val)
{
 if(document.forms.viewTableForm)
 {
  var keys=$.map($("input:checked[name^=sel_more]"), function(a){ return a.value; }).join(",");
  
  if(keys.length==0)
  {
   alert("Vyberte položku!");
   return false;
  }
  
  document.forms.viewTableForm.action='/io/shop/orders/export?items='+keys;
  
  document.forms.viewTableForm.submit();
 }
 
 return false;
}


/* submitAdd()
 * @param name - name to determine action
 * 
 */
function submitAdd(name)
{
 if(document.dForm)
 {
  var newInput=document.createElement('input');
  newInput.name=name;
  newInput.type='hidden';
  newInput.value=document.getElementById('mult_value').value;
  document.dForm.appendChild(newInput);
  document.dForm.submit();
 }
 
 return false;
}


/* submitValue()
 * @param name - name to determine action
 * @param value - value to be send
 * 
 */
function submitValue(name, value)
{
 if(document.dForm)
 {
  var newInput=document.createElement('input');
  newInput.name=name;
  newInput.type='hidden';
  newInput.value=value;
  document.dForm.appendChild(newInput);
  document.dForm.submit();
 }
 
 return false;
}


/* getTree()
 * @param val - value to determine multiple action
 * 
 */
function getTree(val)
{
 x_getTree(ppr);
 
 function ppr(str)
 {
  z.innerHTML=str+' &nbsp;<a class="smazat" href="#" onclick="return removeRow(this);">'+txtRem+'</a>';
 }
 
 
 return false;
}

/* printInput(curr, txtRem)
 * @param curr - a href element
 * @param txt...  - string with writing
 * @param Bcount - boolean count rows? 
 * 
 */
function printInput(curr, txtRem, Bcount)
{
 tableId=curr.parentNode.parentNode.parentNode.parentNode.id;
 
 if(tableId.length<1)
 {return false;}
 
 var i=curr.parentNode.parentNode.rowIndex;
 var x=document.getElementById(tableId).insertRow(i);
 // prvni bunka
 var y=x.insertCell(0);
 var desc=new Number(i);
 y.innerHTML=desc.toString()+'.';
 y.className='aRight';
 // druha bunka
 var z=x.insertCell(1);
 
 z.innerHTML='<input type="text" name="val[]" value="" size="25" /> &nbsp;<a class="smazat" href="#" onclick="return removeRow(this);">'+txtRem+'</a>';
 
 return false;
}


/* printInput(curr, txtRem)
 * @param curr - a href element
 * @param txt...  - string with writing
 * @param Bcount - boolean count rows? 
 * 
 */
function printInputUni(curr, txtRem, Bcount, name)
{
 
 tableId=curr.parentNode.parentNode.parentNode.parentNode.id;
 
 if(tableId.length<1)
 {return false;}

 var i=curr.parentNode.parentNode.rowIndex;
 var x=document.getElementById(tableId).insertRow(i);
 // prvni bunka
 var y=x.insertCell(0);
 var desc=new Number(i);
 y.innerHTML=Bcount;
 y.className='aRight';
 // druha bunka
 var z=x.insertCell(1);
 
 z.innerHTML='<input type="text" name="'+name+'[]" value="" /> &nbsp;<a class="smazat" href="#" onclick="return removeRow(this);">'+txtRem+'</a>';
 
 return false;
}


/* removeRow(curr)
 * @param curr - a href element
 * 
 */
function removeRow(curr)
{
 tableId=curr.parentNode.parentNode.parentNode.parentNode.id;
 
 if(tableId.length<1)
 {return false;}
 
 var i=curr.parentNode.parentNode.rowIndex;
 var x=document.getElementById(tableId).deleteRow(i);
 
 return false;
}


/* printToInput(elem, txt)
 * @param elem - input element
 * @param txt  - string with writing
 * 
 */
function printToInput(elem, txt)
{
 if(elem==null)
 {return false;}
 
 var x=document.getElementById(elem);
 
 if(x.disabled==true)
 {return false;}
 
 x.value=txt;
 
 return false;
}


/* showHideElement(key, elemID)
 * @param elemID - element ID
 * 
 */
function showHideElem(key, elemID)
{
 if(key==1)
 {
  document.getElementById(elemID).style.display="none";
  document.getElementById(elemID).parentNode.parentNode.className="order_disabled";
 }
 else
 {
  document.getElementById(elemID).parentNode.parentNode.className="";
  document.getElementById(elemID).style.display="";
 }
 
 return false;
}


function translate(string)
{
 return strtr(string, "áäâăąčćçďđéěëęíîľĺłňńóöôőřŕšśşťţúůüűýžźżÁÄÂĂĄČĆÇĎĐÉĚËĘÍÎĽĹŁŇŃÓÖÔŐŘŔŠŚŞŤŢÚŮÜŰÝŽŹŻ", "aaaaacccddeeeeiilllnnoooorrsssttuuuuyzzzAAAAACCCDDEEEEIILLLNNOOOORRSSSTTUUUUYZZZ");
}


var Utf8 = {
 
	encode : function (string) {
		string = string.replace(/\r\n/g,"\n");
		var utftext = "";
 
		for (var n = 0; n < string.length; n++) {
 
			var c = string.charCodeAt(n);
 
			if (c < 128) {
				utftext += String.fromCharCode(c);
			}
			else if((c > 127) && (c < 2048)) {
				utftext += String.fromCharCode((c >> 6) | 192);
				utftext += String.fromCharCode((c & 63) | 128);
			}
			else {
				utftext += String.fromCharCode((c >> 12) | 224);
				utftext += String.fromCharCode(((c >> 6) & 63) | 128);
				utftext += String.fromCharCode((c & 63) | 128);
			}
 
		}
 
		return utftext;
	},
 
	decode : function (utftext) {
		var string = "";
		var i = 0;
		var c = c1 = c2 = 0;
 
		while ( i < utftext.length ) {
 
			c = utftext.charCodeAt(i);
 
			if (c < 128) {
				string += String.fromCharCode(c);
				i++;
			}
			else if((c > 191) && (c < 224)) {
				c2 = utftext.charCodeAt(i+1);
				string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
				i += 2;
			}
			else {
				c2 = utftext.charCodeAt(i+1);
				c3 = utftext.charCodeAt(i+2);
				string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
				i += 3;
			}
 
		}
 
		return string;
	}
 
}

function strtr(str, from, to)
{
    var fr = '', i = 0, j = 0, lenStr = 0, lenFrom = 0;
    var tmpFrom = [];
    var tmpTo   = [];
    var ret = '';
    var match = false;

    // Received replace_pairs?
    // Convert to normal from->to chars
    if (typeof from === 'object') {
        this.krsort(from);
        for (fr in from) {
            tmpFrom.push(fr);
            tmpTo.push(from[fr]);
        }

        from = tmpFrom;
        to   = tmpTo;
    }
    
    // Walk through subject and replace chars when needed
    lenStr  = str.length;
    lenFrom = from.length;
    for (i = 0; i < lenStr; i++) {
        match = false;
        for (j = 0; j < lenFrom; j++) {
            if (str.substr(i, from[j].length) == from[j]) {
                match = true;

                // Fast forward
                i = (i + from[j].length)-1;
                
                break;
            }
        }
        
        if (false !== match) {
            ret += to[j];
        } else {
            ret += str[i];
        }
    }

    return ret;
}


