function createRequest() {
    var request;
    try {
	request = new XMLHttpRequest();
    } catch (trymicrosoft) {
	try {
	    request = new ActiveXObject('Msxml2.XMLHTTP');
	} catch (othermicrosoft) {
	    try {
		request = new ActiveXObject('Microsoft.XMLHTTP');
	    } catch (failed) {
		request = false;
	    }
	}
    }
    if (!request)
	alert('failed to create XMLHttpRequest');
    return request;
}

function getFormValues(fobj) {
    var str = "";
    var ft = "";
    var fv = "";
    var fn = "";
    var els = "";
    for(var i = 0; i < fobj.elements.length; i++) {
	els = fobj.elements[i];
	ft = els.title;
	fv = els.value;
	fn = els.name;
	switch(els.type) {
	case "text":
	case "button":
	case "hidden":
	case "password":
	case "textarea":
	    str += fn + "=" + encodeURIComponent(fv) + "&";
	    break; 

	case "checkbox":
	case "radio":
	    if(els.checked) str += fn + "=" + encodeURIComponent(fv) + "&";
	    break;	

	case "select-one":
	    str += fn + "=" +
		encodeURIComponent(els.options[els.selectedIndex].value) + "&";
	    break;

	case "select-multiple":
	    for (j = 0; j < els.length; j++) {
		var opt = els.options[j];
		if (opt.selected)
		    str += fn + "=" + encodeURIComponent(opt.value) + "&";
	    }
	    break;
	}
    }
    str = str.substr(0,(str.length - 1));
    return str;
}

function submitSimple (url, conf, feedbackPlaceId) {
    if (!conf || confirm(conf)) {
	if (feedbackPlaceId) {
	    var place = document.getElementById(feedbackPlaceId);
	    place.innerHTML =
		'<img src=\"common/ajax-wait-small.gif\" alt=\"\" style=\"vertical-align:middle;width:16px;height:16px\"/>';
	};
	var myreq = createRequest();
	myreq.open('GET', url, true);
	myreq.onreadystatechange = function () {pageUpdate(myreq)};
	myreq.send(null);
    }
}

function submitForm (url, formId, feedbackPlaceId, conf, action) {
    if (!conf || confirm(conf)) {
	if (feedbackPlaceId) {
	    var place = document.getElementById(feedbackPlaceId);
	    place.innerHTML =
		'<img src=\"common/ajax-wait-small.gif\" alt=\"\" style=\"vertical-align:middle;width:16px;height:16px\"/>';
	};
	var myreq = createRequest();
	var parameters = getFormValues(document.getElementById(formId));
	if (action) {
	    parameters += '&action=' + action;
	};
	myreq.open('POST', url, true);
	myreq.onreadystatechange =
	    function () {
	    pageUpdate(myreq);
	};
	myreq.setRequestHeader
	    ('Content-type', 'application/x-www-form-urlencoded');
	myreq.setRequestHeader('Content-length', parameters.length);
	myreq.setRequestHeader('Connection', 'close');
	myreq.send(parameters);
    }
}

function pageUpdate(myreq) {
  if (myreq.readyState == 4 && myreq.status == 200) {
    var resp = eval('(' + myreq.responseText + ')');
    for (i =  (resp.length) - 1; i >= 0; i--) {
	v = resp[i];
        if (v[1] == 9) {
	    document.location = v[0];
	}
	else {
	    elem = document.getElementById(v[0]);
	    if (elem) {
		switch (v[1]) {
		case 0: elem.innerHTML = v[2]; break;
		case 1: elem.value = v[2]; break;
		case 2: elem.className = v[2]; break;
		case 3: elem.style.display = v[2]; break;
		case 4: elem.style.visibility = v[2]; break;
		case 5: elem.style.backgroundColor = v[2]; break;
		case 6: elem.checked = v[2]; break;
		case 7: elem.selectedIndex = v[2]; break;
		case 8: elem.innerHTML += v[2]; break;
		case 10: now = new Date(); elem.src = v[2] + '?' + now.getTime();  break;
		case 11: var newform = document.createElement("form");
		    newform.id = v[2];
		    elem.insertBefore(newform, elem.firstChild);
		    break;
		case 12: make_wyzz(v[0]); break;
		}
	    }
	}
    }
  }
}

var checked=0;
function invertSelection(formid) {
    var form = document.getElementById(formid);
    if (form) {
	for (var i=0;i<form.length;i++) {
	    if (form[i].type=='checkbox') {
		form[i].checked=!form[i].checked;
	    }
	}
    }
}

function checkEnter(e){ //e is event object passed from function invocation
    var characterCode; //literal character code will be stored in this variable

    if(e && e.which){ //if which property of event object is supported (NN4)
	e = e
	    characterCode = e.which //character code is contained in NN4's which property
	    }
    else{
	e = event
	    characterCode = e.keyCode //character code is contained in IE's keyCode property
	    }
    
    if(characterCode == 13){ //if generated character code is equal to ascii 13 (if enter key)
	return true
	    }
    else{
	return false
	    }
}
