var shout_id=0;
var shout_timer=0;

function Inint_AJAX() {
   try { return new ActiveXObject("Msxml2.XMLHTTP");  } catch(e) {} //IE
   try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) {} //IE
   try { return new XMLHttpRequest();          } catch(e) {} //Native Javascript
   alert("XMLHttpRequest not supported");
   return null;
};

/* AJAX */
var shout_req = Inint_AJAX();

/* เริ่มต้นการทำงาน shoutbox */
function shoutStart() {
     /* อ่านรายการแรก */
     shoutGetMessage(shout_id);
}

/* อ่าน message มาแสดง */
function shoutGetMessage(id) {
     /* สร้าง connection */
     shout_req.open("POST", shout_path+"get.php", true);
     shout_req.onreadystatechange=function() {
          if (shout_req.readyState==4) {
               /* จับเวลาแสดงรายการถัดไป */
               shout_timer=setTimeout('shoutGetMessage(shout_id)', shout_interval);
               if (shout_req.status==200) {
                    var data=shout_req.responseText;
                    var datas=data.split(String.fromCharCode(1));
                    if (datas.length>0) {
                         /* แสดงผล */
                         shoutDisplay('shout_content', datas[0]);
                         /* ข้อความต่อไป */
                         shout_id = parseInt(datas[1]);
                    }
               };
          };
     };
     /* set Header */
     shout_req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
     /* ส่งค่า */
     shout_req.send("id="+id);
}

function shoutnext(id) {
     /* ยกเลิกการแสดงรายการตามปกติ */
     shout_req.abort();
     clearTimeout(shout_timer);
     if (id=='-1') shout_id=shout_id-2;
     shoutGetMessage(shout_id);
}

/* ตัวแปรสำหรับป้องกันการส่งข้อความซ้ำ */
var shout_text="";

/* ส่งข้อความเข้าระบบ */
function shoutsubmit(frm) {
     if (shout_text!=frm.text.value && check_shout(frm)) {
          shout_text=frm.text.value;
          /* AJAX */
          var reqshoutsubmit = Inint_AJAX();
          reqshoutsubmit.onreadystatechange = function () { 
               if (reqshoutsubmit.readyState==4) {
                    if (reqshoutsubmit.status==200) {
                         frm.user.value="";
                         frm.text.value="";
                         /* กำหนดข้อมูลล่าสุดให้แสดง */
                         shout_id = parseInt(reqshoutsubmit.responseText);
                    };
               };
          };
          /* สร้าง connection */
          reqshoutsubmit.open("POST", shout_path+"save.php", true); 
          /* ส่งค่า */
          reqshoutsubmit.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
          reqshoutsubmit.send("user="+frm.user.value+"&value="+shout_text);
     }
     /* คืนค่า เพื่อไม่ให้ Form ส่งต่อ */
     return false;
}

/* ตรวจสอบการกรอกข้อความ */
function check_shout(frm) {
     var v2=frm.user;
     var v3=frm.text;
     var save=false;
     
     if (v3.value.length==0) {
          alert("กรุณาป้อนข้อความที่ต้องการ");
          v3.focus();           
     } else if (v3.value.length<3 || v3.value.length>50) {
          alert("ข้อความควรมีความยาวตั้งแต่ 3 ตัวอักษรขึ้นไป\r\nและไม่เกิน 50 ตัวอักษร");
          v3.focus();        
     } else if (v2.value.length==0) {
          alert("กรุณาป้อนชื่อผู้ส่ง");
          v2.focus();           
     } else if (v2.value.length<3) {
          alert("ชื่อผู้ส่งควรมีความยาวตั้งแต่ 3 ตัวอักษรขึ้นไป");
          v2.focus(); 
     } else save=true;
     return save;
};

/* effect สำหรับการแสดงผล */
function shoutDisplay(divid, val) {
     if (document.getElementById) {
          if (navigator.userAgent.indexOf("MSIE")>-1) { /* IE ใช้ Filter */
               /* สุ่ม effect */
               switch (Math.floor(Math.random()*7)) {
               case 6: filterstring="progid:DXImageTransform.Microsoft.Checkerboard(squaresX=24, squaresY=16, direction='right', duration=1)"; break
               case 5: filterstring="progid:DXImageTransform.Microsoft.Pixelate(duration=2)"; break
               case 4: filterstring="progid:DXImageTransform.Microsoft.Fade(duration=3,overlap=1.0)"; break
               case 3: filterstring="progid:DXImageTransform.Microsoft.GradientWipe(GradientSize=1.0, Duration=3, Motion=reverse, wipeStyle=1)"; break
               case 2: filterstring="progid:DXImageTransform.Microsoft.GradientWipe(GradientSize=1.0, Duration=3, wipeStyle=1)"; break
               case 1: filterstring="progid:DXImageTransform.Microsoft.GradientWipe(GradientSize=1.0, Duration=3, Motion=reverse)"; break
               default: filterstring="progid:DXImageTransform.Microsoft.GradientWipe(GradientSize=1.0, Duration=3)"; break
               }
               var imgobj=document.getElementById(divid);
               if (imgobj.filters && window.createPopup) {
                    imgobj.style.filter=filterstring;
                    imgobj.filters[0].Apply();
               }
               imgobj.innerHTML=val;
               if (imgobj.filters && window.createPopup) imgobj.filters[0].Play();
          } else { /* Browser อื่นๆ แสดง ข่าวด้วย fade Effect */
               shout_blendDiv(divid, val, 1000);
          }
     }
}

/* change the opacity for different browsers */
function shout_changeOpac(opacity, id) {
     var object = document.getElementById(id).style; 
     object.opacity = (opacity / 100);
     object.MozOpacity = (opacity / 100);
     object.KhtmlOpacity = (opacity / 100);
     object.filter = "alpha(opacity=" + opacity + ")";
}

var shout_divcurr='shout1';
var shout_divnext='shout2';

function shout_blendDiv(divid, val, millisec) {
     var speed = Math.round(millisec / 100);
     var timer = 0;

     /* สร้าง Layer ใหม่ภายใน Layer หลัก */
     if (!document.getElementById('shout1')) {
          var Objdivid=document.getElementById(divid);
          Objdivid.style.position="relative";
          Objdivid.innerHTML='<div id="shout1"></div><div id="shout2"></div>';
     }
     
     /* สลับ Layer */
     shout_divcurr=shout_divnext;
     shout_divnext=(shout_divcurr=='shout1') ? 'shout2' : 'shout1';

     //กำหนดค่าใหม่ให้กับ Layer shout_divcurr
     shout_changeOpac(0, shout_divcurr);
     document.getElementById(shout_divcurr).innerHTML=val;
     document.getElementById(shout_divcurr).style.zIndex++;
     document.getElementById(shout_divnext).style.zIndex--;

     /* fade in shout_divcurr และ fade out shout_divnext */
     for(i=0; i<=100; i++) {
          setTimeout("shout_changeOpac("+i+", shout_divcurr)",(timer * speed));
          n=100-i;
          setTimeout("shout_changeOpac("+n+", shout_divnext)",(timer * speed));
          timer++;
     };
};

//เริ่มต้นการทำงาน shout box
if (window.addEventListener)  window.addEventListener("load", shoutStart, false)
else if (window.attachEvent) window.attachEvent("onload", shoutStart)
else if (document.getElementById) window.onload=shoutStart