var popCurrent=false;
function myPop(popPath, popWidth, popHeight){
	//Crear i obrir popup:
	//Obtindre les mesures de l'àrea útil del navegador i buscar el centre del popup:
	var browserWidth=window.innerWidth || document.documentElement.clientWidth;
	var browserHeight=window.innerHeight || document.documentElement.clientHeight;
	var x=Math.ceil((browserWidth - popWidth)/2);
	var y=Math.ceil((browserHeight - popHeight)/2);
	//Preparar paràmetres del popup:
	var param='width='+popWidth+', height='+popHeight+', left='+x+', top='+y+', resizable=yes, menubar=no, toolbar=no, directories=no, location=no, scrollbar=no, status=yes';
	popCurrent=window.open(popPath, 'popCurrent', param);
	popCurrent.focus();
}

var popCurrentHelp=false;
function openHelp(ID){
   //Crear i obrir popup:
	//Obtindre les mesures de l'àrea útil del navegador i buscar el centre del popup:
	var popWidth=350;
   var popHeight=400;
   var browserWidth=opener.window.innerWidth || opener.document.documentElement.clientWidth;
	var browserHeight=opener.window.innerHeight || opener.document.documentElement.clientHeight;
	var x=Math.ceil((browserWidth - popWidth)/2);
	var y=Math.ceil((browserHeight - popHeight)/2);
	//Preparar paràmetres del popup:
	var param='width='+popWidth+', height='+popHeight+', left='+x+', top='+y+', resizable=yes, menubar=no, toolbar=no, directories=no, location=no, scrollbar=no, status=yes';
	popCurrentHelp=window.open('pop-help.php?id='+ID, 'popCurrentHelp', param);
	popCurrentHelp.focus();
}

var popFileFinder=false;
function myFileFinder(dir){
   //Crear i obrir popup:
	//Obtindre les mesures de l'àrea útil del navegador i buscar el centre del popup:
	var popWidth=500;
   var popHeight=350;
   var browserWidth=opener.window.innerWidth || opener.document.documentElement.clientWidth;
	var browserHeight=opener.window.innerHeight || opener.document.documentElement.clientHeight;
	var x=Math.ceil((browserWidth - popWidth)/2);
	var y=Math.ceil((browserHeight - popHeight)/2);
   //Preparar paràmetres del popup:
	var param='width='+popWidth+', height='+popHeight+', left='+x+', top='+y+', resizable=yes, menubar=no, toolbar=no, directories=no, location=no, scrollbar=no, status=yes';
	popFileFinder=window.open('pop-file-finder.php?dir='+dir, 'popFileFinder', param);
	popFileFinder.focus();
}

var popPlayAudio=false;
function playAudio(url){
   //Crear i obrir popup:
	//Obtindre les mesures de l'àrea útil del navegador i buscar el centre del popup:
   var popWidth=420;
   var popHeight=120;
   var browserWidth=window.innerWidth || document.documentElement.clientWidth;
	var browserHeight=window.innerHeight || document.documentElement.clientHeight;
	var x=Math.ceil((browserWidth - popWidth)/2);
	var y=Math.ceil((browserHeight - popHeight)/2);
   //Preparar paràmetres del popup:
	var param='width='+popWidth+', height='+popHeight+', left='+x+', top='+y+', resizable=yes, menubar=no, toolbar=no, directories=no, location=no, scrollbar=no, status=yes';
   popPlayAudio=window.open('pops/pop-play-audio.php?url='+url, 'popPlayAudio', param);
   popPlayAudio.focus();
}

function LP(obj){
	var txt='';
	for(var i in obj){
		txt+=('Propietat: '+i+' valor: '+obj[i])+"\n";
	}
	alert(txt);
}

function updateConfValue(table, column, value, type){
   new Ajax.Request(
      '../ajax/update-conf-value.php?table='+table+'&column='+column+'&value='+value+'&type='+type,
      {
         method: 'get',
         encoding: 'UTF-8',
         onSuccess: function(transport){
            if(transport.responseText == 'FALSE'){
               alert('Error durant el procés d\'actualització de la base de dades MySQL');
            }
            else if(transport.responseText == 'TRUE'){
               //OK
            }
            else{
               alert('Error desconegut');
            }
         }
      }
   );
}

function updateFormValue(table, column, fieldID){
   new Ajax.Request(
      '../ajax/update-form-value.php?table='+table+'&column='+column,
      {
         method: 'get',
         encoding: 'UTF-8',
         onSuccess: function(transport){
            fieldID.value=transport.responseText;
         }
      }
   );
}

function AJAX_MySQL_Query(sql, type){ 
   var result=null;
   sqlEncoded=base64encode(sql);
   new Ajax.Request(
      '../a/ajax/mysql.php',
      {
         parameters: 'query='+sqlEncoded+'&type='+type,
         method: 'post',
         encoding: 'UTF-8',
         asynchronous: false,
         onCreate: function(){
            capa(1, 'Aplicant canvis...');
         },
         onSuccess: function(transport){
            result=transport.responseText;
            capa(0);
         }
      }
   );
   test=result.substr(0, 4);
   msg=result.substr(5, result.length);
   if(test == 'FAIL'){
      alert('MySQL error:\n\n'+sql+'\n\n'+msg);
      return 'ERROR';
   }
   else{
      return result;
   }
}

function AJAX_MySQL_GetValue(table, column){
   var result;
   new Ajax.Request(
      '../ajax/mysql-get-value.php',
      {
         parameters: 'table='+table+'&column='+column,
         method: 'post',
         encoding: 'UTF-8',
         asynchronous: false,
         onSuccess: function(transport){
            result=transport.responseText;
         }
      }
   );
   test=result.substr(0, 4);
   msg=result.substr(5, result.length);
   if(test == 'FAIL'){
      alert('MySQL error:\n\n'+sql+'\n\n'+msg);
      return 'ERROR';
   }
   else{
      return result;
   }
}

function updateRadioStats(colName){
   var result=null;
   new Ajax.Request(
      'ajax/update-radio-stats.php',
      {
         parameters: 'colName='+colName,
         method: 'post',
         encoding: 'UTF-8',
         asynchronous: false,
         onSuccess: function(transport){
            result=transport.responseText;
         }
      }
   );
   if(result == 'ERROR'){return false;}
   else if (result == 'OK'){return true;}
   else{return false;}
}

function fileExist(filePath){
   var result;
   new Ajax.Request(
      '../a/ajax/file-exist.php',
      {
         parameters: 'filePath='+filePath,
         method: 'post',
         encoding: 'UTF-8',
         asynchronous: false,
         onSuccess: function(transport){
            result=transport.responseText;
         }
      }
   );
   if(result == 'TRUE'){return true;}
   else if(result == 'FALSE'){return false;}
   else if(result == 'ERROR'){alert('Error!\n\nfileExist(\''+filePath+'\')'); return false;}
   else{alert('Error!\n\nfileExist(\''+filePath+'\')'); return false;}
}

function moveFile(fileNameOrg, fileNameDest){
   var result=null;
   new Ajax.Request(
      '../a/ajax/move-file.php',
      {
         parameters: 'fileNameOrg='+fileNameOrg+'&fileNameDest='+fileNameDest,
         method: 'post',
         encoding: 'UTF-8',
         asynchronous: false,
         onSuccess: function(transport){
            result=transport.responseText;
         }
      }
   );
   if(result == 'ERROR'){return false;}
   else if(result == 'OK'){return true;}
   else{alert(result); return false;}
}

function fileGetInfo(filePath){
   var result;
   new Ajax.Request(
      '../a/ajax/file-get-info.php',
      {
         parameters: 'filePath='+filePath,
         method: 'post',
         encoding: 'UTF-8',
         asynchronous: false,
         onSuccess: function(transport){
            result=transport.responseText;
         }
      }
   );
   if(result == 'ERROR'){alert('Error!\n\nfileGetInfo(\''+filePath+'\')'); return false;}
   else{return result.evalJSON();}
}

function decToHex(dec){
	var Char_hexadecimales = '0123456789ABCDEF';
	var low = dec % 16;
	var high = (dec - low)/16;
	hex = "" + Char_hexadecimales.charAt(high) + Char_hexadecimales.charAt(low);
	return hex;
}

function urlEncode(url){
	var patro=' º\'¡ª!"·$%&/()=?¿\\|@#~¬`+^*[]ŽçšÇ{}<>,;:àèìòùáéíóúâêîôûäëïöüñÑ';
	var resultat='';
	for(i=0; i<url.length; i++){
		car=url.substr(i, 1);
		if(car == ' '){
			resultat+='+';
		}
		else if(car.charCodeAt() > 47 && car.charCodeAt() < 58){
			/* Números */
			resultat+=car;
		}
		else if(car.charCodeAt() > 64 && car.charCodeAt() < 91){
			/* Majúscules */
			resultat+=car;
		}
		else if(car.charCodeAt() > 96 && car.charCodeAt() < 123){
			/* Minúscules */
			resultat+=car;
		}
		else if(car.charCodeAt() == 45 || car.charCodeAt() == 46 || car.charCodeAt() == 95){
			/* Caràctes amb exepció */
			resultat+=car;
		}
		else{
			resultat+='%' + decToHex(car.charCodeAt());
		}
	}
	return resultat;
}

function urlDecode (str) {
    var hash_map = {}, ret = str.toString(), unicodeStr='', hexEscStr='';
    var replacer = function (search, replace, str) {
        var tmp_arr = [];
        tmp_arr = str.split(search);
        return tmp_arr.join(replace);
    };
    // The hash_map is identical to the one in urlencode.
    hash_map["'"]   = '%27';
    hash_map['(']   = '%28';
    hash_map[')']   = '%29';
    hash_map['*']   = '%2A';
    hash_map['~']   = '%7E';
    hash_map['!']   = '%21';
    hash_map['%20'] = '+';
    hash_map['\u00DC'] = '%DC';
    hash_map['\u00FC'] = '%FC';
    hash_map['\u00C4'] = '%D4';
    hash_map['\u00E4'] = '%E4';
    hash_map['\u00D6'] = '%D6';
    hash_map['\u00F6'] = '%F6';
    hash_map['\u00DF'] = '%DF';
    hash_map['\u20AC'] = '%80';
    hash_map['\u0081'] = '%81';
    hash_map['\u201A'] = '%82';
    hash_map['\u0192'] = '%83';
    hash_map['\u201E'] = '%84';
    hash_map['\u2026'] = '%85';
    hash_map['\u2020'] = '%86';
    hash_map['\u2021'] = '%87';
    hash_map['\u02C6'] = '%88';
    hash_map['\u2030'] = '%89';
    hash_map['\u0160'] = '%8A';
    hash_map['\u2039'] = '%8B';
    hash_map['\u0152'] = '%8C';
    hash_map['\u008D'] = '%8D';
    hash_map['\u017D'] = '%8E';
    hash_map['\u008F'] = '%8F';
    hash_map['\u0090'] = '%90';
    hash_map['\u2018'] = '%91';
    hash_map['\u2019'] = '%92';
    hash_map['\u201C'] = '%93';
    hash_map['\u201D'] = '%94';
    hash_map['\u2022'] = '%95';
    hash_map['\u2013'] = '%96';
    hash_map['\u2014'] = '%97';
    hash_map['\u02DC'] = '%98';
    hash_map['\u2122'] = '%99';
    hash_map['\u0161'] = '%9A';
    hash_map['\u203A'] = '%9B';
    hash_map['\u0153'] = '%9C';
    hash_map['\u009D'] = '%9D';
    hash_map['\u017E'] = '%9E';
    hash_map['\u0178'] = '%9F';
    hash_map['\u00C6'] = '%C3%86';
    hash_map['\u00D8'] = '%C3%98';
    hash_map['\u00C5'] = '%C3%85';
    for (unicodeStr in hash_map) {
        hexEscStr = hash_map[unicodeStr]; // Switch order when decoding
        ret = replacer(hexEscStr, unicodeStr, ret); // Custom replace. No regexing
    }
    // End with decodeURIComponent, which most resembles PHP's encoding functions
    ret = decodeURIComponent(ret);
    return ret;
}

var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
function base64encode(input) {
   var output = "";
   var chr1, chr2, chr3;
   var enc1, enc2, enc3, enc4;
   var i = 0;
   do {
      chr1 = input.charCodeAt(i++);
      chr2 = input.charCodeAt(i++);
      chr3 = input.charCodeAt(i++);

      enc1 = chr1 >> 2;
      enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
      enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
      enc4 = chr3 & 63;

      if (isNaN(chr2)) {
         enc3 = enc4 = 64;
      } else if (isNaN(chr3)) {
         enc4 = 64;
      }

      output = output + keyStr.charAt(enc1) + keyStr.charAt(enc2) +
         keyStr.charAt(enc3) + keyStr.charAt(enc4);
   } while (i < input.length);
   return output;
}

function base64decode(input) {
   var output = "";
   var chr1, chr2, chr3;
   var enc1, enc2, enc3, enc4;
   var i = 0;
   // remove all characters that are not A-Z, a-z, 0-9, +, /, or =
   input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
   do {
      enc1 = keyStr.indexOf(input.charAt(i++));
      enc2 = keyStr.indexOf(input.charAt(i++));
      enc3 = keyStr.indexOf(input.charAt(i++));
      enc4 = keyStr.indexOf(input.charAt(i++));

      chr1 = (enc1 << 2) | (enc2 >> 4);
      chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
      chr3 = ((enc3 & 3) << 6) | enc4;

      output = output + String.fromCharCode(chr1);

      if (enc3 != 64) {
         output = output + String.fromCharCode(chr2);
      }
      if (enc4 != 64) {
         output = output + String.fromCharCode(chr3);
      }
   } while (i < input.length);
   return output;
}

function mysqlRealEscapeString(str){
   str=str.replace(/\x00/g, '\\\x00');
   str=str.replace(/\x0A/g, '\\\x0A');
   str=str.replace(/\x0D/g, '\\\x0D');
   str=str.replace(/\x1A/g, '\\\x1A');
   str=str.replace(/\x22/g, '\\\x22');
   str=str.replace(/\x27/g, '\\\x27');
   str=str.replace(/\x5C/g, '\\\x5C');
   return str;
}

function sClick(idObjete){
   var nouEvent = document.createEvent("MouseEvents");
   nouEvent.initMouseEvent("click", true, true, window,0, 0, 0, 0, 0, false, false, false, false, 0, null);
   var objecte = document.getElementById(idObjete);
   var canceled = !objecte.dispatchEvent(nouEvent);
}

function capa(estat, txt){
   if(estat == 0){
      if($('capaTxt')){
         document.body.removeChild($('capaTxt'));
      }
   }
   else{
      var browserWidth=window.innerWidth || document.documentElement.clientWidth;
      var browserHeight=window.innerHeight || document.documentElement.clientHeight;
      var x=Math.ceil((browserWidth - 400)/2);
      var y=Math.ceil((browserHeight - 100)/2);
      //Crear element d'espera:
      var capaContenedora=new Element('div', {'id':'capaTxt'});
      document.body.appendChild(capaContenedora);
      capaContenedora.setStyle({'position':'fixed', 'left':x+'px', 'top':y+'px', 'width':'400px', 'height':'100px', 'display':'block'});
      var taula=new Element('table', {'class':'tableBox2'});
      capaContenedora.appendChild(taula);
      var trT=new Element('tr');
      taula.appendChild(trT);
      var tdTL=new Element('td', {'class':'tdBox2TL'});
      var tdTC=new Element('td', {'class':'tdBox2TC'});
      var tdTR=new Element('td', {'class':'tdBox2TR'});
      trT.appendChild(tdTL);
      trT.appendChild(tdTC);
      trT.appendChild(tdTR);
      var trM=new Element('tr');
      taula.appendChild(trM);
      var tdML=new Element('td', {'class':'tdBox2ML'});
      var tdMC=new Element('td', {'class':'tdBox2MC'});
      var tdMR=new Element('td', {'class':'tdBox2MR'});
      trM.appendChild(tdML);
      trM.appendChild(tdMC);
      trM.appendChild(tdMR);
      var trB=new Element('tr');
      taula.appendChild(trB);
      var tdBL=new Element('td', {'class':'tdBox2BL'});
      var tdBC=new Element('td', {'class':'tdBox2BC'});
      var tdBR=new Element('td', {'class':'tdBox2BR'});
      trB.appendChild(tdBL);
      trB.appendChild(tdBC);
      trB.appendChild(tdBR);
      var spanText=new Element('span', {'style':'font-size:40px;'}).update(txt);
      tdMC.appendChild(spanText);
   }
}
