
function XHRConnection() {
var conn = false;
this.datas = new String();
this.meth = new String();
this.page = new String();

this.response = new String();
//var params = new Array();
var elementto = false;
var elementfrom = false;
var dspfunc = false;

var ubj = this;

try {conn = new XMLHttpRequest();}
catch (error) {
try {conn = new ActiveXObject("Microsoft.XMLHTTP");}
catch (error) {
try {conn = new ActiveXObject("Msxml2.XMLHTTP");}
catch (error) {conn = false;
}
}
}


this.appenddata = function(field,val) {

f = escape(field);
v1 = escape(val);

if( val.indexOf('+') > -1 ) {
v = v1.replace(/\+/,'%2B');
v1 = v;
}

this.datas += (this.datas.length == 0) ? f + "=" + v1 : "&" + f + "=" + v1;

}


this.checkelem = function(elemententree) {

var url = new RegExp();
var email = new RegExp(); 
url.compile("[A-Za-z0-9-_]+\\.[A-Za-z0-9-_%&\?\/.=]+$");
email.compile("^\\w[\\w+\.\-]*@[\\w\-]+\.\\w[\\w+\.\-]*\\w$");
tempid = Math.random();

if(!elemententree.id) {elemententree.setAttribute('id',tempid);}


if(elemententree.value =="" || elemententree.value =="Field required.") {
if(elemententree.title !== 'allowe') {
elemententree.value = 'Field required.' ;
pulsate(elemententree.id,2,200);
}
return false;
} else {


if(elemententree.name) {theelem = elemententree.name;}
if(elemententree.title) {theelem = elemententree.title;}

switch(theelem) {
case 'site':
if(!url.test(elemententree.value)) {
elemententree.value = 'Enter a valid URL.' ;
pulsate(elemententree.id,3,200);
return false;
}
break;
case 'email':
if(!email.test(elemententree.value)) {
elemententree.value = 'Enter a valid email.' ;
pulsate(elemententree.id,3,200);
return false;
}
case 'user':
if(elemententree.value == "username") {
elemententree.value = 'Enter a valid username.' ;
pulsate(elemententree.id,3,200);
return false;
}
break;
case 'message':
if(elemententree.value == "message") {
elemententree.value = 'Field required.' ;
pulsate(elemententree.id,3,200);
return false;
}
break;
case 'pass':
//pval = hex_hmac_md5(elemententree.parentNode.elements['token'].value, hex_md5(elemententree.value));
//alert(elemententree.type +' '+ elemententree.value );
//elemententree.value = pval;
break;
}
}
return true;
};



this.submitform = function(elementform) {

if(elementform.method || elementform.action) {

this.meth = elementform.method;
this.page = elementform.action;

for (i = 0; i < elementform.elements.length; i++) {
if ( elementform.elements[i].type == "text" || elementform.elements[i].type == "hidden" || elementform.elements[i].type == "file" || elementform.elements[i].nodeName == "TEXTAREA" || elementform.elements[i].nodeName == "SELECT" || elementform.elements[i].type == "password") { 
if(this.checkelem(elementform.elements[i]) == true ) {
this.appenddata(elementform.elements[i].name,elementform.elements[i].value);
} else {
return false;
}
}

elementfrom = elementform;
}


return true;

} else {

//alert(elementform);
this.meth = 'POST';
try {
this.page = elementform.href;
this.appenddata('token',FindID('tokenbas').value);
}
catch(error) {alert('wrong html element');}
return true;
}

};






this.makereq = function(elemententree,meth,page) {
if(elemententree.nodeName == "INPUT") {
if( this.checkelem(elemententree) ) {
this.appenddata(elemententree.name,elemententree.value);
this.meth = meth;
this.page = page;
return true;
} else {
return false;
}
}
}


this.pasteit = function(div) {document.getElementById(div).innerHTML = conn.responseText;}


this.sendandload = function(callback,div,page,meth) {
dspfunc = callback ;
elementto = div ;

if(meth) {this.meth = meth;}
if(page) {this.page = page;}

this.meth = this.meth.toUpperCase();

switch(this.meth) {
case "GET":
this.page = (this.datas.length > 0) ? this.page + "?" + this.datas : this.page;
conn.open("GET", this.page);
conn.send(null);
break;
case "POST":
conn.open("POST", this.page);
conn.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
conn.send(this.datas);
break;
default :
//document.getElementById('message').innerHTML
//alert('element : '+ elemententree + ' method : '+ meth +' this.page : '+ this.page +' this.datas : '+ this.datas);
return false;
break;
}
//alert(this.datas);
//alert(escape("+"));

};


conn.onreadystatechange = function() {
if (conn.readyState == 4 && conn.status == 200) {
ubj.response = conn.responseText;
if(typeof dspfunc == "function") {

return dspfunc(conn);

} else {

switch(dspfunc) {
default:
//elementto.innerHTML = conn.responseText;
break;
case 'basic':
elementto.innerHTML = conn.responseText;
break;
case 'opac':
changeopac(0,elementto.id);
elementto.innerHTML = conn.responseText;
opacity(elementto.id,0,100,400);
break;
case 'pulse':
elementto.innerHTML = conn.responseText;
pulsate(elementto.id,3,400);
break;
case 'color':
elementto.innerHTML = conn.responseText;
$morphColor(elementto.id,'#cecece','#54123e','#cefece','#008efe','#ce55ce','#54cece',300);
break;
}

}


if( document.getElementById('error') ) {
formerror = 1;
return false;
} else {

//if(elementfrom.elements) {alert(elementfrom.elements.length);}
//FindID('servermessage').innerHTML = getprop(elementfrom.elements[1].value);

if(elementfrom) {
for (i = 0; i < elementfrom.elements.length; i++) {
if ( elementfrom.elements[i].type == "text" || elementfrom.elements[i].type == "file" || elementfrom.elements[i].nodeName == "TEXTAREA" || elementfrom.elements[i].nodeName == "SELECT" || elementfrom.elements[i].type == "password") { 
//alert(conn.responseText);

if( elementfrom.elements[i].title.indexOf("allowe") == -1 ) {

elementfrom.elements[i].value = elementfrom.elements[i].defaultValue ? elementfrom.elements[i].defaultValue : '';

} else {
$morphColor(elementfrom.elements[i].id,'#247fb3','#cecece','#222222','#111111','#247fb3','#303030',300);

}

}
}
}


}
return true;
}
};



return this;

}    ////END CLASS


var updtagname = function(obj) {

if(FindID('txtname').value !="") {
document.getElementById('namell').innerHTML = obj.responseText;
document.getElementById('nbchar').innerHTML= document.getElementById('txtname').value.length + ' chars ';
} else {
document.getElementById('namell').innerHTML = "";
}
document.getElementById('busy').innerHTML ='';

}

var loadhtml = function(obj) {
if(FindID('contenttxt') && FindID('contenttxt').value !="") {
var val = obj.responseText;

var vier = val.replace(/">/,'">\n\n');

document.getElementById('apercu').innerHTML = obj.responseText;
FindID('contenttxt').value = vier;

}
}

function loadbox(elem,callback,div) {

var XHR = new XHRConnection();
if( XHR.submitform(elem) ) {
result = XHR.sendandload( callback,div );
return true;

}
}

function loadcontent(callback,div,page,tok) {
div.innerHTML ='<div style="text-align:center;"><img src="img/ajax-loader.gif" alt="please wait"></div>';
var XHR = new XHRConnection();
XHR.datas += 'token='+ tok;
XHR.sendandload( callback,div,page,'POST' );
return true;
}

function postdata(pagem , arrayobj, backelem, tok) {
var XHR = new XHRConnection();

for(i=0; i < arrayobj.length; i +=2 ) {
XHR.appenddata(arrayobj[i], arrayobj[ i+1 ]);
}

XHR.appenddata('token',tok);

if (XHR.sendandload( 'opac' , backelem , pagem ,'POST' ) ) {
return XHR.response;
}

}


function checkform(elem) {
var XHR = new XHRConnection();
if( XHR.submitform(elem) ) {
elem.submit();
return true;
}
}


function blankform(elem) {
alert(elem.name);
for (i = 0; i < elem.elements.length; i++) {
elem.elements[i].value =="";
if ( elem.elements[i] || elem.elements[i].type == "text" || elem.elements[i].type == "file" || elem.elements[i].nodeName == "TEXTAREA" || elem.elements[i].nodeName == "SELECT" || elem.elements[i].type == "password") { 
alert(elem.elements[i].value);

}
}

return true;
}


function setajform(form, ajvalue) {
for(j = 0;j < form.elements.length;j++) {

if(form.elements[j].type=="submit") {

switch(ajvalue) {
case 1:
form.elements[j].onclick = function() {
loadbox(this.form,'pulse',document.getElementById('servermessage'));
return false;
}
break;
case 0:
form.elements[j].onclick = function() {
checkform(form);
return false;
}
break;
}

}

if(form.elements[j].nodeName=="TEXTAREA" && FindID('txtname') ) {
form.elements[j].style.borderColor ='#004488';
form.elements[j].disabled = false;
}

/*
form.elements[j].onfocus = function() {
form.elements[j].style.borderColor ='#2284a8';
}
form.elements[j].onblur = function() {
form.elements[j].style.borderColor ='#004488';
}
*/

}

}


function setaj(value) {
//nbfrm = document.forms;
for(i = 0;i < document.forms.length;i++) {

if(value == 1) {document.forms[i].action = document.forms[i].action + '&aj=1';}
setajform(document.forms[i], value);
crhidden(document.forms[i],document.getElementById('tokenbas').value);
}
aj = value;
}

