function loadData(url, data)
{
	var json = $.ajax({
			type: "POST",
			url: url,
			dataType:"text",
			data:"data="+data,
			async: false
		}).responseText;
	try
	{
		var json = jQuery.parseJSON(json);
		return json;
	}
	catch(err)
	{
		if(json == 'Login failed')
		{
			document.location = getPath("../prihlasit", true);
			return false;
		}
		alert(json);
		return json;
	}
}

function encodeJSON(val)
{
	val = val.replace(/\\/g, "\\u005C");
	val = val.replace(/"/g, "\\u0022");
	val = val.replace(/&/g, "\\u0026");
	val = val.replace(/\+/g, "\\u002B");
	val = val.replace(/'/g, "\\u0027");
	return val;
}

function convertHtmlCode(json)
{
	var el = document.createElement("div");
	el.innerText = el.textContent = json;
	json = el.innerHTML;
	delete el;
	return json;
}

function table_settings(DS) 
{
	var result = loadData(getPath("commands/table_settings"), '[{"DS": "'+getUniqueId(DS)+'"}]');
	var assoc_array = new Array();
	if(result)
		for (i=0;i<result.length;i++)
		{
			var pom  =result[i]["Column"];
			assoc_array[result[i]["Column"]] = result[i];
		}
	return assoc_array;
}

function translateColumns(columns, lang) 
{
	var control = [];
	var array = getDefControls();
	for (key in array)
		control.push(key);
	var json = "[{";
	for(var i = 0; i < columns.length; i++)
		if(columns[i].substring(0, 2) == "ID")
			json += '"'+i+'":"'+columns[i].substring(3, columns[i].length)+'",';
		else
			json += '"'+i+'":"'+columns[i]+'",';
	for(var i = 0+columns.length; i < control.length+columns.length; i++)
		json += '"'+i+'":"'+control[i-columns.length]+'",';
	json += (lang) ? '"language": "'+lang+'"}]' : '"language": "1025"}]';
	return loadData(getPath("commands/localize"), json);
}

function localize(column, dict) 
{
	var defControls = getDefControls();
	if(column.substring(0, 2) == "ID")
		column = column.substring(3, column.length);
	if(dict.hasOwnProperty(column))
		return dict[column];
	else
	{
		if(defControls.hasOwnProperty(column))
			return defControls[column];
		else
			return column.replace(/_/gi, " ");
	}
}

function get_table_name(title_column, DS)
{
	var pom = title_column.substring(0, 3);
	var pom2 = title_column.substring(2, title_column.length);
	if(pom == 'IDt' && DS != pom2)
	{
		return pom2;
	}
	return "";
}
//from yyyy/mm/dd to dd.mm.yyyy
function date_format(date)
{
	try
	{
		if(date == "0000-00-00" || date == "")
			return "";
		else
		{
			arr = date.split("-");
			if (arr.length > 2)
				return arr[2] + '.' + arr[1] + '.' + arr[0];
			else
				return "";
		}	
    }
	catch(err){return "";}
}
//from yyyy/mm/dd to dd.mm.yyyy
function date_format_back(date)
{
	try
	{
		if(date == "0000-00-00" || date == "")
			return "$NULL$";
		else
		{
			var arr = new Array();
			arr = date.split(".");
			return arr[2] +'-'+ arr[1] +'-'+ arr[0];
		}
	}
	catch(err){return "";}
}
//from yyyy/mm/dd hh:mm:ss to dd.mm.yyyy hh:mm:ss
function dateTime_format(date)
{
	try
	{
		if(date == "0000-00-00 00:00:00" || date == "")
			return "";
		else
		{
			var d_t = date.split(" "); //[0] - date [1] - time
			var arr = d_t[0].split("-");
			return arr[2] +'.'+ arr[1] +'.'+ arr[0]+' '+d_t[1];
		}
	}
	catch(err){return "";}
}
//from yyyy/mm/dd hh:mm:ss to dd.mm.yyyy hh:mm:ss
function dateTime_format_back(date)
{
	try
	{
		if(date == "00.00.0000 00:00:00" || date == "")
			return "$NULL$";
		else
		{
			var d_t = date.split(" "); //[0] - date [1] - time
			var arr = d_t[0].split(".");
			return arr[2] +'-'+ arr[1] +'-'+ arr[0]+" "+d_t[1];
		}
	}
	catch(err){return "";}
}
function translate(input_code)
{
	switch (input_code)
	{
	case "pass":
	  return("password");
	  break;
	case "id":
	  return("text");
	  break;
	case "bool":
	  return("checkbox");
	  break;
	case "file":
	  return("file");
	  break;
	case "hide":
	  return("hidden");
	  break;  
	case "img":
	  return("file");
	  break;
	case "radio":
	  return("radio");
	  break; 
	case "text":
	  return("text");
	  break;
	case "date":
	  return("date");
	  break;
	case "int":
	  return("text");
	  break;
	default:
	  return("empty");
	}	
}
//return property of object
function DumpPropsArr(json_obj, has_parent)
{
   var msg = new  Array();
   
   for (var i in json_obj) //list all properties of given object
   {
	if (has_parent) //if is called recursively
	  { 
	  if (typeof json_obj[i] != "object")	//if has no child objects
		{
		  for (var i in json_obj) 
			  {
			  msg.push(i);
			  }
		  return msg;
		}
	  else return DumpPropsArr(json_obj[i], true);	//if has child objects call recursively
	  } 
	  else //if is not called recursively
	  {
		  if (typeof json_obj[i] == "object") //if has child objects call recursively
			  {
			  return DumpPropsArr(json_obj[i], true);
			  }
		  else	//if has no child objects read props
		  {
			  msg.push(i); 
		  }
	  }
   }		  
   return msg;	//returns props
}

function getElementsByAttribute(oElm, strTagName, strAttributeName, strAttributeValue){
	//var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
	var arrElements = (strTagName == "*" && oElm.all)? oElm.all : $(strTagName);
	var arrReturnElements = new Array();
	var oAttributeValue = (typeof strAttributeValue != "undefined")? new RegExp("(^|\\s)" + strAttributeValue + "(\\s|$)") : null;
	var oCurrent;
	var oAttribute;
	for(var i=0; i<arrElements.length; i++){
		oCurrent = arrElements[i];
		oAttribute = oCurrent.getAttribute && oCurrent.getAttribute(strAttributeName);
		if(typeof oAttribute == "string" && oAttribute.length > 0){
			if(typeof strAttributeValue == "undefined" || (oAttributeValue && oAttributeValue.test(oAttribute))){
				arrReturnElements.push(oCurrent);
			}
		}
	}
	return arrReturnElements;
}

/*function getElementByTable(DS)
{
    var ele = getElementsByAttribute(document.body, "div", "dir");
    for(var i = 0; i < ele.length; i++)
    {
        var dirElement = ele[i].getAttribute("dir").split(";")[0];
        var classElement = ele[i].getAttribute("class");
        //if (dirElement.indexOf(" ") != -1) { dirElement = dirElement.substring(0, dirElement.indexOf(" ")); }
        if (dirElement == DS)//&&(classElement=="dataGrid"))
            return ele[i];
    }
}*/

function getNameTableByElement(IdElement)
{
    var ele = getElementsByAttribute(document.body, "div", "dir");
    for(var i = 0; i < ele.length; i++)
    {
		if(ele[i].getAttribute("id") == IdElement)
            return ele[i].getAttribute("dir").split(";")[0];
    }
}


function currentTime()
{
	var now = new Date();
	return ' '+now.format("HH:MM:ss");
}

function getValueFromUrl(varname)
{
  var url = window.location.href;
  var qparts = url.split("?");
  if (qparts.length == 0)
  {
    return "";
  }
  var query = qparts[1];
  var vars = query.split("&");
  var value = "";
  
  for (i=0;i<vars.length;i++)
  {
    var parts = vars[i].split("=");
    if (parts[0] == varname)
    {
      value = parts[1];
      break;
    }
  }
  value = unescape(value);
  value.replace(/\+/g," ");
  return value;
}

function setValueToUrl(param, value)
{
	var url = window.location.href;
	var newAdditionalURL = "";
	var tempArray = url.split("?");
	var baseURL = tempArray[0];
	var aditionalURL = tempArray[1]; 
	var temp = "";
	if(aditionalURL)
	{
	var tempArray = aditionalURL.split("&");
	for ( var i in tempArray ){
			if(tempArray[i].indexOf(param) == -1){
							newAdditionalURL += temp+tempArray[i];
									temp = "&";
							}
					}
	}
	var rows_txt = temp+param+"="+value;
	return baseURL+"?"+newAdditionalURL+rows_txt;
	
}

function getDirParams(dir)
{
	var arr = dir.split(";");	//arr[0]-table;arr[1]-RowChange;arr[2]-Column
	var params = new Array();
	params["DS"] = arr[0];
	for(var i=1; i<arr.length; i++)
	{
		var param = arr[i].split("=");
		if(param[0] == "Toolbar")
		{
			params[param[0]] = param[1].split("|");
		}
		else
			params[param[0]]=param[1];
	}
	return params;
}
function getUniqueId(dataSource)
{
	var result = dataSource.split(" ");
	if(result[0] == "EXEC" || result[0] == "CALL")
		return result[1];
	else
		return result[0];
}

function replaceSpaces(str)
{
	var count = 0;
	for(var m = 0; m < str.length; m++)
		if(str[m] == " ")
			count++;
		else
			break;
	var pom = "";
	for(var m = 0; m < count; m++)
		pom += "&nbsp;";
	return pom+str.substring(count, str.length);
}

function getStringForGrid(object)
{
	if($(object).is("select"))
		return $(object).find(":selected").text();
	else if($(object).is(':checkbox'))
		if($(object).is(':checked'))
			return "true";
		else
			return "false";
	else
		return $(object).val();
}
