function remoting() {
	this.aRequests = new Array();
	this.aRequests[0] = null;
	this.targets = new Array();
	
	this.request = function(url, params, reqmethod, targetobj) {
		method = reqmethod;
		requestxml= params;
		var req = null;
		var openIndex = this.aRequests.length;
		this.targets[openIndex]=targetobj;
		
		if (window.XMLHttpRequest) {
			var self = this;
			req = new XMLHttpRequest();
			req.onreadystatechange = function() {
				self.handle(openIndex);
			};
			this.aRequests[openIndex] = req;
			req.open(method, url, true);
			req.setRequestHeader("Content-Type", "text/xml; charset=UTF-8");
			req.setRequestHeader( "If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT" );
			if(method == 'POST') {
				req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8')
			}
			req.send(requestxml);
		} else if (window.ActiveXObject) {
            req = new ActiveXObject("Microsoft.XMLHTTP");
			if (req) {
				var self = this;
				req.onreadystatechange = function() {
					self.handle(openIndex);
				};
				this.aRequests[openIndex] = req;
				req.open(method, url, true);
				req.setRequestHeader("Content-Type", "text/xml; charset=UTF-8");
				req.setRequestHeader( "If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT" );
				if(method == 'POST') {
					req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
				}
				req.send(requestxml);
			} else {
				return false;
            }
		} else {
			return false;
		}
		return true;
	}
      
      
	this.handle = function(arrindex) {
		var found=false;
		if (this.aRequests[arrindex] != null && this.aRequests[arrindex].readyState == 4) {
			if (this.aRequests[arrindex].status == 200) {
				if(this.targets[arrindex]!=null) {
					var k = document.getElementById(this.targets[arrindex]);
					if(!k) {return;};
				} else {
					return;
				}
				
				
				var resp = this.aRequests[arrindex].responseXML.documentElement;
				
				switch(k.id) {
					case 'lstats':
						for(var i=0;i<resp.childNodes.length;i++) {
							iterator = resp.childNodes[i];
							getdom(iterator.nodeName).innerHTML = iterator.childNodes[0].nodeValue;
						}
					found=true;
					break;
					case 'lnews' :
						smessages = new Array();
						smessages[0] = new String();
						var cnta = 0;
						var cntb = 0;
						for(var i=0;i<resp.childNodes.length;i++) {
							iterator = resp.childNodes[i];
							smessages[cntb] += iterator.childNodes[0].childNodes[0].nodeValue + '<br>' + iterator.childNodes[1].getAttribute('label') +'<span class="bbottom bold">' +  iterator.childNodes[1].childNodes[0].nodeValue + '</span><br>' + iterator.childNodes[2].getAttribute('label') + '<span class="bbottom bold">' + iterator.childNodes[2].childNodes[0].nodeValue + '</span><br><br><br>';
							cnta++;
							if(!(cnta%3)) {
								cntb++;
								smessages[cntb] = new String();
							}
						}
						
						sc.updateContent(smessages);
						
						found=true;
						break;
					case 'filtersfrom':
						if(resp.childNodes.length<2) {
							try {
							removeAllChildren(getdom('filtersfrom'));
							removeAllChildren(getdom('filtersto'));
							return;
							} catch(e) {};
						}
						removeAllChildren(getdom('filtersto'));
						var k = getdom('filtersfrom');
						removeAllChildren(k);
						var gui = new GUI();
						imageNode = document.createElement('img');
						imageNode.src = baseurl+'images/arwright.gif';
						imageNode.className = 'arwr';
						for(var i=0;i<resp.childNodes.length;i++ ) {
							iterator = resp.childNodes[i];
							if(iterator.nodeName=='filter') {
								tt = iterator.getElementsByTagName('fval');
								nfilter = document.createElement('div');
								k.appendChild(nfilter);

								nfilter.setAttribute('check',parseInt(iterator.getAttribute('check')));
								nfilter.setAttribute('ftype', iterator.childNodes[1].childNodes[0].nodeValue);
								nfilter.setAttribute('opt', iterator.childNodes[0].childNodes[0].nodeValue);
								nfilter.setAttribute('pos',parseInt(iterator.getAttribute('pos')));
								nfilterHeader = document.createElement('div');
								nfilter.appendChild(nfilterHeader);
								if(iterator.childNodes[1].childNodes[0].nodeValue > 0) {
									nimg = imageNode.cloneNode(true);
									nfilterHeader.appendChild(nimg);
									/*nimg = document.createElement('img');
									nfilterHeader.appendChild(nimg);
									nimg.src = baseurl+'images/arwright.gif';
									nimg.className = 'arwr';*/
								} else {
									nimg = document.createElement('span');
									nfilterHeader.appendChild(nimg);
									nimg.innerHTML = '&nbsp;&nbsp;&nbsp;';
								}
								nfilterHeader.appendChild(document.createTextNode(iterator.childNodes[2].childNodes[0].nodeValue));
								nfilterHeader.className = ( parseInt(iterator.getAttribute('check'))>0 ? 'mhelpitemover' : 'mhelpitemout');
								addEvents(nfilterHeader);
								if(iterator.childNodes[1].childNodes[0].nodeValue > 0) {
									nfilterData = document.createElement('div');
									nfilter.appendChild(nfilterData);
									nfilterData.className = 'mhelpitemout';
									nfilterData.style.display = ( parseInt(iterator.getAttribute('check'))>0 ? 'block' : 'none');
									nfilterData.style.paddingLeft = 20 + (isIE ? 0 : 'px');
									if(iterator.childNodes[1].childNodes[0].nodeValue == 2) {
										for(var x=0;x<tt.length;x++) {
											nRow = document.createElement('div');
											nfilterData.appendChild(nRow);
											nchk = gui.checkbox();
											nRow.appendChild(nchk);
											if(parseInt(tt[x].getAttribute('check'))>0) {
												nchk.checked = true;
											}
											nchk.value = tt[x].childNodes[0].childNodes[0].nodeValue;
											nRow.appendChild(document.createTextNode(tt[x].childNodes[1].childNodes[0].nodeValue));
										}
										
									} else if (iterator.childNodes[1].childNodes[0].nodeValue == 1) {
										ntxt1 = gui.text();
										ntxt2 = gui.text();
										nfilterData.appendChild(ntxt1);
										nfilterData.appendChild(ntxt2);
										ntxt1.className = ntxt2.className = 'r_text flt';
										if(iterator.childNodes[3]) {
											if( iterator.childNodes[3] != null && iterator.childNodes[3].hasChildNodes()) {
												ntxt1.value = iterator.childNodes[3].childNodes[0].nodeValue;
											}
											if( iterator.childNodes[4] != null && iterator.childNodes[4].hasChildNodes()) {
												ntxt2.value = iterator.childNodes[4].childNodes[0].nodeValue;
											}
										}
									}
									
								}
								if(parseInt(iterator.getAttribute('break'))>0) {
									nbreak = document.createElement('div');
									k.appendChild(nbreak);
									nbreak.className='mhelpitemout';
									nbreak.appendChild(document.createTextNode('--------------------'));
								}
							}
						}
						moveFilters('filtersfrom','filtersto');
						sortFilters();
						found=true;
						break;
					case 'mhelp':
						for(var i=0;i<resp.childNodes.length;i++ ) {
							iterator = resp.childNodes[i];
							dict[parseInt(iterator.getAttribute('t'))].push(new Array(iterator.getAttribute('k'), iterator.getAttribute('v')));
						}
						try {
							hideUnusedItems();
						} catch(e) {};
						found = true;
						break;
					case 'keypromo':
						for(var i=0; i<resp.childNodes.length; i++) {
							iterator = resp.childNodes[i];
							var nopt = document.createElement('option');
							k.appendChild(nopt);
							nopt.value = iterator.getAttribute('k');
							nopt.text = iterator.getAttribute('v');
							nopt.setAttribute('keytype', iterator.getAttribute('t'));
						}
						found=true;
						break;
				}
				
				
				if(found) {
					this.aRequests[arrindex]=null;
					this.targets[arrindex]=null;
					return;
				}
				

			}
		}
	} // end handler
	
} //end class 
var rconn = new remoting();



function remoteConnection() {
	this.aRequests = new Array();
	this.aRequests[0] = null;
	this.targets = new Array();
	
	this.request = function(url, params, reqmethod, targetobj) {
		method = reqmethod;
		requestxml= params;
		var req = null;
		var openIndex = this.aRequests.length;
		this.targets[openIndex]=targetobj;
		
		if (window.XMLHttpRequest) {
			var self = this;
			req = new XMLHttpRequest();
			req.onreadystatechange = function() {self.handle(openIndex)};
			this.aRequests[openIndex] = req;
			req.open(method, url, true);
			req.setRequestHeader( "If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT" );
			if(method == 'POST') {
				req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8')
			}
			req.send(requestxml);
		} else if (window.ActiveXObject) {
            req = new ActiveXObject("Microsoft.XMLHTTP");
			if (req) {
				var self = this;
				req.onreadystatechange = function() {self.handle(openIndex)};
				this.aRequests[openIndex] = req;
				req.open(method, url, true);
				req.setRequestHeader( "If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT" );
				if(method == 'POST') {
					req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
				}
				req.send(requestxml);
			} else {
				return false;
            }
		} else {
			return false;
		}
		return true;
	}
      
      
	this.handle = function(arrindex) {
		var found=false;
		if (this.aRequests[arrindex] != null && this.aRequests[arrindex].readyState == 4) {
			if (this.aRequests[arrindex].status == 200) {
				if(this.targets[arrindex]!=null) {
					var k = document.getElementById(this.targets[arrindex]);
					if(!k) {return;};
				} else {
					return;
				}
				
				var resp=this.aRequests[arrindex].responseText;
				var tmp = resp.split('|');
				
				switch (k.id) {
					case 'divAData':
						if(tmp[0].length>1) {
							helper.showhelper(unescape(tmp[0]));
						} else {
							helper.hidehelper();
						}
						found=true;
						break;
					case 'advcol' :
						k.innerHTML = tmp[0];
						found=true;
						break;
					case 'kper':
						for(var i=0;i<tmp.length;i++) {
							data=tmp[i].split('&');
							errMsg[data[0]] = decodeURIComponent(data[1]);
						}
						found=true;
						break;
					case 'm2':
						try {
							var t = getdom('m2').innerHTML;
							k.innerHTML=t.substring(0, t.indexOf('(') ) + ' ('+tmp[0]+')';
							k.className = 'accm alert';
						} catch(e){};
						found=true;
						break;
					case 'mline2':
						getdom('mline2').innerHTML = unescape(tmp[0]);
						found=true;
						break;
					case 'mline3' :
						getdom('mline3').innerHTML = unescape(tmp[0]);
						found=true;
						break;
					case 'm3':
						var t = getdom('m3').innerHTML;
						k.innerHTML=t.substring(0, t.indexOf('(') ) + ' ('+tmp[0]+')';
						found=true;
						break;
					case 'contentfav' :
						k.innerHTML = unescape(tmp[0]);
						found=true;
						break;
					case 'mline5' :
						getdom('mline5').innerHTML = unescape(tmp[0]);
						found=true;
						break;
					case 'm5' :
						var t = getdom('m5').innerHTML;
						getdom('m5').innerHTML=t.substring(0, t.indexOf('(') ) + ' ('+tmp[0]+')';
						found=true;
						break;
					case 'divhelp':
						if(tmp.length>0) {
							for(x=0;x<tmp.length;x++) {
								data=tmp[x].split('&');
								helpitems[data[0]] = decodeURIComponent(data[1]);
							}
						}
						found=true;
						break;
					case 'scardname':
						if(parseInt(tmp[0])>0) {
							flagscard=true;
						} else {
							flagscard=false;
						}
						found=true;
						break;
					case 'ffemail':
						data=tmp[0].split('&');
						if(parseInt(data[0])==1) {
							flagmailtrue=false;
							alert(decodeURIComponent(data[1]));
						} else {
							flagmailtrue=true;
						}
						found=true;
						break;
					case 'fjobkey' :
						if(tmp[0].length)	{
							data=tmp[0].split('&');
							try {document.forms['frmkeymod'].elements['btnsubmit'].disabled=true;} catch(e) {};
							if(parseInt(data[0])==0 ) {
								alert(data[2]);
								var synwin=window.open('./syn.php?action=display_syn&keytype='+getdom('frmkeymod').elements['keytype'].value+'&kword='+unescape(data[1]), 'synwin','statusbar=no,menubar=no,scrollbars=no,resizable=yes,height=400,width=300,left=100,top=100');
								getdom('fjobkey').value='';
							} else if(parseInt(data[0])==1){
								if(confirm(decodeURIComponent(data[1]))) {
									var kform=getdom('frmkeychange');
									kform.elements['acttype'].value=1;
									kform.elements['keyid'].value=data[2];
									kform.elements['keytype'].value=data[3];
									kform.elements['keypos'].value=data[4];
									kform.submit();
								} else {
									getdom('fjobkey').value='';
								}
							} else if(parseInt(data[0])==2) {
								alert(data[2]);
								var kform=getdom('frmkeychange');
								kform.elements['acttype'].value=0;
								kform.elements['keytype'].value=data[4];
								kform.elements['keyword_name'].value=data[1];
								kform.elements['keyid'].value=data[3];
								kform.submit();
								return;
							}
						}
						found=true;
						break;
					
					case 'suplKeyANew':
						if(parseInt(tmp[0])>0) {
							newKeyId=parseInt(tmp[0]);
						}
						found=true;
						break;
					case 'suplKeyP':
						for(x=0;x<sKeyTemp.length;x++) {
							sKeyTemp[x]=null;
						}
						var t=getdom('sKeyResA');
						removeAllChildren(t);
						if(tmp.length>1) {
							data = new Array();
							for(i=0;i<tmp.length;i++) {
								data=tmp[i].split('&');
								if(parseInt(data[0])==-1) {
									continue;
								}
								if(parseInt(data[0])==0 && i!=0) {
									ndiv=document.createElement('div');
									t.appendChild(ndiv);
									ndiv.innerHTML='-------------------------------';
									ndiv.style.marginBottom='10px';
								}
								ndiv=document.createElement('div');
								t.appendChild(ndiv);
								ndiv.innerHTML=unescape(data[2]);
								ndiv.id='e'+data[0];
								ndiv.className='mhelpitemout';
								
								if(parseInt(data[0])==0) {
									ndiv.className='mhelpitemb';
								} else {
									sKeyTemp[ndiv.id] = new Array(data[0],data[1],unescape(data[2]));
									if(data[3]!=null) {
										sKeyTemp[ndiv.id][3] = unescape(data[3]);
									}
									ndiv.onmouseover=function() {this.className='mhelpitemover';};
									ndiv.onmouseout=function() {this.className='mhelpitemout'};
									ndiv.onmouseup = function() {
												try {
													var kform=document.forms['frmsearch'];
													for(var j=0;j<fields.length;j++) {
														kform.elements[fields[j]].value='';
													}
													//kform.elements['keytype'] = -1;
													
													kform.elements['keytype'].value=sKeyTemp[this.id][1];
													kform.elements[fields[sKeyTemp[this.id][1]]].value=(sKeyTemp[this.id][3]!=null ? sKeyTemp[this.id][3] : sKeyTemp[this.id][2]);
													kform.elements['keyval'].value=sKeyTemp[this.id][0];
													hideUnusedItems();
												} catch (e) {}
									};
								}
							}
							found=true;
						}
						break;
						
					case 'suplKeyA':
						for(x=0;x<sKeyTemp.length;x++) {
							sKeyTemp[x]=null;
						}
						var t=getdom('sKeyResA');
						removeAllChildren(t);
						flagisdata=false;
						flagnomatch = false;
						if(tmp.length>1) {
							data = new Array();
							for(i=0;i<tmp.length;i++) {
								data=tmp[i].split('&');
								if(parseInt(data[0])==-1) {
									flagnomatch=true;
									continue;
								}
								if(parseInt(data[0])==0 && i!=0) {
									ndiv=document.createElement('div');
									getdom('sKeyResA').appendChild(ndiv);
									ndiv.innerHTML='-------------------------------';
									ndiv.style.marginBottom='10px';
								}
								ndiv=document.createElement('div');
								getdom('sKeyResA').appendChild(ndiv);
								ndiv.innerHTML=unescape(data[2]);
								ndiv.id='e'+data[0];
								ndiv.className='mhelpitemout';
								
								if(parseInt(data[0])==0) {
									ndiv.className='mhelpitemb';
								} else {
									flagisdata=true;
									sKeyTemp[ndiv.id] = new Array(data[0],data[1],unescape(data[2]));
									if(data[3]!=null) {
										sKeyTemp[ndiv.id][3] = unescape(data[3]);
									}
									ndiv.onmouseover=function() {this.className='mhelpitemover';};
									ndiv.onmouseout=function() {this.className='mhelpitemout'};
									ndiv.onclick = function() {
											if(parseInt(sKeyTemp[this.id][1])!=ckeytype) {
												ckeytype=parseInt(sKeyTemp[this.id][1]);
												try {
													var kform=document.getElementById('frmkeychange');
													kform.elements['keytype'].value=sKeyTemp[this.id][1];
													kform.elements['keyword_name'].value=(sKeyTemp[this.id][3]!=null ? sKeyTemp[this.id][3] : sKeyTemp[this.id][2]);
													kform.elements['keyid'].value=sKeyTemp[this.id][0];
													kform.elements['acttype'].value=0;
													kform.submit();
												} catch (e) {}
											} else {
												try {
													var kform = document.getElementById('frmkeymod');
													kform.elements['keyid'].value=sKeyTemp[this.id][0];
													kform.elements['keytype'].value=sKeyTemp[this.id][1];
													kform.elements['word'].value=(sKeyTemp[this.id][3]!=null ? sKeyTemp[this.id][3] : sKeyTemp[this.id][2]);
													wordisfromdict=true;
													getxdata(baseurl,'getkfilters&keytype='+sKeyTemp[this.id][1]+'&keyid='+sKeyTemp[this.id][0],'','filtersfrom');
													//checkword();
												} catch(e) { return; };
											}
										};
								}
							}
							if(flagisdata && !flagnomatch) {
								getdom('takek').style.display='none';
							} else {
								getdom('takek').style.display='block';
							}
							found=true;
						}
						break;
					
					case 'suplKey':
						var t=getdom('sKeyRes');
						removeAllChildren(t);
						if(tmp.length>1) {
							for(i=0;i<tmp.length;i++) {
								data=tmp[i].split('&');
								ndiv=document.createElement('div');
								getdom('sKeyRes').appendChild(ndiv);
								ndiv.innerHTML=unescape(data[2]);
								ndiv.title=data[1];
								ndiv.className='mhelpitemout';
								sKeyTemp.push(new Array(data[0],data[1],data[2].toLowerCase()));
								if(data[0]==0 && data[1]==0) {
									ndiv.style.fontWeight='bold';
								} else {
									ndiv.onmouseover=function() {this.className='mhelpitemover';};
									ndiv.onmouseout=function() {this.className='mhelpitemout'};
									ndiv.onclick=function() {
										try {
											var flds=new Array('fjobkey','fprodkey','fbrandkey');
											getdom(flds[parseInt(this.title)]).value=this.innerHTML;
											hideUnusedItems();
										} catch(err) {};
									};
								}
							}
							found=true;
						}
						break;
					case 'mhelp':
						for(i=0;i<tmp.length;i++) {
							data=tmp[i].split('&');
							dict[data[0]].push(new Array(data[1],decodeURIComponent(data[2])));
						}
						found=true;
						break;
					case 'nullcontainer':
						found=true;
						break;
					default:
						break;
				}
				
				if(found) {
					this.aRequests[arrindex]=null;
					this.targets[arrindex]=null;
					return;
				}
				
				switch(k.type) {
					case 'select-one':
						removeAllChildren(k);
						if(tmp.length) {
						for(i=0;i<tmp.length;i++) {
							data=tmp[i].split('&');
							newopt = document.createElement("option");
							k.appendChild(newopt);
							newopt.value=data[0];
							newopt.text=data[1];//decodeURIComponent(data[1]);
								if(parseInt(data[0])==-1)
									newopt.disabled=true;
						}
						}
						this.aRequests[arrindex] = null;
						this.targets[arrindex]=null;
						break;
					case 'select-multiple':
						removeAllChildren(k);
						if(tmp.length>1) {
							for(i=0;i<tmp.length;i++) {
								data=tmp[i].split('&');
								newopt = document.createElement("option");
								k.appendChild(newopt);
								newopt.value=data[0];
								newopt.text=decodeURIComponent(data[1]);
								if(parseInt(data[0])==-1)
									newopt.disabled=true;
							}
						}
						this.aRequests[arrindex] = null;
						this.targets[arrindex]=null;
						break;
					default:
						this.aRequests[arrindex] = null;
						this.targets[arrindex]=null;
						break;
				}
			}
		}
	} // end handler
	
} //end class 

var conn=new remoteConnection();

function getdata(url,gaction,gmethod,gobj) {
	if(!gmethod.length || gmethod=='GET') {
		gmethod = 'GET';
		var qstr = url+'pipe.php?action='+gaction;
		conn.request(qstr,'',gmethod,gobj);
	} else {
		conn.request(baseurl+'pipe.php','action='+gaction,gmethod,gobj);
	}
}

function getxdata(url,gaction,gid,gobj) {
	var qstr = url+'pipe.php?action='+gaction;
	rconn.request(qstr,'','GET',gobj);
}


