Digital Payag

October 11, 2008

PHP Live! IE 6 Fix

Here’s a code for PHP Live! chat script that fixes the issue on Internet Explorer version 6.0 failing to render the chat buttons, making the script inoperable.

How-to install:

1. Look for your xmlhttp:js file located in this path - yourlivechatfolder/js/

2. Remove the existing content of xmlhttp:js and replace it with the code below.

// IE support
if (window.ActiveXObject && !window.XMLHttpRequest) {
window.XMLHttpRequest = function() {
return new ActiveXObject((navigator.userAgent.toLowerCase().indexOf('msie 5') != -1) ? 'Microsoft.XMLHTTP' : 'Msxml2.XMLHTTP');
};
}
// Gecko support
/* ;-) */
// Opera support
if (window.opera && !window.XMLHttpRequest) {
window.XMLHttpRequest = function() {
this.readyState = 0; // 0=uninitialized,1=loading,2=loaded,3=interactive,4=complete
this.status = 0; // HTTP status codes
this.statusText = '';
this._headers = [];
this._aborted = false;
this._async = true;
this.abort = function() {
this._aborted = true;
};
this.getAllResponseHeaders = function() {
return this.getAllResponseHeader('*');
};
this.getAllResponseHeader = function(header) {
var ret = '';
for (var i = 0; i < this._headers.length; i++) {
if (header == '*' || this._headers[i].h == header) {
ret += this._headers[i].h + ': ' + this._headers[i].v + '\n';
}
}
return ret;
};
this.setRequestHeader = function(header, value) {
this._headers[this._headers.length] = {h:header, v:value};
};
this.open = function(method, url, async, user, password) {
this.method = method;
this.url = url;
this._async = true;
this._aborted = false;
if (arguments.length >= 3) {
this._async = async;
}
if (arguments.length > 3) {
// user/password support requires a custom Authenticator class
opera.postError(’XMLHttpRequest.open() - user/password not supported’);
}
this._headers = [];
this.readyState = 1;
if (this.onreadystatechange) {
this.onreadystatechange();
}
};
this.send = function(data) {
if (!navigator.javaEnabled()) {
alert(”XMLHttpRequest.send() - Java must be installed and enabled.”);
return;
}
if (this._async) {
setTimeout(this._sendasync, 0, this, data);
// this is not really asynchronous and won’t execute until the current
// execution context ends
} else {
this._sendsync(data);
}
}
this._sendasync = function(req, data) {
if (!req._aborted) {
req._sendsync(data);
}
};
this._sendsync = function(data) {
this.readyState = 2;
if (this.onreadystatechange) {
this.onreadystatechange();
}
// open connection
var url = new java.net.URL(new java.net.URL(window.location.href), this.url);
var conn = url.openConnection();
for (var i = 0; i < this._headers.length; i++) {
conn.setRequestProperty(this._headers[i].h, this._headers[i].v);
}
this._headers = [];
if (this.method == 'POST') {
// POST data
conn.setDoOutput(true);
var wr = new java.io.OutputStreamWriter(conn.getOutputStream());
wr.write(data);
wr.flush();
wr.close();
}
// read response headers
// NOTE: the getHeaderField() methods always return nulls for me :(
var gotContentEncoding = false;
var gotContentLength = false;
var gotContentType = false;
var gotDate = false;
var gotExpiration = false;
var gotLastModified = false;
for (var i = 0; ; i++) {
var hdrName = conn.getHeaderFieldKey(i);
var hdrValue = conn.getHeaderField(i);
if (hdrName == null && hdrValue == null) {
break;
}
if (hdrName != null) {
this._headers[this._headers.length] = {h:hdrName, v:hdrValue};
switch (hdrName.toLowerCase()) {
case 'content-encoding': gotContentEncoding = true; break;
case 'content-length' : gotContentLength = true; break;
case 'content-type' : gotContentType = true; break;
case 'date' : gotDate = true; break;
case 'expires' : gotExpiration = true; break;
case 'last-modified' : gotLastModified = true; break;
}
}
}
// try to fill in any missing header information
var val;
val = conn.getContentEncoding();
if (val != null && !gotContentEncoding) this._headers[this._headers.length] = {h:'Content-encoding', v:val};
val = conn.getContentLength();
if (val != -1 && !gotContentLength) this._headers[this._headers.length] = {h:'Content-length', v:val};
val = conn.getContentType();
if (val != null && !gotContentType) this._headers[this._headers.length] = {h:'Content-type', v:val};
val = conn.getDate();
if (val != 0 && !gotDate) this._headers[this._headers.length] = {h:'Date', v:(new Date(val)).toUTCString()};
val = conn.getExpiration();
if (val != 0 && !gotExpiration) this._headers[this._headers.length] = {h:'Expires', v:(new Date(val)).toUTCString()};
val = conn.getLastModified();
if (val != 0 && !gotLastModified) this._headers[this._headers.length] = {h:'Last-modified', v:(new Date(val)).toUTCString()};
// read response data
var reqdata = '';
var stream = conn.getInputStream();
if (stream) {
var reader = new java.io.BufferedReader(new java.io.InputStreamReader(stream));
var line;
while ((line = reader.readLine()) != null) {
if (this.readyState == 2) {
this.readyState = 3;
if (this.onreadystatechange) {
this.onreadystatechange();
}
}
reqdata += line + '\n';
}
reader.close();
this.status = 200;
this.statusText = 'OK';
this.responseText = reqdata;
this.readyState = 4;
if (this.onreadystatechange) {
this.onreadystatechange();
}
if (this.onload) {
this.onload();
}
} else {
// error
this.status = 404;
this.statusText = 'Not Found';
this.responseText = '';
this.readyState = 4;
if (this.onreadystatechange) {
this.onreadystatechange();
}
if (this.onerror) {
this.onerror();
}
}
};
};
}
// ActiveXObject emulation
if (!window.ActiveXObject && window.XMLHttpRequest) {
window.ActiveXObject = function(type) {
switch (type.toLowerCase()) {
case 'microsoft.xmlhttp':
case 'msxml2.xmlhttp':
return new XMLHttpRequest();
}
return null;
};
}
function initxmlhttp()
{
var xmlhttp ;
if ( !xmlhttp && typeof XMLHttpRequest!='undefined' )
{
try
{
xmlhttp = new XMLHttpRequest() ;
}
catch (e)
{
xmlhttp = false ;
}
}
return xmlhttp;
}

October 8, 2008

Best Online Streaming Radio Player

Filed under: Guide/Tweak, Software

This is the evolution of online radio streaming at it’s best! Welcome Screamer Radio. A small online streaming radio player that has a huge database of online radio stations you can choose from. It has lots of nifty features like updating its built-in presets database and can record streaming music. On top of that, this monster is FREE!

screamer radio

Why to use Screamer Radio?

It’s easy to use
It’s not bloated
It’s ad free
It has no spyware
It has a huge database of radio stations (around 300+)
It has a cool peak meter ;)
You can easily record what you’re listening to
You can hide it in the system tray
You can play back on multiple soundcards
…and it’s free!

Download: http://www.screamer-radio.com/download/

October 6, 2008

Fastest Online Tech Support In The Philippines

tech support

If you’re a Filipino and you’re connected online, the fastest way for you to get Windows technical support is where else but from a forum who does troubleshooting in a daily basis. Visit Ulop.net, short for United Lanshops Owners Portal, an online discussion group which caters live technical support using their dynamic shoutbox. Register now and join the forums so you can start asking for support from friendly internet cafe owners.

register at http://ulop.net

October 5, 2008

DNS Advantage

Filed under: Documents

DNS Advantage

DNS Advantage - A direct competitor to OpenDNS

DNS Advantage resolves all your DNS requests exclusively through UltraDNS’s proprietary Directory Services Platform. While most networks use recursive DNS services that are provided by their ISP or that reside on their own set of small DNS servers, DNS Advantage is better - and here’s why.

Read here: http://www.dnsadvantage.com/dnsadv/index.html

FYI - UltraDNS is one of the largest commercial DNS operator.

This screenshot is from the test I made which showed considerable speed advantage over the popular OpenDNS. The nearest server to us is located in Hong Kong.

http://www.dnsadvantage.com

Public Nameservers you can use

DNS 1: 156.154.70.1
DNS 2: 156.154.71.1

Your feedback is much appreciated. Thank you!

Get free blog up and running in minutes with Blogsome
Theme designed by Jay of onefinejay.com