[2517] | 1 | function emInfoContact() |
---|
| 2 | { |
---|
| 3 | this.email = ""; |
---|
| 4 | this.timeout = null; |
---|
| 5 | this.timeout_hide = null; |
---|
| 6 | this._mousemove = document.onmousemove; |
---|
| 7 | this.td; |
---|
| 8 | this.createCard(); |
---|
| 9 | } |
---|
| 10 | |
---|
| 11 | emInfoContact.prototype.createCard = function(){ |
---|
| 12 | var pic= new Image(); |
---|
| 13 | pic.src="./templates/"+template+"/images/card.gif"; |
---|
| 14 | card = document.createElement("DIV"); |
---|
| 15 | card.id = "card_cc"; |
---|
| 16 | card.style.display = "none"; |
---|
| 17 | card.style.width = "244px"; |
---|
| 18 | card.style.backgroundImage = "url("+pic.src+")"; |
---|
| 19 | card.style.height = "134px"; |
---|
| 20 | card.style.position = "absolute"; |
---|
| 21 | card.innerHTML = "<table onmouseout='InfoContact.timeout_hide=setTimeout(\"InfoContact.hide()\",50);' onmouseover='clearTimeout(InfoContact.timeout_hide);' cellpadding=0 cellspacing=0 width='100%' height='100%'><tr><td valign='center' align='center' id='card_cc_td'></td></tr></table>"; |
---|
| 22 | document.body.appendChild(card); |
---|
| 23 | } |
---|
| 24 | emInfoContact.prototype.begin = function(td, email){ |
---|
| 25 | |
---|
| 26 | var card = Element("card_cc"); |
---|
| 27 | |
---|
| 28 | if(this.td != td){ |
---|
| 29 | this.email = email; |
---|
| 30 | this.td = td; |
---|
| 31 | clearTimeout(this.timeout); |
---|
| 32 | } |
---|
| 33 | this.timeout = setTimeout("InfoContact.search('"+email+"')",1000); |
---|
| 34 | } |
---|
| 35 | |
---|
| 36 | emInfoContact.prototype.label = function (text){ |
---|
| 37 | InfoContact.hide(); |
---|
| 38 | var div_label = Element("div_label"); |
---|
| 39 | if(!div_label) { |
---|
| 40 | div_label = document.createElement("DIV"); |
---|
| 41 | div_label.id = "div_label"; |
---|
| 42 | div_label.style.padding = "2px"; |
---|
| 43 | div_label.style.display = "none"; |
---|
| 44 | div_label.style.position = "absolute"; |
---|
| 45 | div_label.style.border = "1px solid black"; |
---|
| 46 | div_label.style.backgroundColor="#FFFFDC"; |
---|
| 47 | document.body.appendChild(div_label); |
---|
| 48 | } |
---|
| 49 | div_label.innerHTML = text; |
---|
| 50 | div_label.style.top = findPosY(this.td) + 20 - Element("divScrollMain_"+numBox).scrollTop; |
---|
| 51 | div_label.style.left = findPosX(this.td) + 20; |
---|
| 52 | div_label.style.display = ''; |
---|
| 53 | setTimeout("InfoContact.hide()",1000); |
---|
| 54 | } |
---|
| 55 | |
---|
| 56 | emInfoContact.prototype.connectVoip = function (phoneUser, typePhone){ |
---|
| 57 | var handler_connectVoip = function(data){ |
---|
| 58 | if(!data) { |
---|
| 59 | alert(get_lang("Error contacting VoIP server.")); |
---|
| 60 | } |
---|
| 61 | else{ |
---|
| 62 | alert(get_lang("Requesting a VoIP call")+":\n"+data); |
---|
| 63 | } |
---|
| 64 | } |
---|
| 65 | cExecute ("$this.functions.callVoipConnect&to="+phoneUser+"&typePhone="+typePhone, handler_connectVoip); |
---|
| 66 | } |
---|
| 67 | |
---|
| 68 | emInfoContact.prototype.show = function (data){ |
---|
| 69 | var _this = this; |
---|
| 70 | var card = Element("card_cc"); |
---|
| 71 | card.style.left = findPosX(this.td) + 20; |
---|
| 72 | var y = findPosY(this.td) + 20 - Element("divScrollMain_"+numBox).scrollTop; |
---|
| 73 | var w_height = is_ie ? document.body.clientHeight + document.body.scrollTop : window.innerHeight + window.pageYOffset; |
---|
| 74 | if(y + 160 > w_height) |
---|
| 75 | card.style.top = y - 160; |
---|
| 76 | else |
---|
| 77 | card.style.top = y; |
---|
| 78 | card.style.display = ''; |
---|
| 79 | var cn = data.cn; |
---|
| 80 | if(cn && cn.toString().length > 35) |
---|
| 81 | cn = cn.toString().substring(0,30) + "..."; |
---|
| 82 | |
---|
| 83 | var phoneUser = data.telefone; |
---|
| 84 | if(preferences.voip_enabled && phoneUser) { |
---|
| 85 | phoneUser = "<a title=\""+get_lang("Call to Comercial Number")+"\" href=\"#\" onclick=\"InfoContact.connectVoip('"+phoneUser+"', 'com')\">"+phoneUser+"</a>"; |
---|
| 86 | if(data.mobile){ |
---|
| 87 | phoneUser += " / <a title=\""+get_lang("Call to Mobile Number")+"\" href=\"#\" onclick=\"InfoContact.connectVoip('"+data.mobile+"', 'mob')\">"+data.mobile+"</a>"; |
---|
| 88 | } |
---|
| 89 | } |
---|
| 90 | |
---|
| 91 | Element("card_cc_td").innerHTML = "<table cellpadding=0 cellspacing=0 border=0 height='100%' width='100%'><tr><td width='70' height='93' style='padding-top:5px;padding-left:6px' align='center' valign='center'>"+ |
---|
| 92 | "<img src='./inc/show_img.php?email="+data.email+"'></td><td style='padding-left:2px' align='left' valign='top'>"+ |
---|
| 93 | "<br><img align='center' src='templates/"+template+"/images/"+(data.type)+"_catalog.png'><font size=1 color=BLACK> <b>"+get_lang("Sender's Information")+"</b></font>"+ |
---|
| 94 | _this.verifyIM(data.uid,data.email)+ |
---|
| 95 | "<br><img align='center' src='templates/"+template+"/images/phone.gif'> <font size=1 color=BLACK>"+(phoneUser ? phoneUser : get_lang("None") )+"</font>"+ |
---|
| 96 | "</td></tr><tr><td valign='top' align='center' colspan='2'>"+ |
---|
| 97 | "<font size=1 color=BLACK>"+cn+"</font>"+ |
---|
| 98 | "<br><span title='"+get_lang("Write message")+"' style='cursor:pointer' onclick='InfoContact.sendMail(\""+cn+"\",\""+data.email+"\")'><font size=1 color=DARKBLUE><u>"+data.email+"</u></font></span>"+ |
---|
| 99 | "</td></tr></table>"; |
---|
| 100 | |
---|
| 101 | |
---|
| 102 | this.timeout_hide = setTimeout("InfoContact.hide()",1000); |
---|
| 103 | } |
---|
| 104 | |
---|
| 105 | emInfoContact.prototype.search = function (email){ |
---|
| 106 | var _this = this; |
---|
| 107 | var trustedDomain = false; |
---|
| 108 | // If "preferences.notification_domains" was setted, then verify if "mail" has a trusted domain. |
---|
| 109 | if (preferences.notification_domains != undefined && preferences.notification_domains != "") { |
---|
| 110 | var domains = preferences.notification_domains.split(','); |
---|
| 111 | for (var i = 0; i < domains.length; i++) { |
---|
| 112 | if (email.toString().match(domains[i])) |
---|
| 113 | trustedDomain = true; |
---|
| 114 | } |
---|
| 115 | } |
---|
| 116 | else |
---|
| 117 | trustedDomain = true; |
---|
| 118 | |
---|
| 119 | var handler_search = function(data){ |
---|
| 120 | if(data != null){ |
---|
| 121 | _this.show(data); |
---|
| 122 | } |
---|
| 123 | else |
---|
| 124 | _this.label(email); |
---|
| 125 | } |
---|
| 126 | |
---|
| 127 | if (trustedDomain) |
---|
| 128 | cExecute ("$this.ldap_functions.getUserByEmail&email="+email, handler_search); |
---|
| 129 | else |
---|
| 130 | _this.label(email); |
---|
| 131 | } |
---|
| 132 | |
---|
| 133 | emInfoContact.prototype.hide = function(){ |
---|
| 134 | this.email = ""; |
---|
| 135 | if(Element("div_label")) |
---|
| 136 | Element("div_label").style.display = 'none'; |
---|
| 137 | |
---|
| 138 | if(Element("card_cc")) |
---|
| 139 | Element("card_cc").style.display = "none"; |
---|
| 140 | } |
---|
| 141 | |
---|
| 142 | emInfoContact.prototype.sendMail = function(name, email){ |
---|
| 143 | Element("msg_number").value = "\""+ name+"\" <"+email+">"; |
---|
| 144 | InfoContact.hide(); |
---|
| 145 | new_message("new","null"); |
---|
| 146 | } |
---|
| 147 | |
---|
| 148 | emInfoContact.prototype.openChat = function(event, email){ |
---|
| 149 | IM.action_button(event, '1', email ,false); |
---|
| 150 | } |
---|
| 151 | |
---|
| 152 | emInfoContact.prototype.verifyIM = function(uid, email){ |
---|
| 153 | |
---|
| 154 | if ( !window.IM || !document.getElementById('myStatus') ) |
---|
| 155 | return "<br/><br/>"; |
---|
| 156 | |
---|
| 157 | var status = IM.infoContact(uid); |
---|
| 158 | var _return = '<br/>'; |
---|
| 159 | |
---|
| 160 | if ( status ) |
---|
| 161 | { |
---|
| 162 | _return += '<img align="center" src="'+status.src+'" />'; |
---|
| 163 | _return += '<span onclick="IM.action_button(event,\''+status.jid+'\');"><font size="1" color='; |
---|
| 164 | |
---|
| 165 | if( status.src != img_unavailable.src) |
---|
| 166 | _return += '"DARKBLUE"><u style="cursor:pointer;">'+get_lang("User connected")+"</u>"; |
---|
| 167 | else |
---|
| 168 | _return += '"BLACK">'+get_lang("User not connected"); |
---|
| 169 | |
---|
| 170 | _return += "</font></span><br />"; |
---|
| 171 | } |
---|
| 172 | |
---|
| 173 | return _return; |
---|
| 174 | } |
---|
| 175 | /* Build the Object */ |
---|
| 176 | var emInfoContact; |
---|
| 177 | InfoContact = new emInfoContact(); |
---|