// codice per il la verifica e l'aggiornamento dei dati di voto 
// che riguardano uno specifico articolo a cui l'utente ha votato

// Start conversation timer
var unixtime = 0;
var timer_handler;
function start_timer( initial_value ){
  if( initial_value ) {
    unixtime = initial_value;
  } else {
    var now = new Date();
    unixtime = now.getTime();
  }
		
  timer_switch = 1;
  final_switch = "on";
  //objVis('onlinetime',1);		// Show online time text
  timer_cycle();
}

// Stop conversation timer
function stop_timer(){
  timer_switch = 0;
  final_switch = "off";
}

// Update timer
function timer_cycle(){
  if( final_switch == "on" ){
    var now = new Date() ;
    // let's start at 0 so we can increase each second
    var the_timer = new Date( now.getTime() - unixtime ) ;
    var minutes = the_timer.getMinutes() ;
    var seconds = the_timer.getSeconds() ;
    // tack on 0 if on digit
    if( minutes <= 9 ) minutes = "0" + minutes;
    if( seconds <= 9 ) seconds = "0" + seconds;

    document.getElementById("timer").innerHTML = minutes + ":" + seconds;

    // call timer each second so we can see the cycle
    if( timer_switch && final_switch == "on" ){
      timer_handler = setTimeout("timer_cycle()", 1000);
    }
  } else {
    //document.getElement$ById("timer").innerHTML = "&nbsp;";
    window.clearInterval(timer_handler);
  }
}
// ----------------------------------------------------------------------------



function IsValidEmailAddress(email_address) {
  if ( (email_address.search( /^[a-z0-9\+][a-z0-9\.\_\-]+\@[a-z0-9\.\-]+\.[a-z]+/ ) == -1) || (email_address == "") ) {
    return false;
  } else {
    return true;
  }
}



function MyPopUp(url) {
  window.open(url,'_blank','width=230,height=350,directories=0,location=0,menubar=0,scrollbars=1,status=1,toolbar=0,resizable=1');
}









    var RateCookieName = 'RateCookie';

    function SetCookie(name,value) {
      var expDays = 2;
      var exp = new Date(); 
      exp.setTime(exp.getTime() + (expDays*24*60*60*1000));
      expdate=exp.toGMTString();
      document.cookie = ""+name+" ="+ value+"; expires ="+ expdate+";";
    }

    function GetCookie (name) { 
      var arg = name + "="; 
      var alen = arg.length; 
      var clen = document.cookie.length; 
      var i = 0; 
      while (i < clen) { 
        var j = i + alen; 
        if (document.cookie.substring(i, j) == arg) 
          return getCookieVal (j); 
        i = document.cookie.indexOf(" ", i) + 1; 
        if (i == 0) break; 
      } 
      return null;
    }

    function getCookieVal (offset) {
      var endstr = document.cookie.indexOf (";", offset); 
      if (endstr == -1) {
        endstr = document.cookie.length;
      }
      return unescape(document.cookie.substring(offset, endstr));
    }
    
    function DeleteCookie (name) { 
      var exp = new Date(); 
      exp.setTime (exp.getTime() - 1); 
      var cval = GetCookie (name);
      document.cookie = name + "=" + cval + "; expires=" + exp.toGMTString();
      //document.write("DeleteCookie<br>\n");
    }
    
    function CheckVote (id) {
      var ret = false;
      var a = GetCookie( RateCookieName );
      //document.write('CheckVote:: id: ' + id + ' cookie: ' + a + "<br>\n");
      
      if ( a == null ) {
      	ret = true;  //never rated before
      } else {
      	//document.write('Rated already --- ' + a );
      	
      	var endstr = a.indexOf (","+id, 0); 
      	if (endstr == -1) {
          ret = true;
        }
      }
      //DeleteCookie( RateCookieName );
      return ret;
    }

var PoolMessages_handle;
var hPoolMessagesOp;
var check_message_interval = 3000;
var text_msg_on_operator_close;
var hCheckMessages = 0;


var aflax = null;
var soundObj = null;
sndObj = {
    init: function()
    {
      aflax = new AFLAX("/ajax/aflax.swf");
	    soundObj = null;
	    aflax.insertFlash(1, 1, "#FFFFFF", "sndObj.go", true);
    },
    go: function() 
    {
      AFLAX.trace("Here")
      soundObj = new AFLAX.FlashObject(aflax, "Sound");
      
      AFLAX.trace(soundObj.id);
		
      soundObj.exposeFunction("loadSound", soundObj);		
      soundObj.exposeFunction("start", soundObj);		
      soundObj.exposeFunction("stop", soundObj);		
      soundObj.exposeProperty("position", soundObj);

      soundObj.mapFunction("addEventHandler");
      soundObj.loadSound("/sounds/newalert.mp3", false);
      //soundObj.start();
	},
	
	set_file: function(fn) 
  {
      soundObj.loadSound(fn, false);
	},
	play: function(v) 
  {
      soundObj.start();
	}
}



rateObj = {

    // aggiunta onsubmit alla form
    init: function()
    {
    	  rateObj.ReadConfiguration();
    	  
    	  // the following lines are ignored at the moment
        var rForm = document.getElementById('rForm');  // id del form than uses Ajax
        if (!rForm) {
            return;
        }
        //rForm.removeAttribute('action');
        //DOMhelp.addEvent(rForm, 'submit', rateObj.salvaVoto, false);
        //var inputs = rForm.getElementsByTagName('input');
        //var submit = inputs[inputs.lenght];
        //submit.setAttribute('type', 'button');
        //DOMhelp.addEvent(submit, 'click', rateObj.salvaVoto, false);
        //rForm.onsubmit = rateObj.salvaVoto;
    },
    

    
    
    ReadConfiguration: function() 
    {  
        //if (isNaN(call_id)) {
            //return;
        //}
        
        var params_str = 'act=read_config';
        
        var conn = WebBrowser1.init();
        if (!conn) {
        	  alert('An Error occurred with WebBrowser1.init()');
            return false;
        }


        conn.open('POST', '/cgi-bin/index.cgi', true);
        conn.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

        conn.onreadystatechange = function() {
            if (conn.readyState == 1) { 
                //RateForm.innerHTML = '<h1>Attendi..</h1>';
            }
            if (conn.readyState == 4) { 
              if (conn.status == 200) { // stato "completed" e risposta "OK"
                //eval(conn.responseText);
                //alert('conn.responseText: ' + conn.responseText );

                var xmlDoc = conn.responseXML;
                if (xmlDoc == null) {
                  alert( 'Impossibile proseguire, per favore contatta il nostro staff via email. (code=6)' );
                  return;
                }
                if ( xmlDoc.getElementsByTagName('status')[0].firstChild.nodeValue == 200 ) {
                  check_message_interval = xmlDoc.getElementsByTagName('checkmessage_interval')[0].firstChild.nodeValue;
                  text_msg_on_operator_close = xmlDoc.getElementsByTagName('on_operator_close')[0].firstChild.nodeValue;
                }
              }
            }
            return;
        }
        conn.send(params_str);
    },
    
    
    NewsletterSubscribe: function(email) 
    {  
        //if (isNaN(call_id)) {
            //return;
        //}

        var params_str = 'act=subscribe&email=' + email;
        var conn = WebBrowser1.init();
        if (!conn) {
            alert('An Error occurred with WebBrowser1.init()');
            return false;
        }
        conn.open('POST', '/cgi-bin/index.cgi', true);
        conn.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

        conn.onreadystatechange = function() {
            if (conn.readyState == 1) { 
                //RateForm.innerHTML = '<h1>Attendi..</h1>';
            }
            if (conn.readyState == 4) { 
              if (conn.status == 200) { // stato "completed" e risposta "OK"
                //eval(conn.responseText);
                //alert('conn.responseText: ' + conn.responseText );

                var xmlDoc = conn.responseXML;
                if (xmlDoc == null) {
                  alert( 'Impossibile proseguire, per favore contatta il nostro staff via email. (code=4)' );
                  return;
                }
                
                //if ( xmlDoc.getElementsByTagName('status')[0].firstChild.nodeValue == 200 ) {
                	var msg = xmlDoc.getElementsByTagName('message')[0].firstChild.nodeValue;
                //}
                
                var box = document.getElementById('newsletterbox');
                box.style.display = "none";
                box = document.getElementById('newsletterbox_confirm');
                //box.style.display = "block";
                box.innerHTML = '<p>' + msg + '</p>';
                //alert('msg=['+msg+']');
              }
            }
            return;
        }
        conn.send(params_str);
    },
    
    
    CallMeRegData: function(form) 
    {
        var params_str = 'act=pform&email=' + form.email.value;
        params_str += '&nome=' + form.nome.value;
        params_str += '&cognome=' + form.cognome.value;
        params_str += '&tel=' + form.tel.value;
        var conn = WebBrowser1.init();
        if (!conn) {
            alert('An Error occurred with WebBrowser1.init()');
            return false;
        }
        conn.open('POST', '/cgi-bin/index.cgi', true);
        conn.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

        conn.onreadystatechange = function() {
            if (conn.readyState == 1) { 
                //RateForm.innerHTML = '<h1>Attendi..</h1>';
            }
            if (conn.readyState == 4) { 
              if (conn.status == 200) { // stato "completed" e risposta "OK"
                var xmlDoc = conn.responseXML;
                if (xmlDoc == null) {
                  alert( 'Impossibile proseguire, per favore contatta il nostro staff via email. (code=4)' );
                  return;
                }
                
                var box = document.getElementById('callme_div');
                box.style.display = "none";
                box = document.getElementById('callme_div_response');
                box.style.display = "block";
              }
            }
            return;
        }
        conn.send(params_str);
    },
    
    
    
    
    
    CheckMessages: function(call_id) 
    {  
        if (isNaN(call_id)) {
            //return;
        }
//alert('hCheckMessages=' + hCheckMessages + ' ----- PoolMessages_handle: x'+PoolMessages_handle);
        if (hCheckMessages==1) return;
        
        
        var lastmsg = document.getElementById('last_msg');
        var typer_indicator = 0;
        try {
          typer_indicator = document.getElementById('typer_ind').innerHTML;
        }
        catch(err) {
         //Handle errors here
        }
        

        var d = new Date();   
        var d1 = d.getTime();


        // parameters to send via POST
        var params_str = 'call_id='+ escape(call_id) + '&act=checkmessages&t=' + lastmsg.innerHTML + '&ti=' + typer_indicator + '&ti1=' + d.getTime();
        
        var conn = WebBrowser1.init();
        if (!conn) {
        	  alert('An Error occurred with WebBrowser1.init()');
            return false;
        }


        conn.open('POST', '/cgi-bin/index.cgi', true);
        conn.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

        conn.onreadystatechange = function() {
            if (conn.readyState == 1) { 
                //Diplay: please wait..
            }
            if (conn.readyState == 4) { 
                if (conn.status == 200) { // stato "completed" e risposta "OK"
                    //eval(conn.responseText);
                    //alert('conn.responseText: ' + conn.responseText );

                    var xmlDoc = conn.responseXML;
                    if (xmlDoc == null) {
                      alert( 'Impossibile proseguire, per favore contatta il nostro staff via email. (code=5)' );
                      return;
                    }                   
		    
                    if ( xmlDoc.getElementsByTagName('status')[0].firstChild.nodeValue == 200 ) {

                    	var whoAmI = document.getElementById('whoAmI');
                    	if ( (whoAmI==undefined) || (whoAmI.innerHTML != 'operator') ) {
                    	  whoAmI = 'webuser';
                    	} else {
                    	  whoAmI = whoAmI.innerHTML;
                    	}
                    	var otherParty = 'operator';
                    	if ( whoAmI.innerHTML == 'operator') { otherParty = 'webuser'; }

                    	var debugDisplay = document.getElementById('debugDisplay');
                    	var status_str = xmlDoc.getElementsByTagName('call_status')[0].firstChild.nodeValue;
                    	debugDisplay.innerHTML = status_str;
                    	
                    	var MsgDisplay = document.getElementById('messages');
                    	
                    	
                    	
                    	
                      var td1 = document.getElementById('TyperDisplay');
                      if ( xmlDoc.getElementsByTagName('ti')[0].firstChild.nodeValue == 1 ) {
                        td1.style.display = "block";
                      } else {
                        td1.style.display = "none";
                      }
                    	
                    	
                    	
                    	
                    	
                    	if ( xmlDoc.getElementsByTagName('success')[0].firstChild.nodeValue == 1) {
                          var num_msgs = xmlDoc.getElementsByTagName('total')[0].firstChild.nodeValue;
                          var snd_flag = 0;
                      	  //for(i=0;i<num_msgs;i++)
                          for(i=num_msgs-1;i>=0;i--) {                      	
                            var f = xmlDoc.getElementsByTagName('from')[i].firstChild.nodeValue;
                            var n = xmlDoc.getElementsByTagName('name')[i].firstChild.nodeValue;
                            var t = xmlDoc.getElementsByTagName('newmessage')[i].firstChild.nodeValue;
                            //MsgDisplay.innerHTML = '<span class='+f+'><b>' + n + ':</b> ' + t + '</span><br />' + MsgDisplay.innerHTML;
                            MsgDisplay.innerHTML = MsgDisplay.innerHTML + '<span class='+f+'><b>' + n + ':</b> ' + t + '</span><br />' + "\n"; // + xmlDoc.getElementsByTagName('ti_' + whoAmI)[0].firstChild.nodeValue
                            MsgDisplay.scrollTop = 1000;
                            if ((snd_flag == 0) && (f != whoAmI)) snd_flag = 1;
                          }
                          lastmsg.innerHTML = xmlDoc.getElementsByTagName('datetime')[0].firstChild.nodeValue;
                          if ( snd_flag == 1 ) sndObj.play();
                          td1.style.display = "none";
                        
                        } else {
                          var call_status = xmlDoc.getElementsByTagName('call_status')[0].firstChild.nodeValue;
                          if (  call_status == 'ON_CLOSED' || call_status == 'ON_TIMEOUT' || call_status == 'ON_REFUSED' ) {
                            //self.location='index.cgi?act=client_display&call_id=' + call_id;
                            window.clearInterval(PoolMessages_handle);
                            stop_timer();
                            
                            var CharLeftDisplayError = document.getElementById('CharLeftDisplayError');
                            CharLeftDisplayError.innerHTML = text_msg_on_operator_close;
                            CharLeftDisplayError.style.display = "block";
                          }
                        }
                } else {
      	          // Error in cgi
                  alert('Error');
                }

                hCheckMessages = 0; //free istance
                return;
                }
            }
        }
        conn.send(params_str);
        hCheckMessages = 1;
    },
    
    
    UpdateOpInfo: function(call_id, params_str) 
    {  
        if (isNaN(call_id)) {
            //return;
        }

        // parameters to send via POST
        // var params_str = 'act=op_info_x&use_html=1';
        
        var conn = WebBrowser1.init();
        if (!conn) {
        	  alert('An Error occurred with WebBrowser1.init()');
            return false;
        }

        conn.open('POST', '/cgi-bin/index.cgi', true);
        conn.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

        conn.onreadystatechange = function() {
            if (conn.readyState == 1) { 
                //Diplay: please wait..
            }
            if (conn.readyState == 4) {
              if (conn.status == 200) { // stato "completed" e risposta "OK"
                document.getElementById('debugDisplay').innerHTML = conn.responseText;
                return true;
              }
            }
        }
        conn.send(params_str);
    },
    
    StartOpPolling: function(interval, params_str) 
    {
        hPoolMessagesOp = window.setInterval("rateObj.UpdateOpInfo('" + interval + "', '"+params_str+"')", interval);
        rateObj.UpdateOpInfo('" + interval + "', params_str);
    },
  
  
    DoPost: function(url, params_str) 
    {  
        if (isNaN(url)) {
            //return;
        }
        
        var conn = WebBrowser1.init();
        if (!conn) {
        	  alert('An Error occurred with WebBrowser1.init()');
            return false;
        }


        conn.open('POST', url, true);
        conn.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

        conn.onreadystatechange = function() {
        if (conn.readyState == 1) { 
            //Diplay: please wait..
        }
        if (conn.readyState == 4) {
          if (conn.status == 200) { // stato "completed" e risposta "OK"
            //alert('DoPost ret: ' + conn.responseText);
            
            //eval(conn.responseText);
            //alert('conn.responseText: ' + conn.responseText );
            return;
          } else {
            alert('WARN: DoPost returned status: ' + conn.status);
          }
        }
      }
      conn.send(params_str);
    },
    
    
    StartCheckingMessages: function(call_id) 
    {
        PoolMessages_handle = window.setInterval("rateObj.CheckMessages('" + call_id + "')", check_message_interval);
    },
    
    
    
    
    
    SendMessage: function(call_id,text,from) 
    {  
        if (isNaN(call_id)) {
            //return;
        }
        
        var params_str = 'call_id='+ escape(call_id) + '&from='+from+ '&act=send_message&text='+ escape(text);
        var conn = WebBrowser1.init();
        if (!conn) {
        	  alert('An Error occurred with WebBrowser1.init()');
            return false;
        }

        conn.open('POST', '/cgi-bin/index.cgi', true);
        conn.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

        conn.onreadystatechange = function() {
            if (conn.readyState == 1) { 
                
            }
            if (conn.readyState == 4) { 
                
            }
        }
        conn.send(params_str);
    },
    
    
    CallOperator: function() 
    {  
        var params_str = 'act=call_operator';
        var conn = WebBrowser1.init();
        if (!conn) {
        	  alert('An Error occurred with WebBrowser1.init()');
            return false;
        }

        conn.open('POST', '/cgi-bin/index.cgi', true);
        conn.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

        conn.onreadystatechange = function() {
            if (conn.readyState == 1) { 
                
            }
            if (conn.readyState == 4) {
                if (conn.status == 200) { // stato "completed" e risposta "OK"
                    //eval(conn.responseText);
                    //alert('conn.responseText: ' + conn.responseText );
                    
                    
            	      var xmlDoc = conn.responseXML;
                    if (xmlDoc == null) {
                      alert( 'Impossibile proseguire, per favore contatta il nostro staff via email. (code=1)' );
                      return;
                    }
		    
                    if ( xmlDoc.getElementsByTagName('status')[0].firstChild.nodeValue == 200 ) {
                      if ( xmlDoc.getElementsByTagName('success')[0].firstChild.nodeValue == 1) {
                        var call_id = xmlDoc.getElementsByTagName('call_id')[0].firstChild.nodeValue;
                        
                        var x = window.setTimeout("rateObj.CheckOperator('" + call_id + "')", 100);
                      }
                    }
              }
            }
        }
        conn.send(params_str);
    },
    
    
    CheckOperator: function(call_id) 
    {  
        if (isNaN(call_id)) {
            //return;
        }
        
        var params_str = 'call_id='+ escape(call_id) + '&act=check_operator';
        var conn = WebBrowser1.init();
        if (!conn) {
        	  alert('An Error occurred with WebBrowser1.init()');
            return false;
        }

        conn.open('POST', '/cgi-bin/index.cgi', true);
        conn.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

        conn.onreadystatechange = function() {
            if (conn.readyState == 1) { 
                //working..
            }
            if (conn.readyState == 4) { 
                if (conn.status == 200) { // stato "completed" e risposta "OK"
                    //eval(conn.responseText);
                    //alert('conn.responseText: ' + conn.responseText );

                    var xmlDoc = conn.responseXML;
                    if (xmlDoc == null) {
                      alert( 'Impossibile proseguire, per favore contatta il nostro staff via email. (code=2)' );
                      return;
                    }
		    
                    if ( xmlDoc.getElementsByTagName('status')[0].firstChild.nodeValue == 200 ) {
                    	
                    	var debugDisplay = document.getElementById('debugDisplay');
                    	var status_str = xmlDoc.getElementsByTagName('status_str')[0].firstChild.nodeValue;
                    	debugDisplay.innerHTML = status_str;

                        if ( status_str == 'ON_QUEUE') {
                          var box = document.getElementById('call_operatorBox');
                          box.style.display = "none";
                          box = document.getElementById('call_waitingBox');
                          box.style.display = "block";
                        }
                    	
                    	
                      if ( xmlDoc.getElementsByTagName('success')[0].firstChild.nodeValue == 1) {
                      	var x;
                      	if ( xmlDoc.getElementsByTagName('retry')[0].firstChild.nodeValue == 1) {
                      	  x = window.setTimeout("rateObj.CheckOperator('" + call_id + "')", check_message_interval);
                      	} else {
                      		window.clearInterval(x);
                      		self.location = 'index.cgi?act=client_display&call_id='+call_id+'&onstatus=' + status_str;
                      	}
                      } else {  // call failed, maybe got ON_TIMEOUT
                      	self.location = 'index.cgi?act=client_display&call_id=' + call_id + '&onstatus=' + status_str;
                      }
                    } else {
                      // Error in cgi
                      alert('Error');
                    }
                    return;
                }
            }
        }
        conn.send(params_str);
    },
    
    
    
    CloseCall: function() 
    {
        var call_id = document.client_frm.call_id.value;
        //alert('closing call <--- > call_id: ' + call_id);
        if (call_id=='') { return };

        var params_str = 'call_id='+ escape(call_id) + '&act=hangup_call_x';
        var conn = WebBrowser1.init();
        if (!conn) {
        	  alert('An Error occurred with WebBrowser1.init()');
            return false;
        }

        conn.open('POST', '/cgi-bin/index.cgi', true);
        conn.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

        conn.onreadystatechange = function() {
          if (conn.readyState == 1) { 
            //working..
          }
          if (conn.readyState == 4) { 
            if (conn.status == 200) { // stato "completed" e risposta "OK"
              //alert('conn.responseText: ' + conn.responseText );

              var xmlDoc = conn.responseXML;
              if (xmlDoc == null) {
                alert( 'Impossibile proseguire, per favore contatta il nostro staff via email. (code=3)' );
                return;
              }
		    
              if ( xmlDoc.getElementsByTagName('status')[0].firstChild.nodeValue == 200 ) {
                if ( xmlDoc.getElementsByTagName('success')[0].firstChild.nodeValue == 1) {
                  //alert('NOW I\'LL CLOSE THIS WINDOW!');
                  window.close();
                }
              }
		    	
              return;
            }
          }
        }
        conn.send(params_str);
        return false;
    }
    
}
   

DOMhelp.addEvent(window, 'load', rateObj.init, false);
//DOMhelp.addEvent(window, 'unload', rateObj.CloseCall, false);
sndObj.init();

