/* These scripts allow to mage the loading of comments using AJAX jQuery */

function CommentoFormat(char){
	/*Gestisce l'inserimento di formattazione nei commenti*/
	if(char=='L')testo = prompt("Inserisci link (http://www.esempio.it)","");
	else if(char=='IMG')testo = prompt("Inserisci il link all'immagine (http://www.esempio.jpg)","")
	else testo = prompt("Inserisci testo da formattare","");
	if(testo==null)return;
	else{
		 newText=$('#testo').val()+"["+char+"]"+testo+"[end"+char+"]";
		 $('#testo').val(newText);
		}
	return;
}

function CommentoQuota(){
	/*Inserisce il QUOTE  del testo selezionato*/
	txt=getSelText();
	if(txt==''){alert('Devi selezionare il testo da quotare prima!');return;}
	$('#testo').val($('#testo').val() +"[Q]"+txt+"[endQ]");
	return;
}

function CaricaCommento(id,auth,database){
  //Apprende dati di input
  nome  = $('#nome').val();
  testo = htmlentities($('#testo').val());
  validation = $('#validation').val();
  //Controllo dei dati di input
  if(nome.length<1){alert("Devi inserire il nome");return;}
  if(testo.length<1){alert("Devi inserire il testo del commento");return;}
  //Controlla che il codice di autentificazione sia corretto se non è autenticato
  if(auth<1){
	if(validation.length<1){alert("Devi inserire il codice di verifica");return;}
  	if(validation.length>4){alert("Codice di verifica non valido");return;}
  }
  //Creazione parametro post
  post_par='linked_id='+id+'&inviaComm=1'+'&auth_id='+auth+'&name='+encodeURIComponent(nome)+'&text='+encodeURIComponent(testo)+'&validation='+validation+'&database='+database;
  //Carica l loader e disabilita il pulsante
  $('#commFormDiv').hide();
  //$('#messages').hide();
  $('#messages').html('<p style="text-align:center"><img src="/Immagini/Varie/loader2.gif" alt="Caricando..." style="margin:auto;" /></p>');
  /*Elabora richiesta AJAX*/
	$.ajax({
		type: "POST",
		url: "/Sections/AjaxUtility/insertCommAJAX.php",
		data: post_par,
		success: function(msg){
			//PRINT MESSAGES
         $('#commFormDiv').show();
         $('#messages').html(msg);
         //RELOAD COMMENTS
         $.ajax({
            type: "POST",
            url: "/Sections/AjaxUtility/reloadCommAJAX.php",
            data: 'linked_id='+id+'&database='+database,
            success: function(msg){
               $('#commentList').append(msg);
               $('#messages').addClass("ok");
               $('#messages').show(1000);
            },
            error: function(msg){
               alert("Errore nell'aggiornamento commenti!");
            }
         });
		},
		error: function(msg){
			alert("Errore nell'invio del commento!");
         $('#messages').html("ERRORE INVIO COMMENTO");
         $('#commFormDiv').show();
		}
	});
}

function showMenuSmile(URL, WinTitle, Winwidth, Winheight, WinLeft, WinTop){
	/*Funzione per aprire una popup autochiudente*/
	attr = "resizable=no,width=" + Winwidth + ",height=" + Winheight + ",screenX=" + WinLeft + ",screenY=" + WinTop + ",left=" + WinLeft + ",top=" + WinTop + "";
	msgWindow=open(URL, WinTitle, attr);
	if (msgWindow.opener == null) msgWindow.opener = self;
}

function inserisciSmile(smile,popup){
	/*Funzione per l'inserimento delle faccine nei commenti tramite POPUP*/
	if(popup==true)top.opener.$('#testo').val(top.opener.$('#testo').val()+smile);
	else insertAtCursor($('#testo').get(0), smile);	
}

function insertAtCursor(campo, stringa) {
  if (document.selection) {
    campo.focus();
    sel = document.selection.createRange();
    sel.text = stringa;
  }
  else if (campo.selectionStart || campo.selectionStart == '0') {
    var startPos = campo.selectionStart;
    var endPos = campo.selectionEnd;
    campo.value = campo.value.substring(0, startPos)
                  + stringa
                  + campo.value.substring(endPos, campo.value.length);
  } else {
    campo.value += stringa;
  }
}

function getSelText(){
    var txt = '';
    if (window.getSelection)txt = window.getSelection();
    else if (document.getSelection)txt = document.getSelection();
	else if (document.selection)txt = document.selection.createRange().text;
	return txt;
}

function spostaCommento(id_comm){
	//Apprende articolo in cui spostare
	id_post=prompt("Inserisci ID del post di destinazione","");
	//Controllo dei dati di input
	if(id_post<1){alert("Operazione annullata");return false;}
	//Creazione parametro post
	post_par='id_comm=' + id_comm + '&id_art=' + id_post;
	/*Elabora richiesta AJAX*/
	$.ajax({
		type: "POST",
		url: "/Sezioni/Admin/Commenti/spostaComm.php",
		data: post_par,
		success: function(msg){alert('Commento spostato con successo, ricaricare la pagina');return true;},
		error: function(msg){alert("Errore nello spostamento del commento!"); return false}
	});
}

function htmlentities (string, quote_style) {
    // Convert all applicable characters to HTML entities  
    // 
    // version: 909.322
    // discuss at: http://phpjs.org/functions/htmlentities    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +    revised by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: nobbler
    // +    tweaked by: Jack
    // +   bugfixed by: Onno Marsman    // +    revised by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +    bugfixed by: Brett Zamir (http://brett-zamir.me)
    // +      input by: Ratheous
    // -    depends on: get_html_translation_table
    // *     example 1: htmlentities('Kevin & van Zonneveld');    // *     returns 1: 'Kevin &amp; van Zonneveld'
    // *     example 2: htmlentities("foo'bar","ENT_QUOTES");
    // *     returns 2: 'foo&#039;bar'
    var hash_map = {}, symbol = '', tmp_str = '', entity = '';
    tmp_str = string.toString();    
    if (false === (hash_map = this.get_html_translation_table('HTML_ENTITIES', quote_style))) {
        return false;
    }
    hash_map["'"] = '&#039;';    for (symbol in hash_map) {
        entity = hash_map[symbol];
        tmp_str = tmp_str.split(symbol).join(entity);
    }
        return tmp_str;
}

function get_html_translation_table (table, quote_style) {
    // Returns the internal translation table used by htmlspecialchars and htmlentities  
    // 
    // version: 909.322
    // discuss at: http://phpjs.org/functions/get_html_translation_table    // +   original by: Philip Peterson
    // +    revised by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   bugfixed by: noname
    // +   bugfixed by: Alex
    // +   bugfixed by: Marco    // +   bugfixed by: madipta
    // +   improved by: KELAN
    // +   improved by: Brett Zamir (http://brett-zamir.me)
    // +   bugfixed by: Brett Zamir (http://brett-zamir.me)
    // +      input by: Frank Forte    // +   bugfixed by: T.Wild
    // +      input by: Ratheous
    // %          note: It has been decided that we're not going to add global
    // %          note: dependencies to php.js, meaning the constants are not
    // %          note: real constants, but strings instead. Integers are also supported if someone    // %          note: chooses to create the constants themselves.
    // *     example 1: get_html_translation_table('HTML_SPECIALCHARS');
    // *     returns 1: {'"': '&quot;', '&': '&amp;', '<': '&lt;', '>': '&gt;'}
    
    var entities = {}, hash_map = {}, decimal = 0, symbol = '';    var constMappingTable = {}, constMappingQuoteStyle = {};
    var useTable = {}, useQuoteStyle = {};
    
    // Translate arguments
    constMappingTable[0]      = 'HTML_SPECIALCHARS';    constMappingTable[1]      = 'HTML_ENTITIES';
    constMappingQuoteStyle[0] = 'ENT_NOQUOTES';
    constMappingQuoteStyle[2] = 'ENT_COMPAT';
    constMappingQuoteStyle[3] = 'ENT_QUOTES';
     useTable       = !isNaN(table) ? constMappingTable[table] : table ? table.toUpperCase() : 'HTML_SPECIALCHARS';
    useQuoteStyle = !isNaN(quote_style) ? constMappingQuoteStyle[quote_style] : quote_style ? quote_style.toUpperCase() : 'ENT_COMPAT';
 
    if (useTable !== 'HTML_SPECIALCHARS' && useTable !== 'HTML_ENTITIES') {
        throw new Error("Table: "+useTable+' not supported');        // return false;
    }
 
    entities['38'] = '&amp;';
    if (useTable === 'HTML_ENTITIES') {        entities['160'] = '&nbsp;';
        entities['161'] = '&iexcl;';
        entities['162'] = '&cent;';
        entities['163'] = '&pound;';
        entities['164'] = '&curren;';        entities['165'] = '&yen;';
        entities['166'] = '&brvbar;';
        entities['167'] = '&sect;';
        entities['168'] = '&uml;';
        entities['169'] = '&copy;';        entities['170'] = '&ordf;';
        entities['171'] = '&laquo;';
        entities['172'] = '&not;';
        entities['173'] = '&shy;';
        entities['174'] = '&reg;';        entities['175'] = '&macr;';
        entities['176'] = '&deg;';
        entities['177'] = '&plusmn;';
        entities['178'] = '&sup2;';
        entities['179'] = '&sup3;';        entities['180'] = '&acute;';
        entities['181'] = '&micro;';
        entities['182'] = '&para;';
        entities['183'] = '&middot;';
        entities['184'] = '&cedil;';        entities['185'] = '&sup1;';
        entities['186'] = '&ordm;';
        entities['187'] = '&raquo;';
        entities['188'] = '&frac14;';
        entities['189'] = '&frac12;';        entities['190'] = '&frac34;';
        entities['191'] = '&iquest;';
        entities['192'] = '&Agrave;';
        entities['193'] = '&Aacute;';
        entities['194'] = '&Acirc;';        entities['195'] = '&Atilde;';
        entities['196'] = '&Auml;';
        entities['197'] = '&Aring;';
        entities['198'] = '&AElig;';
        entities['199'] = '&Ccedil;';        entities['200'] = '&Egrave;';
        entities['201'] = '&Eacute;';
        entities['202'] = '&Ecirc;';
        entities['203'] = '&Euml;';
        entities['204'] = '&Igrave;';        entities['205'] = '&Iacute;';
        entities['206'] = '&Icirc;';
        entities['207'] = '&Iuml;';
        entities['208'] = '&ETH;';
        entities['209'] = '&Ntilde;';        entities['210'] = '&Ograve;';
        entities['211'] = '&Oacute;';
        entities['212'] = '&Ocirc;';
        entities['213'] = '&Otilde;';
        entities['214'] = '&Ouml;';        entities['215'] = '&times;';
        entities['216'] = '&Oslash;';
        entities['217'] = '&Ugrave;';
        entities['218'] = '&Uacute;';
        entities['219'] = '&Ucirc;';        entities['220'] = '&Uuml;';
        entities['221'] = '&Yacute;';
        entities['222'] = '&THORN;';
        entities['223'] = '&szlig;';
        entities['224'] = '&agrave;';        entities['225'] = '&aacute;';
        entities['226'] = '&acirc;';
        entities['227'] = '&atilde;';
        entities['228'] = '&auml;';
        entities['229'] = '&aring;';        entities['230'] = '&aelig;';
        entities['231'] = '&ccedil;';
        entities['232'] = '&egrave;';
        entities['233'] = '&eacute;';
        entities['234'] = '&ecirc;';        entities['235'] = '&euml;';
        entities['236'] = '&igrave;';
        entities['237'] = '&iacute;';
        entities['238'] = '&icirc;';
        entities['239'] = '&iuml;';        entities['240'] = '&eth;';
        entities['241'] = '&ntilde;';
        entities['242'] = '&ograve;';
        entities['243'] = '&oacute;';
        entities['244'] = '&ocirc;';        entities['245'] = '&otilde;';
        entities['246'] = '&ouml;';
        entities['247'] = '&divide;';
        entities['248'] = '&oslash;';
        entities['249'] = '&ugrave;';        entities['250'] = '&uacute;';
        entities['251'] = '&ucirc;';
        entities['252'] = '&uuml;';
        entities['253'] = '&yacute;';
        entities['254'] = '&thorn;';        entities['255'] = '&yuml;';
    }
 
    if (useQuoteStyle !== 'ENT_NOQUOTES') {
        entities['34'] = '&quot;';    }
    if (useQuoteStyle === 'ENT_QUOTES') {
        entities['39'] = '&#39;';
    }
    entities['60'] = '&lt;';    entities['62'] = '&gt;';
 
 
    // ascii decimals to real symbols
    for (decimal in entities) {        symbol = String.fromCharCode(decimal);
        hash_map[symbol] = entities[decimal];
    }
    
    return hash_map;
}

