
// HTTP --
function HttpRequest() {
	function initConnector() {
		var o = null;
		var success = false;
		var MSXML_XMLHTTP_PROGIDS = new Array(
			'MSXML2.XMLHTTP.5.0',
			'MSXML2.XMLHTTP.4.0',
			'MSXML2.XMLHTTP.3.0',
			'MSXML2.XMLHTTP',
			'Microsoft.XMLHTTP'
		);

		for (var i=0;i < MSXML_XMLHTTP_PROGIDS.length && !success; i++) {
			try {
				o = new ActiveXObject(MSXML_XMLHTTP_PROGIDS[i]);
				success = true;
			} catch (e) {}
		}
		if( null==o && typeof XMLHttpRequest != "undefined") o = new XMLHttpRequest();
		return o;
	} this.initConnector = initConnector;


	function doRequest(method,url,parms) {
			var ret = false;
			var x = this.initConnector();
			if(null==x)  return;
			var self = this;

			var i, n;
			var post_data;
			method = method.toUpperCase();

			if (method == "GET") { 
				if (url.indexOf("?") == -1) url += "?";
				for( var qparam in parms) { url += qparam+"="+escape(parms[qparam])+"&"; }
				var dt = new Date();
				url += '_'+dt.getTime()+'=1';
				post_data = null;
			} else {
				post_data = "&";
				for( var qparam in parms) { post_data += qparam+"="+escape(parms[qparam]); }
				if(2<post_data.length) post_data = post_data.substr(1);
				else post_data = "";
			}
			x.onreadystatechange = function() {
				if (x.readyState != 4) return;
				if( x.status == 200) {
					self.owner.triggerFunction(self.owner.fireFunc,x);
				} else {
					alert(x.status);
				}
			}

			try {
				x.open(method, url, true);
				if (method == "POST") {
					x.setRequestHeader("Method", "POST " + url + " HTTP/1.1");
					x.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
				}
				x.send(post_data);
				ret = true;
			} catch (e) {
				alert(e);
			}
			delete x;
			return ret;

	} this.doRequest = doRequest;


	this.owner = arguments[0];
}

// String --
String.prototype.trim = function(){
	var m=((0==arguments.length?'lr':arguments[0].replace(/\s*/gi,"")).toUpperCase());
	var s=(m.indexOf('L')>-1?this.replace(/^\s*/,""):this);
	return (m.indexOf('R')>-1?s.replace(/\s*$/,""):s);
}

String.prototype.isMailAddr = function checkMailAddr() {
	var addr = this.split("@");
	if(addr.length==1 || addr.length>2) return false;
	var dom = addr[1].split(".");
	if(dom.length == 1) return false;
	var domLen = dom.length
	if(domLen>2 && (dom[domLen-1]).length==0) domLen--;
	if(dom[domLen-1].length<2 || dom[domLen-1].length>3) return false;
	for(var i=0;i<domLen;i++) { if(dom[i].length==0) return false; }

	var acc = addr[0].split(".");
	for(i=0;i<acc.length;i++) { if(acc[i].length==0) return false; }
	var okChars = "abcdefghijklmnopqrstuvwxyz";
	okChars += okChars.toUpperCase()+"0123456789-_";
	var testString = acc.join("")+"."+dom.join("");
	if("."==testString) return false;
	i=0;
	while( i<testString.length ) { 
		if('.'==testString.substr(i,1)) {
			okChars = okChars.substr(0,okChars.length-1);
		} else {
			if(okChars.indexOf(testString.substr(i,1))==-1 ) return false;
		}
		i++;
	}
	return true;
}


function streamWrite(str) { document.write(str); }


function drawersList(symId,containerId) {
	function __construct() {
		var strToggleListItem = toggleListItem.toString();
		var re = new RegExp("var wrapperObject( = |=)window;","");
		strToggleListItem = strToggleListItem.substr(strToggleListItem.indexOf("{")+1);
		strToggleListItem = strToggleListItem.substr(0,strToggleListItem.lastIndexOf("}"));
		strToggleListItem = strToggleListItem.replace(re,'var wrapperObject=window.'+this.symbolName+';');
		this.toggleListItem = new Function('',strToggleListItem);
		var n1Index = 0;
		var n2Index = 0;
		
		this.contObj = document.getElementById(this.contId);
		var cnt = this.contObj.childNodes.length;
		var cnt2 = 0;
		var tgt = null;
		var tgt2 = null;
		var j = 0;
		for( var i=0;i<cnt; i++) {
			tgt = this.contObj.childNodes[i];
			if( 1!=tgt.nodeType ) continue;
			n1Index++;
			cnt2 = tgt.childNodes.length;
			n2Index = 0;
			for( j=0;j<cnt2; j++) {
				tgt2 = tgt.childNodes[j];
				if( 1!=tgt2.nodeType ) continue;
				n2Index++;
				tgt2.id = this.symbolName+"_"+n1Index+"_"+n2Index;
				if( 1==n2Index) tgt2.onclick = this.toggleListItem;
				if( 2==n2Index ) {
					tgt2.style.marginBottom = '30px';
					tgt2.style.marginLeft = '10px';
					tgt2.style.display = 'none';
				}
			}
		}
	} this.__construct = __construct;

	function toggleListItem() {
		var wrapperObject=window;
		if(wrapperObject && wrapperObject.lastOpened) wrapperObject.lastOpened.style.display = 'none';
		var oContent;
		if( 1==this.nextSibling.nodeType ) oContent=this.nextSibling;
		else oContent=this.nextSibling.nextSibling;
		if( ''==oContent.style.display || 'none'==oContent.style.display ) {
			if( wrapperObject.lastOpened == oContent ) return;
			oContent.style.display = 'block';
			wrapperObject.lastOpened = oContent;
		} else {
			oContent.style.display = 'none';
		}
	};

	this.symbolName = symId;
	this.contId = containerId;
	this.contObj = undefined;
	this.lastOpened = null;
	this.__construct();
}


