var req;
var frech = 'frech_handler';

function filereceived(src,name,size,type) {
	if (frech) 
		eval(frech+'(\''+src.replace('\'','\\\'')+'\',\''+name.replace('\'','\\\'')+'\',\''+size.replace('\'','\\\'')+'\',\''+type.replace('\'','\\\'')+'\')'); 
}

function registerfrechandler(f) {
	frech = f;
}

function frech_contacts_1(src,name,size,type) {
	ajaxload('c=contacts&t=newlist&step=2&list='+escape(document.forms['listspec'].elements['listname'].value)+'&src='+escape(src)+'&name='+escape(name)+'&size='+escape(size)+'&type='+escape(type),'tc_1');
}

function ajaxload(url,target) {

	//document.getElementById(target).innerHTML = 'Loading...';
	loadinglabel(target);
	url = 'http://'+document.location.host+'/ajax.php?'+url+'&ts='+getrand();
	req = false;
	// branch for Mozilla XMLHttpRequest object
    if(window.XMLHttpRequest) {
    	try {
			req = new XMLHttpRequest();
        } catch(e) {
			req = false;
        }
    // branch for IE/Windows ActiveX version
    } else if(window.ActiveXObject) {
       	try {
        	req = new ActiveXObject("Msxml2.XMLHTTP");
      	} catch(e) {
        	try {
          		req = new ActiveXObject("Microsoft.XMLHTTP");
        	} catch(e) {
          		req = false;
        	}
		}
    }
	if(req) {
		req.onreadystatechange = new Function("processReqChange('"+target+"')");
		req.open("GET", url, true);
		req.send("");
	}
	return false;
}

function ajaxloadxml(url,postxml,callback) {
	url = 'http://'+document.location.host+'/ajax.php?'+url+'&ts='+getrand();
	req = false;
	// branch for Mozilla XMLHttpRequest object
    if(window.XMLHttpRequest) {
    	try {
			req = new XMLHttpRequest();
        } catch(e) {
			req = false;
        }
    // branch for IE/Windows ActiveX version
    } else if(window.ActiveXObject) {
       	try {
        	req = new ActiveXObject("Msxml2.XMLHTTP");
      	} catch(e) {
        	try {
          		req = new ActiveXObject("Microsoft.XMLHTTP");
        	} catch(e) {
          		req = false;
        	}
		}
    }
	if(req) {
		req.onreadystatechange = callback;
		postxml='xml='+escape(postxml);
		req.open("POST", url, true);
		req.setRequestHeader('Content-type','application/x-www-form-urlencoded');
		req.setRequestHeader('Content-length',postxml.length);
		req.send(postxml);
	}
	return false;
}



function processReqChange(el_id) {
    // only if req shows "loaded"
    if (req.readyState == 4) {
        // only if "OK"
        if (req.status == 200) {
            document.getElementById(el_id).innerHTML = req.responseText;
        } else {
            document.getElementById(el_id).innerHTML = 'There was a problem retrieving the data:<br />'+req.statusText;
        }
    }
}

function tabclick(tablink) {
	// bubble up to find tabset
	var tabset = tablink.parentNode;
	while (tabset.className != 'tabset' && tabset.tagName.toUpperCase() != 'BODY') {
		tabset = tabset.parentNode;
	}
	if (tabset.className != 'tabset') return false;

	var tabs = tabset.getElementsByTagName('LI');
	for (i=0; i<tabs.length; i++) {
		tabs[i].className='';
	}
	if (tablink.parentNode.tagName.toUpperCase() == 'LI')
		tablink.parentNode.className='activetab';

	// find tabcontent
	for (i=0;i<tabset.getElementsByTagName('DIV').length;i++) {
		if (tabset.getElementsByTagName('DIV')[i].className=='tabcontent') {
			var tabcontent = tabset.getElementsByTagName('DIV')[i];
		}
	}
}

function getrand() {
	var d = new Date();
	return ''+d.getFullYear()+((d.getMonth() < 10)? '0':'')+(d.getMonth() +1)+((d.getDate() < 10)? '0':'')+d.getDate()+((d.getHours() < 10)? '0':'')+d.getHours()+((d.getMinutes() < 10)? '0':'')+d.getMinutes()+((d.getSeconds() < 10)? '0':'')+d.getSeconds();
}

function loadinglabel(el_id) {
//	document.getElementById(el_id).innerHTML = '';
	document.getElementById(el_id).innerHTML = 'Loading..';
//	setTimeout('updatelabel(\''+el_id+'\')',1000);
}

function updatelabel(el_id) {
	switch (document.getElementById(el_id).innerHTML) {
		case 'Loading':
			document.getElementById(el_id).innerHTML = 'Loading.';
			setTimeout('updatelabel(\''+el_id+'\')',1000);
		break;
		case 'Loading.':
			document.getElementById(el_id).innerHTML = 'Loading..';
			setTimeout('updatelabel(\''+el_id+'\')',1000);
		break;
		case 'Loading..':
			document.getElementById(el_id).innerHTML = 'Loading...';
			setTimeout('updatelabel(\''+el_id+'\')',1000);
		break;
		case 'Loading...':
			document.getElementById(el_id).innerHTML = 'Loading';
			setTimeout('updatelabel(\''+el_id+'\')',1000);
		break;
	}
}


//file upload thingy

function progressmonitor(guid,target,iTotal,iRead,iStatus,dtnow,dtstart) {

	url = 'http://www.wow-supreme.com/uploader/progress.cgi?iTotal='+iTotal+'&iRead='+iRead+'&iStatus='+iStatus+'&sessionid='+guid+'&dtnow='+dtnow+'&dtstart='+dtstart+'&ts='+getrand();
//	url = 'http://www.wow-supreme.com/uploader/progress.cgi?'+url+'&ts='+getrand();
	req = false;
	// branch for Mozilla XMLHttpRequest object
    if(window.XMLHttpRequest) {
    	try {
			req = new XMLHttpRequest();
        } catch(e) {
			req = false;
        }
    // branch for IE/Windows ActiveX version
    } else if(window.ActiveXObject) {
       	try {
        	req = new ActiveXObject("Msxml2.XMLHTTP");
      	} catch(e) {
        	try {
          		req = new ActiveXObject("Microsoft.XMLHTTP");
        	} catch(e) {
          		req = false;
        	}
		}
    }
	if(req) {
		req.onreadystatechange = new Function("processMonitorChange('"+target+"')");
		req.open("GET", url, true);
		req.send("");
	}
	return false;
}

function processMonitorChange(el_id) {
    // only if req shows "loaded"
    if (req.readyState == 4) {
        // only if "OK"
        if (req.status == 200) {
			var resp = req.responseText;
			resp = resp.replace(/^\s*|\s*$/g,"");
			resp = resp.split('|');
			if (resp.length == 11) {
				var display = 'Upload progress<br /><br />';
				display += '<div style="width: 300px; text-align: center; border: 1px solid #ccc; background-color: 000; background-image: url(/uploader/progress.jpg); background-position: -'+(300 - ( isNaN(Math.floor(parseInt(resp[2])))? '0' : (Math.floor(parseInt(resp[2]))) ) * 3)+'px 0; background-repeat: no-repeat">'+( isNaN(Math.floor(parseInt(resp[2])))? '0' : (Math.floor(parseInt(resp[2]))) )+'% - '+resp[3]+'Kbps</div>';
				display += '<br />Time taken: '+resp[4]+' &nbsp; Remaining: '+resp[5];;
	            document.getElementById(el_id).innerHTML = display;
				setTimeout('progressmonitor(\''+resp[8]+'\',\''+el_id+'\',\''+resp[0]+'\',\''+resp[6]+'\',\''+resp[7]+'\',-1,\''+resp[10]+'\')',1000)
			}
			else { 
				if (resp[0] == 'complete') {
					var display = 'Upload progress<br /><br />';
					display += '<div style="width: 300px; text-align: center; border: 1px solid #ccc; background-color: 000; background-image: url(/uploader/progress.jpg); background-position: 0 0; background-repeat: no-repeat">100% - '+resp[4]+'Kbps</div>';
					display += '<br />Time taken: '+resp[5]+' &nbsp; Remaining: 00:00:00';
					document.getElementById(el_id).innerHTML = display;
					setTimeout('document.location.href=\'filemanager.php?check='+resp[9]+'&ts='+getrand()+'\'',1000)
				}
				else {
					alert('\''+resp[0]+'\'');
					document.getElementById(el_id).innerHTML = 'Unknown error - please tell me about this.. '+resp.join(';');
				}
			}
        } else {
            document.getElementById(el_id).innerHTML = 'There was a problem retrieving the data:<br />'+req.statusText;
        }
    }
}


function xgridobj(datasrc) {
	this.datasrc = datasrc;
	this.fieldset = new xgridfieldset();
	this.sortlist = new xgridsortlist();
}

function xgridfieldset() {
	this.fields = new Array();
	this.length = 0;
}

xgridfieldset.prototype.addfield = function(name,src,ref) {
	this.fields[this.fields.length] = new xgridfield(name,src,ref);
	this.length=this.fields.length;
}

xgridfieldset.prototype.removefield = function(ref) {
	for (var i=0;i<this.fields.length;i++) {
		if (this.fields[i].ref == ref) {
			this.fields.splice(i,1);
			this.length=this.fields.length;
			i--;
		}
	}
}

function xgridfield(name,src,ref) {
	this.name=name;
	this.src=src;
	this.ref=ref;
}

function xgridsortlist() {
	this.keys = new Array();
	this.length = 0;
}

function xgridsortkey(field,dir) {
	this.field = field;
	this.dir = dir;
}

xgridsortlist.prototype.addkey = function (field,dir) {
	this.keys[this.keys.length] = newxgridsortkey(field,dir);
	this.length = this.keys.length;
}

xgridobj.prototype.getxml = function() {
	//226
	var xml = '<gridquery>\r\n';
	xml += '<fieldset datasrc="'+xmlescape(this.datasrc)+'">\r\n';
	for (var i=0;i<this.fieldset.length;i++) {
		xml += '<field name="'+xmlescape(this.fieldset.fields[i].name)+'" src="'+xmlescape(this.fieldset.fields[i].src)+'" ref="'+xmlescape(this.fieldset.fields[i].ref)+'" />\r\n';
	}
	xml += '</fieldset>\r\n';
	xml += '<sortlist>\r\n';
	for (i=0;i<this.sortlist.length;i++) {
		xml += '<key field="'+xmlescape(this.sortlist.keys[i].field)+'" dir="'+xmlescape(this.sortlist.keys[i].dir)+'" />';
	}
	xml += '</sortlist>\r\n';
	xml += '</gridquery>';
	return xml;
}

function xmlescape(s) {
  s = s.replace(/&/g, "&amp;");
  s = s.replace(/>/g, "&gt;");
  s = s.replace(/</g, "&lt;");
  s = s.replace(/"/g, "&quot;");
  s = s.replace(/'/g, "&apos;");
  return s;
}

function xmlalert() {
    // only if req shows "loaded"
    if (req.readyState == 4) {
        // only if "OK"
        if (req.status == 200) {
            alert(req.responseText);
        } else {
            alert('There was a problem retrieving the data:\r\n'+req.statusText);
        }
    }
}