﻿// JavaScript Document


function get(modulename,divid,params,formobj) {
	var getstr = "";
	
	if(!modulename){
		alert("Error in modulename!");
		return;
	}
	
	if(!divid){
		alert("Error in divid!");
		return;
	}

	if(params){
		getstr += params + "&";
	}

	if(formobj){
		getstr+=buildQueryString($(formobj));
	}

	
	url=appgeturl+"go="+escape(modulename)+"&"+getstr;
	var myAjax = new Ajax.Updater(
		{success: divid},
		url,
		{method: 'get', evalScripts:true}
	);
	
}



function buildQueryString(form) {
	var str = "";
	var element, i = 0;
	while ((element = form.elements[i++]) != null) {
		var qc = toQueryComponent(element);
		if (qc != "") str += "&" + qc;
	}
	return str.substring(1);
}

function toQueryComponent(input) {
	if (!input.name || input.disabled)
		return "";

	var n = urlencode(input.name);

	switch (input.type) {
	case "text":
	case "password":
	case "submit":
	case "hidden":
		return n + "=" + urlencode(input.value);
	case "textarea":
		// normalize line breaks as CR LF pairs as per RFC 1866
		var v = input.value.split(/\r\n|\r|\n/).join("\r\n");
		//var v = input.value.replace(/(\r\n)|\r|\n/g, "\r\n");
		
		return n + "=" + urlencode(v);
	case "checkbox":
	case "radio":
		if (!input.checked)
			return "";
		var v = getRealValue(input);
		if (v === null) v = "on";
		return n + "=" + urlencode(v);
	case "select-one":
	case "select-multiple":
		var nvp = [];
		var opt, i = 0;
		while ((opt = input.options[i++]) != null) {
			if (opt.selected) {
				var v = getRealValue(opt);
				if (v === null) v = opt.text;
				// older versions of IE do not support Array.push
				nvp[nvp.length] = n + "=" + urlencode(v);
			}
		}
		return nvp.join("&");
	default:
		// input types reset, button, image, and file not implemented
		return "";
	}
}

function urlencode(str) {
	var v;
	try { v = encodeURIComponent(str); } catch (e) { v = escape(str); }
	return v.replace(/%20/g,"+");
}

function getRealValue(input) {
	var attr = input.getAttributeNode("value");
	return (attr && attr.specified) ? input.getAttribute("value") : null;
}
