var defaultHeader = '<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd = "http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body>';
var defaultFooter = '</soap:Body></soap:Envelope>';

function createReader(url,action,method,callback,inputval) {
	var reader = new QJAXRequest;
    reader.addHeader('SOAPAction', action + '/' + method);
	reader.url = url;
	reader.callback = callback;
	reader.addHeader('Content-Type','text/xml; charset=utf-8');
	reader.callerror = function(id,xml,text) {alert(text);};
	reader.data = '';
	reader.inputVal = inputval;
	
	var itemList = new Array();
	var meth = method;
	var act = action;
	
	this.addPostItem = function(tagName, value) {
	    itemList[itemList.length] = '<' + tagName + '>' + xmlEncode(value) + '</' + tagName + '>';
	}
	
	this.addPostItemArray = function(arrayOfTagNamesAndValues) {
	    for (var i=0;i<arrayOfTagNamesAndValues.length;i++) {
	        itemList[itemList.length] = '<' + arrayOfTagNamesAndValues[i][0] + '>' + xmlEncode(arrayOfTagNamesAndValues[i][1]) + '</' + arrayOfTagNamesAndValues[i][0] + '>';
	    }
	}

	this.send = function(q) {
	    reader.data = defaultHeader + '<' + meth + ' ' + 'xmlns="' + act + '">';
	    for (var i=0;i<itemList.length;i++) {
	        reader.data += itemList[i];
	    }
	    reader.data += '</' + meth + '>' + defaultFooter;
	    q.add(reader);
	}
}
function setReader(post,act,url,cb,q,val) {
	var reader = new QJAXRequest;
    reader.addHeader('SOAPAction',act);
	reader.url = url;
	reader.callback = cb;
	reader.addHeader('Content-Type','text/xml; charset=utf-8');
	reader.callerror = function(id,xml,text) {alert(text);};
	reader.data=post;
	reader.inputVal=val;
	q.add(reader);
}

function getPostString(method,xmlns,post) {
    return defaultHeader + '<' + method + ' ' + xmlns + '>' + post + '</' + method + '>' + defaultFooter;
}

function getInnerText(obj) {
    return obj.innerText || obj.textContent;
}

function setInnerText(obj, text) {
    obj.innerText = text;
    obj.textContent = text;
}

function el(obj) {
	return document.getElementById(obj);
}

function cE(tagName) {
	return document.createElement(tagName);
}

function cT(txt) {
	return document.createTextNode(txt);
}

function getText(xml,node) {
    try {
        return xmlDecode(xml.getElementsByTagName(node)[0].childNodes[0].nodeValue);
    } catch (ex) {return '';}
}

function getNodeText(xml) {
    try {
        return xmlDecode(xml.childNodes[0].nodeValue);
    } catch (ex) {return '';}
}

function xmlEncode(str) {
	return str.toString().replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');
}

function xmlDecode(str) {
	return str.toString().replace(/&lt;/g,'<').replace(/&gt/g,'>').replace(/&amp/g,'&');
}

function getCookie(name) {
    var dc = document.cookie;
    var prefix = name + "=";
    var begin = dc.indexOf("; " + prefix);
    if (begin == -1) {
        begin = dc.indexOf(prefix);
        if (begin != 0) return null;
    }
    else {begin += 2;}
    var end = document.cookie.indexOf(";", begin);
    if (end == -1) {end = dc.length;}
    return unescape(dc.substring(begin + prefix.length, end));
}

function clearObj(obj) {
    while (obj.childNodes.length > 0) {obj.removeChild(obj.lastChild);}
}

function clearObjOne(obj) {
    while (obj.childNodes.length > 1) {obj.removeChild(obj.lastChild);}
}

function readFont() {
	var f = getCookie('fontSize');
	if (f != null) {document.body.style.fontSize = (f) + 'px';setFont(f);}
	else {setFont(16);}
}

function bodyH() {
    if (window.innerHeight) {return window.innerHeight;}
    else if (document.documentElement.clientHeight) {return document.documentElement.clientHeight;}
    else if (document.body.offsetHeight) {return document.body.offsetHeight;}
    else {return 300;}
}

function getPosition(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft;
		curtop = obj.offsetTop;
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
		}
	}
	return [curleft,curtop];
}