function openwin (url,w,h,x,y,name) {
    a = arguments;
    url = a[0] ? a[0] : "about:blank";
    w = a[1] ? a[1] : 300;
    h = a[2] ? a[2] : 200;
    x = a[3] ? a[3] : screen.width/2 - w/2;
    y = a[4] ? a[4] : screen.height/2 - h/2;
    popwin = window.open (url,name,"width="+w+",height="+h+",toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=yes,fullscreen=no");
    if (popwin) {
    	popwin.resizeTo (w,h);
    	popwin.moveTo (x,y);
    	popwin.focus();
    }
    setTimeout ("popwin.focus()",500);
}

/* XML request functions */
var xmlReq = null;

function XMLsubmit(form,handler) {
	var str = getFormValues (form);
	if (form.method == 'get' || form.method == 'GET') {
		url = form.action+'?'+str;
		str = null;
	} else {
		url = form.action;
	}
	xmlReq = loadXMLDoc (form.method,url,str,handler);
	if (!xmlReq) return false;
}

function loadXMLDoc(method,url,body,handler) {
	var req = false;
    // branch for native 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) {
		var handlerFunction = getReadyStateHandler(req, handler);
  		req.onreadystatechange = handlerFunction;
		if (method == 'post' || method == 'POST') {
			req.open( "POST", url, true );
			req.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
			req.send(body);
		} else {
			req.open("GET", url, true);
			req.send(null);
		}
		return true;
	} else {
		return false
	}
}

function getReadyStateHandler(req, responseXmlHandler) {
	// Return an anonymous function that listens to the 
	// XMLHttpRequest instance
	return function () {
		// If the request's status is "complete"
		if (req.readyState == 4) {
			// Check that a successful server response was received
			if (req.status == 200 || req.status == 0) {
				responseXmlHandler(req.responseXML);
			} else {
				// An HTTP problem has occurred
				alert("HTTP error: "+req.status);
			}
		}
	}
}


function getFormValues (fobj) {
   var str = "";
   var valueArr = null;
   var val = "";
   var cmd = "";

   for(var i = 0;i < fobj.elements.length;i++) {
       switch(fobj.elements[i].type) {
           case "hidden":
           case "text":
           case "textarea":
                str += fobj.elements[i].name + "=" + encodeURIComponent (fobj.elements[i].value) + "&";
                break;
           case "select-one":
                str += fobj.elements[i].name + "=" + encodeURIComponent (fobj.elements[i].options[fobj.elements[i].selectedIndex].value) + "&";
                break;
       }

   }
   str = str.substr(0,(str.length - 1));
   return str;
}
