// +---------------------------------------------+
// |     Copyright © 2008 Shahram                |
// |     This file may be redistributed.         |
// +---------------------------------------------+

function p335_hasClass(element,className){
if(element&&className&&element.className){
return new RegExp('\\b'+p335_trim(className)+'\\b').test(element.className);}
return false;
}
function p335_add_css_class_name(element,className){
if(className == 2) className = 'hover';
if(element&&className){
if(!p335_hasClass(element,className)){
if(element.className){element.className+=' '+p335_trim(className);}else{element.className=p335_trim(className);}}}
return this;
}
function p335_remove_css_class_name(element,className){
if(className == 2) className = 'hover';
if(element&&className&&element.className){
className=p335_trim(className);var regexp=new RegExp('\\b'+className+'\\b','g');
element.className=element.className.replace(regexp,'');}
return this;
}

//trim
String.prototype.trim=function(){
if(this==window){return null;}
return this.replace(/^\s*|\s*$/g,'');
}
function p335_trim(text){return String(text).trim();}
//end trim
          
//tab handle 
function p335_ge(id){
if(id == 1) id = 'status_updates_2';
if(id == 2) id = 'chat_settings';
return document.getElementById(id);
}

function p335_toggleTab(wrapperID,tabID,scrollContentID){   
var tab1 = new Array('buddy_list','presence_notifications','chat_status_control');
for (x in tab1) {
if(x == wrapperID && p335_hasClass(p335_ge(tab1[x]),'hidden')) 
{p335_tog_tab(x,'open');} else {p335_tog_tab(x,'close');}}p335_size_set(); 
}

//tab toggle
function p335_tog_tab(x,action){
var tab1 = new Array('buddy_list','presence_notifications','chat_status_control');
var tab2 = new Array('buddy_list_tab','presence_notifications_tab','chat_status_control_tab');
if (action=='open') {
p335_remove_css_class_name(p335_ge(tab1[x]),'hidden');
p335_add_css_class_name(p335_ge(tab2[x]),'focused');
} else if (action == 'close') {
p335_add_css_class_name(p335_ge(tab1[x]),'hidden');
p335_remove_css_class_name(p335_ge(tab2[x]),'focused');
}}

//toggle calsses
function p335_toggleClass(element,className){
if(className == 1) className = 'hidden'; 
if(p335_hasClass(element,className)){return p335_remove_css_class_name(element,className);}else{return p335_add_css_class_name(element,className);
}}

//get httpobject
function p335_GetXmlHttpObject(){ 
var p211xmlHttp = null; 
try {p211xmlHttp=new XMLHttpRequest();} catch (e) {
var eversion = ["Msxml2.XMLHTTP.7.0", "Msxml2.XMLHTTP.6.0", "Msxml2.XMLHTTP.5.0", "Msxml2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"];
for(var i=0; !p211xmlHttp && i<eversion.length; i++) 
{try{p211xmlHttp = new ActiveXObject(eversion[i]); } catch(e) 
{ p211xmlHttp = null; }
}} return p211xmlHttp;
}

//get window size
function p335_get_window_size() {
if( typeof( window.innerWidth ) == "number" ) {mHeight = window.innerHeight;} else {mHeight = document.documentElement.clientHeight;}
return mHeight;
}

//set tab sizes
function p335_size_set() {
var tabs = new Array("buddy_list_parent","presence_notifications_content");
if(!p335_hasClass(p335_ge("buddy_list"),"hidden")) {var id="0";} 
else if(!p335_hasClass(p335_ge("presence_notifications"),"hidden")) {var id="1";} 
if(id == 0 || id == 1){
var wwsize = p335_get_window_size();
var wsize = wwsize - 110;
var tsize = p335_ge(tabs[id]).offsetHeight;
if(wwsize < 120) {
p335_ge(tabs[id]).style.height="20px";
p335_ge(tabs[id]).style.overflowY="auto";
} else if(tsize > wsize) {
p335_ge(tabs[id]).style.height=wsize+"px";
p335_ge(tabs[id]).style.overflowY="auto";
} else if(p335_ge(tabs[id]).style.height != "auto"){
p335_ge(tabs[id]).style.height="auto";
p335_size_set(); 
}}
}

//add tab reszing event to onreszie handler
function p335_addonresize(resize) {
if(typeof window.onresize == "function") {var prevonresize = onresize;
window.onresize = function() { prevonresize(); resize();};} else{window.onresize = resize;}
}

//main loader
function p335_ajax_get_info(met,po){
method = met ? "POST" :  "GET";
url = p335_sdurl+"plugins/p335_facebook_bar/load.php";
url=url+"?sid="+Math.random();
post = po ? "p335_inv="+po : "";
var xmlHttp=p335_GetXmlHttpObject();
if (xmlHttp==null){alert ("Browser does not support HTTP Request");return;}
xmlHttp.onreadystatechange=function () {p335_ajax_process(xmlHttp);}
 p335_add_css_class_name(p335_ge("load_status_log_error"),"hidden");
 p335_remove_css_class_name(p335_ge("load_status_log"),"hidden"); 
 p335_remove_css_class_name(p335_ge("chat_previous_tab"),"hidden");

if(method=="GET") {
 xmlHttp.open("GET",url,true); 
 xmlHttp.send(null);    
} else if(method=="POST") {
  xmlHttp.open("POST",url,true); 
  xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
  xmlHttp.setRequestHeader("Content-length", post.length); 
  xmlHttp.setRequestHeader("Connection", "close"); 
  xmlHttp.send(post);
}
                                
}

//get node values
function p335_getNodeValue(obj,tag)
{
if(obj.getElementsByTagName(tag)[0] && obj.getElementsByTagName(tag)[0].hasChildNodes()) {
return obj.getElementsByTagName(tag)[0].firstChild.nodeValue;
} else {return "";}
}

//set values when data loaded
function p335_ajax_process(xml){
if ((xml.readyState==4 || xml.readyState=="complete")){
if(xml.status != 200) {
p335_ge("load_status_log_error").innerHTML = "An error occured while connecting to the server!";
p335_add_css_class_name(p335_ge("load_status_log"),"hidden");
p335_remove_css_class_name(p335_ge("load_status_log_error"),"hidden");
clearTimeout(p335_refto);p335_refto = setTimeout("p335_ajax_get_info()",5000);
return false;
}
var xm = xml.responseXML;
var o = xm.getElementsByTagName("options");
if(o && o.length > 0) {
var tabs = new Array("buddy_list","presence_notifications","chat_status_control");
var tab = new Array("buddy_list_tab","presence_notifications_tab","chat_status_control_tab");
var tabo = new Array(false,false,false);
var tabt = new Array(true,false,false);
for(x in tabs) {
if(!p335_hasClass(p335_ge(tabs[x]),"hidden")) {tabo[x]=true;p335_tog_tab(x,"close")}
if(!p335_hasClass(p335_ge(tab[x]),"hidden")) {tabt[x]=false;}
}
p335_set_defaults();
p335_add_opts(o[0]);
p335_chk_cookies();
if(p335_getNodeValue(o[0],"ulp")==1) {
p335_tab_all("0","show");
var u = xm.getElementsByTagName("users");
p335_add_user(u,o[0]);
} else {p335_tab_all("0","hide");}
if(p335_getNodeValue(o[0],"pmp")==1) { 
p335_tab_all(1,"show");
var p = xm.getElementsByTagName("pms");
p335_add_pm(p,o[0]);
} else {p335_tab_all(1,"hide");}
if(p335_getNodeValue(o[0],"pmo")==0 && tabo[2] && !tabo[1] && !tabo[0]) {p335_tog_tab(2,"open"); } 
else if(p335_getNodeValue(o[0],"ulp")==1 && p335_getNodeValue(o[0],"pmo")==0 && !tabo[2] && !tabo[1] && (p335_ulo == "on" || tabo[0])) {p335_tog_tab(0,"open"); } 
else if(p335_getNodeValue(o[0],"pmp")==1 && (p335_getNodeValue(o[0],"pmo")==1 || (p335_getNodeValue(o[0],"pmo")==0 && tabo[1]))) {p335_tog_tab(1,"open"); }
p335_add_css_class_name(p335_ge("chat_previous_tab"),"hidden");
p335_add_css_class_name(p335_ge("load_status_log"),"hidden");
} else {
p335_ge("load_status_log_error").innerHTML = "An error occured while trying get the user info!";
p335_add_css_class_name(p335_ge("load_status_log"),"hidden");
p335_remove_css_class_name(p335_ge("load_status_log_error"),"hidden");
}
if (!isNaN(p335_uref) && p335_uref != 0) {clearTimeout(p335_refto);p335_refto = setTimeout("p335_ajax_get_info()",p335_uref*1000);}
if(p335_inf) {p335_ge("presence_ui").style.display="";} 
}}


//Initiate Bar javascript functions
function p335_init(){
if(navigator.appName=="Microsoft Internet Explorer" && parseFloat(navigator.appVersion.split("MSIE")[1]) <7) {return false;}
p335_addonresize(p335_size_set);
if(!p335_inf) p335_chk_cookies();
if(p335_inf) p335_addonload(p335_ajax_get_info);
if(p335_uref != 0 && p335_uref != "off") p335_refto = setTimeout("p335_ajax_get_info()",p335_uref*1000);
if(p335_tabo != 3 && !p335_inf) { p335_toggleTab(p335_tabo,p335_tabo);}
}

//Settings change
function p335_setSettingChange(p){
if(p==1){
if(p335_ge("chat_setting_checkbox_sticky_buddylist1").checked == true && p335_ulp != 0){p335_ulo = "on";} else {p335_ulo = "off";}
p335_setCookie("p335_ulo_"+p335_userid,p335_ulo,false);
} else if(p==2){
clearTimeout(p335_refto);
if(p335_ge("chat_setting_checkbox_refresh_bar1").checked == true){
p335_ge("chat_setting_checkbox_refresh_bar_min1").disabled = false;
var tmpval = p335_ge("chat_setting_checkbox_refresh_bar_min1").value;
p335_uref = (isNaN(tmpval) || tmpval == 0) ? "off" : tmpval;
} else {p335_ge("chat_setting_checkbox_refresh_bar_min1").disabled = true;p335_uref = "off";}
p335_setCookie("p335_uref_"+p335_userid,p335_uref,false);
if(!isNaN(p335_uref) || p335_uref != "off" && p335_uref != 0) { p335_ajax_get_info();}}
}


//check and set values / cookies
function p335_chk_cookies(){
if(p335_getCookie("p335_ulo_"+p335_userid)!=false){p335_ulo = p335_getCookie("p335_ulo_"+p335_userid);} else {p335_setCookie("p335_ulo_"+p335_userid,p335_ulo,false);}
if(p335_getCookie("p335_uref_"+p335_userid)!=false){ p335_uref = p335_getCookie("p335_uref_"+p335_userid);
} else { p335_setCookie("p335_uref_"+p335_userid,p335_uref,false);}
if(!isNaN(p335_uref) || p335_uref != "off" && p335_uref != 0) { 
p335_ge("chat_setting_checkbox_refresh_bar1").checked = true;
p335_ge("chat_setting_checkbox_refresh_bar_min1").value=p335_uref;
p335_ge("chat_setting_checkbox_refresh_bar_min1").disabled = false;
} else {
p335_ge("chat_setting_checkbox_refresh_bar1").checked = false;
p335_ge("chat_setting_checkbox_refresh_bar_min1").value=0;
} 
if(p335_ulo == "on"){
p335_ge("chat_setting_checkbox_sticky_buddylist1").checked = true;
} else {
p335_ge("chat_setting_checkbox_sticky_buddylist1").checked = false;
}
}

//get cookies
function p335_getCookie(c_name)
{
if (document.cookie.length>0){c_start=document.cookie.indexOf(c_name + "=");
if (c_start!=-1){ 
c_start=c_start + c_name.length+1; 
c_end=document.cookie.indexOf(";",c_start);
if (c_end==-1) c_end=document.cookie.length;
return unescape(document.cookie.substring(c_start,c_end));
}}return false;
}


//set cookies
function p335_setCookie(c_name,value,expiredays)
{
document.cookie=c_name+ "=" +escape(value)+";path=/";
}

//set default values
function p335_set_defaults(){
p335_ge("buddy_count_num").innerHTML = 0;
p335_ge("buddy_total_online").innerHTML = 0;
p335_ge("buddy_mem_online").innerHTML = 0;
p335_ge("buddy_gu_online").innerHTML = 0;
var x = document.createElement("li");
x.setAttribute("id", "buddy_list_empty_item");
x.className="info_text";
x.innerHTML = "No one is available online.";
p335_ge("buddy_list_parent").innerHTML = ""; 
p335_ge("buddy_list_parent").appendChild(x);
p335_ge("presence_notifications_count").innerHTML="";
p335_ge("presence_pm_total").innerHTML = 0;
p335_ge("presence_pm_new").innerHTML = 0;
p335_ge("notification_pm_body").innerHTML = "";
p335_remove_css_class_name(p335_ge("notification_pm_all"),"hidden");
p335_ge("status_updates_1").innerHTML = ""
p335_add_css_class_name(p335_ge("chat_next_tab"),"hidden");   
} 

//set options and values
function p335_add_opts(o){
p335_userid = p335_getNodeValue(o,"userid");
p335_ulp = p335_getNodeValue(o,"ulp");
p335_ulo = p335_getNodeValue(o,"ulo") == 1 ? "on" : "off";
p335_uref = p335_getNodeValue(o,"uref") != 0 ? p335_getNodeValue(o,"uref") : false;
if(p335_getNodeValue(o,"guest")=="1") {
p335_add_css_class_name(p335_ge("status_updates_1"),"hidden"); 
p335_add_css_class_name(p335_ge("presence_log_out_link"),"hidden");
p335_remove_css_class_name(p335_ge("presence_log_in_link"),"hidden");
} else {
p335_remove_css_class_name(p335_ge("presence_log_out_link"),"hidden");
p335_add_css_class_name(p335_ge("presence_log_in_link"),"hidden");
var status = new Array("available","unavailable","idle");
for(s in status) {
if(s != p335_getNodeValue(o,"status")) {
p335_remove_css_class_name(p335_ge("chat_status_control_tab"),status[s]);
p335_remove_css_class_name(p335_ge("chat_availability_toggle"),status[s]);
}}
//p335_add_css_class_name(p335_ge("chat_settings"),"hidden");
p335_add_css_class_name(p335_ge("status_updates_2"),"hidden");
p335_add_css_class_name(p335_ge("chat_status_control_tab"),p335_getNodeValue(o,"status")); 
p335_add_css_class_name(p335_ge("chat_availability_toggle"),p335_getNodeValue(o,"status"));
p335_ge("status_updates_1").innerHTML='<a href="'+p335_getNodeValue(o,"profurl")+'" target="'+p335_target+'">'+p335_getNodeValue(o,"avurl")+'</a><div id="chat_status_body"><span id="chat_su_placeholder"><a href="'+p335_getNodeValue(o,"profurl")+'" target="'+p335_target+'">Welcome '+p335_getNodeValue(o,"username")+'</a><br /><a href="'+p335_getNodeValue(o,"cppath")+'" target="'+p335_target+'">My Account</a></span></div>';
p335_remove_css_class_name(p335_ge("status_updates_1"),"hidden");
}
if(p335_getNodeValue(o,"ccount")) {p335_remove_css_class_name(p335_ge("chat_next_tab"),"hidden");p335_ge("next_count").innerHTML = p335_getNodeValue(o,"ccount"); }
}


//Add user list
function p335_add_user(u,o){
p335_ge("buddy_count_num").innerHTML = p335_getNodeValue(o,"total_online");
p335_ge("buddy_total_online").innerHTML = p335_getNodeValue(o,"total_online");
p335_ge("buddy_mem_online").innerHTML = p335_getNodeValue(o,"members_online");
p335_ge("buddy_gu_online").innerHTML = p335_getNodeValue(o,"guests_online");
if(u && u.length > 0){
p335_add_css_class_name(p335_ge("buddy_list_empty_item"),"hide_empty_item");
for (var i=0;i<u.length;i++) 
{
var userid = p335_getNodeValue(u[i],"userid") ;
var url = p335_getNodeValue(u[i],"uurl") ;
var avatar = p335_getNodeValue(u[i],"uavurl") ;
var user = p335_getNodeValue(u[i],"username") ;
var date = p335_getNodeValue(u[i],"atime") ;
var invi = p335_getNodeValue(u[i],"inv") == 1 ? true : false;
var invc = invi ? "un" : "";
var s = p335_ge("buddy_list_parent");
var x = document.createElement("li");
x.setAttribute("style", "display: block;"); 
x.setAttribute("id", "buddy_list_item_"+userid);
var y = document.createElement("a");
y.setAttribute("href",url);
y.setAttribute("target",p335_target); 
y.className = "p335_clearfix";
y.innerHTML = avatar;
var z = document.createElement("div");
z.className = "friend_status";  
z.innerHTML = '<strong id="buddy_list_item_name_'+userid+'">'+user+'</strong><span>'+date+'</span>';
var e = document.createElement("div");
e.className = invc+"available_dot";
y.appendChild(z);y.appendChild(e);x.appendChild(y);s.appendChild(x);
}}
}

//add messages
function p335_add_pm(p,o){
if(p335_getNodeValue(o,"pmcount") > 0 ) {
p335_ge("presence_notifications_count").innerHTML="<strong>"+p335_getNodeValue(o,"pmcount")+"</strong>";
}
p335_ge("presence_pm_total").innerHTML = p335_getNodeValue(o,"pmtotal");
p335_ge("presence_pm_new").innerHTML = p335_getNodeValue(o,"pmcount");
if(p && p.length > 0){
p335_add_css_class_name(p335_ge("notification_pm_all"),"hidden");
for (var i=0;i<p.length;i++) 
{
var user = p335_getNodeValue(p[i],"pmfrom");
var title = p335_getNodeValue(p[i],"pmtitle");
var ddate = p335_getNodeValue(p[i],"pmdate");
var url = p335_getNodeValue(p[i],"pmfromlink");
var url2 = p335_getNodeValue(p[i],"pmlink");
var s = p335_ge("notification_pm_body");
var x = document.createElement("div");
x.className = "notification notif_read p335_clearfix";
var y = document.createElement("div");
y.className = "icon";
y.innerHTML = '<img src="'+p335_sdurl+'plugins/p335_facebook_bar/images/icons/im.gif" alt="" />';
x.appendChild(y);
var z = document.createElement("div");
z.className = "body";
z.innerHTML = '<strong><a href="'+url+'" target="'+p335_target+'">From : '+user+'</a><br><a href="'+url2+'" target="'+p335_target+'">Title : '+title+'</a></strong><br><span class="time">'+ddate+'</span>';
x.appendChild(z);s.appendChild(x);p335_size_set();
}}
}

//tab opne/close actions
function p335_tab_all(x,action) {
var tab1 = new Array("buddy_list_tab","presence_notifications_tab"); 
if(action == "hide") {
p335_tog_tab(x,"close")
p335_add_css_class_name(p335_ge(tab1[x]),"hidden");
if(x==1){
p335_ge(tab1[0]).style.width="143px"
p335_ge("presence_menu_opts_div").style.backgroundImage="url("+p335_sdurl+"plugins/p335_facebook_bar/images/presence/buddy_list_menu_wide_bg.gif)"
p335_ge("presence_menu_opts_div").style.backgroundPosition="left bottom";
}} else if(action == "show") {
if(x==0) {
if(p335_hasClass(p335_ge(tab1[1]),"hidden")) {
p335_ge(tab1[0]).style.width="143px"
p335_ge("presence_menu_opts_div").style.backgroundImage="url("+p335_sdurl+"plugins/p335_facebook_bar/images/presence/buddy_list_menu_wide_bg.gif)"
p335_ge("presence_menu_opts_div").style.backgroundPosition="left bottom";
} else {
p335_ge(tab1[0]).style.width="112px"
p335_ge("presence_menu_opts_div").style.backgroundImage="url("+p335_sdurl+"plugins/p335_facebook_bar/images/presence/buddy_list_menu_bg.gif)"
p335_ge("presence_menu_opts_div").style.backgroundPosition="left bottom";
}} else if(x==1){
p335_ge(tab1[0]).style.width="112px"
p335_ge("presence_menu_opts_div").style.backgroundImage="url("+p335_sdurl+"plugins/p335_facebook_bar/images/presence/buddy_list_menu_bg.gif)"
p335_ge("presence_menu_opts_div").style.backgroundPosition="left bottom";
}p335_remove_css_class_name(p335_ge(tab1[x]),"hidden");
}
}

//add onload for forums
function p335_addonload(ponload) {
if(typeof window.addEventListener != 'undefined'){window.addEventListener('load', ponload, false);}
else if(typeof document.addEventListener != 'undefined'){document.addEventListener('load', ponload, false);}
else if(typeof window.attachEvent != 'undefined'){window.attachEvent('onload', ponload);}
else {if(typeof window.onload == 'function') {
var prevonload = onload;window.onload = function() { prevonload(); ponload();}
} else {
window.onload = ponload();
}}
}