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.background = "url("+pic.src+") no-repeat"; |
---|
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 email = data.email; |
---|
84 | if(email && email.toString().length > 35) |
---|
85 | email = email.toString().substring(0,30) + "..."; |
---|
86 | |
---|
87 | var phoneUser; |
---|
88 | |
---|
89 | data.telefone ? phoneUser = data.telefone : phoneUser ="<br />"; |
---|
90 | |
---|
91 | data.mobile ? phoneUser += "<br /> "+data.mobile : phoneUser += "<br />"; |
---|
92 | |
---|
93 | data.employeeNumber ? employeeNumber = data.employeeNumber : employeeNumber =""; |
---|
94 | |
---|
95 | data.ou ? ou = data.ou : ou = ""; |
---|
96 | |
---|
97 | |
---|
98 | |
---|
99 | if(preferences.voip_enabled) { |
---|
100 | phoneUser = ''; |
---|
101 | if(data.telefone) |
---|
102 | phoneUser = "<a title=\""+get_lang("Call to Comercial Number")+"\" href=\"#\" onclick=\"InfoContact.connectVoip('"+ data.telefone+"', 'com')\">"+ data.telefone+"</a>"; |
---|
103 | if(data.mobile){ |
---|
104 | phoneUser += "<br> <a title=\""+get_lang("Call to Mobile Number")+"\" href=\"#\" onclick=\"InfoContact.connectVoip('"+data.mobile+"', 'mob')\">"+data.mobile+"</a>"; |
---|
105 | } |
---|
106 | } |
---|
107 | |
---|
108 | Element("card_cc_td").innerHTML = |
---|
109 | "<table cellpadding=0 cellspacing=0 border=0 height='100%' width='100%'><tr>"+ |
---|
110 | "<td style='padding-top:4px' align='center' valign='center' colspan ='2'><img src='templates/"+template+"/images/"+(data.type)+"_catalog.png' /><font size=1 color=BLACK> <b>"+get_lang("Sender's Information")+"</b></font>"+_this.verifyIM(data.uid,data.email)+"</td></tr>"+ |
---|
111 | |
---|
112 | "<tr><td align='center' style='width:70px;height:93px;padding-left:6px' align='center' valign='center'>"+ |
---|
113 | "<img style='float:left' src='./inc/show_img.php?email="+data.email+"'></td>"+ |
---|
114 | "<td style='padding-left:2px' width='70%' align='left' valign='top'>"+ |
---|
115 | "<br><img style='float:left'align='center' src='templates/"+template+"/images/phone.gif' /> <font size=1 color=BLACK>"+(phoneUser ? phoneUser : get_lang("None") )+"</font><br />"+ |
---|
116 | "<br><font size=1 color=BLACK>"+cn+"</font><br><b>"+employeeNumber+"</b>"+ |
---|
117 | "<br/>"+ou+"</td></tr>"+ |
---|
118 | "<tr><td style='padding-bottom:4px' align='center' valign='center' colspan ='2' nowrap><span title='"+get_lang("Write message")+"' style='cursor:pointer' onclick='InfoContact.sendMail(\""+cn+"\",\""+data.email+"\")'><font size=1 color=DARKBLUE><u>"+email+"</u></font></span>"+ |
---|
119 | "</td></tr></table>"; |
---|
120 | |
---|
121 | |
---|
122 | this.timeout_hide = setTimeout("InfoContact.hide()",1000); |
---|
123 | } |
---|
124 | |
---|
125 | emInfoContact.prototype.search = function (email){ |
---|
126 | var _this = this; |
---|
127 | var trustedDomain = false; |
---|
128 | // If "preferences.notification_domains" was setted, then verify if "mail" has a trusted domain. |
---|
129 | if (preferences.notification_domains != undefined && preferences.notification_domains != "") { |
---|
130 | var domains = preferences.notification_domains.split(','); |
---|
131 | for (var i = 0; i < domains.length; i++) { |
---|
132 | if (email.toString().match(domains[i])) |
---|
133 | trustedDomain = true; |
---|
134 | } |
---|
135 | } |
---|
136 | else |
---|
137 | trustedDomain = true; |
---|
138 | |
---|
139 | var handler_search = function(data){ |
---|
140 | if(data != null){ |
---|
141 | _this.show(data); |
---|
142 | } |
---|
143 | else |
---|
144 | _this.label(email); |
---|
145 | } |
---|
146 | |
---|
147 | if (trustedDomain) |
---|
148 | cExecute ("$this.ldap_functions.getUserByEmail&email="+email, handler_search); |
---|
149 | else |
---|
150 | _this.label(email); |
---|
151 | } |
---|
152 | |
---|
153 | emInfoContact.prototype.hide = function(){ |
---|
154 | this.email = ""; |
---|
155 | if(Element("div_label")) |
---|
156 | Element("div_label").style.display = 'none'; |
---|
157 | |
---|
158 | if(Element("card_cc")) |
---|
159 | Element("card_cc").style.display = "none"; |
---|
160 | } |
---|
161 | |
---|
162 | emInfoContact.prototype.sendMail = function(name, email){ |
---|
163 | Element("msg_number").value = "\""+ name+"\" <"+email+">"; |
---|
164 | InfoContact.hide(); |
---|
165 | new_message("new","null"); |
---|
166 | } |
---|
167 | |
---|
168 | emInfoContact.prototype.openChat = function(event, email){ |
---|
169 | IM.action_button(event, '1', email ,false); |
---|
170 | } |
---|
171 | |
---|
172 | emInfoContact.prototype.verifyIM = function(uid, email){ |
---|
173 | |
---|
174 | if ( !window.IM || !document.getElementById('myStatus') ) |
---|
175 | return ""; |
---|
176 | |
---|
177 | var status = IM.infoContact(uid); |
---|
178 | var _return = '<br/>'; |
---|
179 | |
---|
180 | if ( status ) |
---|
181 | { |
---|
182 | _return += '<img align="center" src="'+status.src+'" />'; |
---|
183 | _return += '<span onclick="IM.action_button(event,\''+status.jid+'\');"><font size="1" color='; |
---|
184 | |
---|
185 | if( status.src != img_unavailable.src) |
---|
186 | _return += '"DARKBLUE"><u style="cursor:pointer;">'+get_lang("User connected")+"</u>"; |
---|
187 | else |
---|
188 | _return += '"BLACK">'+get_lang("User not connected"); |
---|
189 | |
---|
190 | _return += "</font></span><br />"; |
---|
191 | } |
---|
192 | |
---|
193 | return _return; |
---|
194 | } |
---|
195 | /* Build the Object */ |
---|
196 | var emInfoContact; |
---|
197 | InfoContact = new emInfoContact(); |
---|