function do_link(section, params){
	
	var parts = section.split(".");
	var module = parts[0];
	var page = parts[1];
	
	var send_to_file, base_path;
	
	var array_params = Array();
	var i = 0;
	var j = 0;
	var send_params = "";
	var param = Array();
	array_params = params.split("&");
	
	var params_concat = Array();
		
	var params_concat_return;
	
	if (URL_REWRITE == "on") {
	
		var force_files = SUBDOMAINS_FORCE_FILES_JS.split(",");
		if (SUBDOMAINS_STATUS == "on" && !js_in_array(section, force_files)) {
			var res_file = section.split(".");
			send_to_file = res_file[1];
			if (res_file[0] == "site") {
				res_file[0] = "www";
			}
			base_path = "http://" + res_file[0] + "." + DOMAIN_BASE;
		}
		else {
			send_to_file = section.replace(".", "-");
			base_path = PATH;
		}
	
		while (i < array_params.length){
			if (array_params[i] != "") {
				param = array_params[i].split("=");
				send_params = send_params + param[0] + "-" + param[1];
				if(i < (array_params.length - 1)) {
					send_params = send_params + "~";
				}
			}
			i ++;
		}
	
		if (send_params != "") {
			
			var return_pattern = new RegExp("_RETURN", 'g');
			var found_return = return_pattern.test(send_params);
			
			
			if (found_return) {
				
				var tmp_pr1 = send_params.split("~");
				
				while (j < tmp_pr1.length){
					
					var found_return_var = return_pattern.test(tmp_pr1[j]);
					
					if (found_return_var) {
						tmp_params_concat_return = tmp_pr1[j].split("-");
						params_concat_return = tmp_params_concat_return.join("=");
						
					}
					else {
						params_concat[j] = tmp_pr1[j];
					}
					
					j ++;
					
				}
				send_params = params_concat.join("~") + ".html?" + params_concat_return;
				
				the_link = base_path + "/" + send_to_file + "~" + send_params;
			}
			else {
				the_link = base_path + "/" + send_to_file + "~" + send_params + ".html";
			}
						
		}
		else {
			the_link = base_path + "/" + send_to_file + ".html";
		}
		
	}
	else if (URL_REWRITE == "on.v2") {
		
		// Get module & page
		var res_file = section.split(".");
		send_to_file = res_file[1];
						
		var force_files = SUBDOMAINS_FORCE_FILES_JS.split(",");
		if (SUBDOMAINS_STATUS == "on" && !js_in_array(section, force_files)) {
			// Use www instead of site
			if (res_file[0] == "site") {
				res_file[0] = "www";
			}
			base_path = "http://" + res_file[0] + "." + DOMAIN_BASE;
			if (send_to_file == "index") {
				send_to_file = "";
			}
		}
		else {
			// Use nothing instead of site
			if (res_file[0] == "site") {
				res_file[0] = "";
			}
			//base_path = "http://" + DOMAIN_BASE;
			base_path = PATH;
			if (send_to_file == "index" && res_file[0] == "") {
				send_to_file = "";
			}
		}
		
		var rewrite_vars = new Array();
		var skip_vars = new Array();
		var do_rewrite_mapping = 0;
		
		// Extract the rewrite mapping
		var rewrite_mapping = URL_REWRITE_MAPPING_JS.split("|");
		
		i = 0;
		while (i < rewrite_mapping.length){
			var tmp_mapping = rewrite_mapping[i].split(",");

			// If the current page has mapping		
			if (send_to_file == tmp_mapping[0]) {
				j = 1;
				
				// Extract variables to mapp
				while (j < tmp_mapping.length){
					rewrite_vars[j] = tmp_mapping[j];
					j ++;
				}
				
				// Do mapping is on
				do_rewrite_mapping = 1;
			}
			
			i ++;
		}
						
		i = 0;
		
		// Check url params
		while (i < array_params.length){
			if (array_params[i] != "") {
				
				// Get param data
				param = array_params[i].split("=");
				
				// If do mapping is on
				if (do_rewrite_mapping == 1) {
					j = 1;
					var do_skip = 0;
					
					// Check if we should rewrite this param
					while (j < rewrite_vars.length) {
						if (rewrite_vars[j] == param[0]) {
							
							// Send param value to another list
							skip_vars[j] = param[1];
							do_skip = 1;
						}
						j ++;
					}
					
					// If no skipping add param to url vars list
					if (!do_skip) {
						send_params = send_params + param[0] + "=" + param[1];
						if(i < (array_params.length - 1)) {
							send_params = send_params + "&";
						}
					}
				}
				else {
					// Add param to url vars list
					send_params = send_params + param[0] + "=" + param[1];
					if(i < (array_params.length - 1)) {
						send_params = send_params + "&";
					}
				}
			}
			i ++;
		}
						
		
		// If do mapping is on
		if (do_rewrite_mapping == 1) {
			i = 0;
			
			// Add skipped params values to the name of the page
			while (i < skip_vars.length) {
				if (skip_vars[i]) {
					send_to_file += "/" + skip_vars[i];
				}
				i ++;
			}
		}
		else {
			if (send_to_file != "") {
				send_to_file += "/";
			}
		}
	
		if (res_file[0] != "") {
			base_path += "/" + res_file[0] + "-";
		}
		else {
			base_path += "/";
		}
		
		// Add params to link
		if (send_params != "") {
			the_link = base_path + send_to_file + "?" + send_params;
		}
		else {
			the_link = base_path + send_to_file;
		}
		
	}
	else {
		the_link = PATH_INDEX + "?_init=" + module + "." + page + "&" + params;
	}
	
	return the_link;
}

function form_send_params(section, params, mode){
	
	if (mode == "rs") {
		
		var array_params = Array();
		var i = 0;
		var send_params = "";
		var param = Array();
		array_params = params.split("&");
		
		while (i < array_params.length){
			if (array_params[i] != '') {
				param = array_params[i].split("=");
				send_params = send_params + "<INPUT TYPE=\"HIDDEN\" NAME=\"" + param[0] + "\" VALUE=\"" + param[1] + "\">";
			}
			i ++;
		}
		
		if (send_params) {		
			document.open();
			document.write("<HTML><BODY><FORM METHOD=\"POST\" NAME=\"_form_send_params_\" ACTION=\"" + do_link(section, "") + "\">");
			document.write(send_params);
			// alert(send_params);
			document.write("</FORM>");
			document.write("<SCR");
			document.write("IPT LANGUAGE=\"JavaScript\">document._form_send_params_.submit();</SCR");
			document.write("IPT></BODY></HTML>");			
			document.close();		
		}
	}
	else {
		document.location = do_link(section, params);
	}
	
	return false;
}

function form_do_submit(form_name, button_name){
	
	if (!form_is_submitted) {
		eval("document." + form_name + "." + button_name + ".disabled=true");
		eval("document." + form_name + ".submit()");
		eval("submitted_form = '" + form_name + "'");
		eval("submission_button = '" + button_name + "'");
		form_is_submitted = 1;
	}
	
	return false;
}

function form_do_reset(form_name, button_name){
	
	if (submitted_form != "" && submission_button != "") {
		eval("document." + form_name + "." + button_name + ".disabled=false");
	}
			
}

function form_set_select(sel_name, form_name, sel_index){
	
	
	if ((form_name != "") && (typeof eval("document." + form_name + "." + sel_name) == "object")) {
	
		sel_length = eval("document." + form_name + "." + sel_name + ".length");
		
		for (optionCounter = 0; optionCounter < sel_length; optionCounter++) {
			
			if (eval("document." + form_name + "." + sel_name + ".options[optionCounter].value == '" + sel_index + "'")) {
				
				eval("document." + form_name + "." + sel_name + ".selectedIndex = optionCounter");
				
			}
			
		}
	
	}
	
}

function form_set_checked(check_name, form_name, checked_mode){
	
	if ((form_name != "") && (typeof eval("document." + form_name + "." + check_name) == "object")) {
	
		if (checked_mode != "" && checked_mode != 0 && checked_mode != "off") {
			eval("document." + form_name + "." + check_name + ".checked = true");
		}
	
	}
	
}

function form_set_radio(radio_name, form_name, selected_value){
    
	 if ((form_name != "") && (typeof eval("document." + form_name + "." + radio_name) == "object")) {
	 	
	 	eval("var rad = document." + form_name + "." + radio_name);

	 	for(i=0; i<rad.length; i++){
		
	 		if(rad[i].value == selected_value){
				rad[i].checked = true;
				return true;
			}
			
		}
		
		return false;
	}

}

function form_set_inp(inp_name, form_name, inp_value){
	
	if ((form_name != "") && (typeof eval("document." + form_name + "." + inp_name) == "object")) {
		eval("document." + form_name + "." + inp_name + ".value = \"" + inp_value + "\"");
	}
	
}

function form_check_all(c) {
	
	var f = c.form;
	var ck = c.checked;
	
	for (i = 0; i < f.elements.length; i++) {
		if ((f.elements[i] != c) && (f.elements[i].type == "checkbox")) {
			f.elements[i].checked = ck;
		}
	}
	
}

function win_open(mypage, myname, w, h, win_position, win_scroll, win_resizable, win_toolbar, win_location, win_status, win_menubar){
	
	var win = null;
	var LeftPosition, TopPosition;
	
		
	if (w) {
	}
	else {
		w = 600;
	}
	
	if (h) {
	}
	else {
		h = 600;
	}
	
	if (win_position == "topright") {
		LeftPosition = (screen.width) ? (screen.width - w - 12) : 0;
		TopPosition = 20;
	}
	else if (win_position == "center") {
		LeftPosition = (screen.width) ? ((screen.width-w) / 2) : 0;
		TopPosition = (screen.height) ? ((screen.height-h) / 2) : 0;
	}
	
		
	settings = 'height = ' + h + ', width = ' + w + ', top = ' + TopPosition + ', left = ' + LeftPosition;
	settings += (win_scroll == "yes") ? ", scrollbars=yes" : ", scrollbars=no"; 
	settings += (win_resizable == "yes") ? ", resizable=yes" : ", resizable=no";
	settings += (win_toolbar == "yes") ? ", toolbar=yes" : ", toolbar=no";
	settings += (win_location == "yes") ? ", location=yes" : ", location=no";
	settings += (win_status == "yes") ? ", status=yes" : ", status=no";
	settings += (win_menubar == "yes") ? ", menubar=yes" : ", menubar=no"; 
	
	win = window.open(mypage, myname, settings);
	if (win == null) {
		alert("Your popup blocker stopped an window from opening\nPlease disable your popup blocker if you wish to see window content!");
	}
	
}

var EL_VISIB = new Array();
function dom_toggle_element(el, visible){

	visible = (visible != false && visible != true) ? (EL_VISIB[el] ? false : true) : visible;
	var el_handle = dom_get_element(el);
	
	if (el_handle) {
		if (!visible) {
			el_handle.style.display = 'none';
		}
		else if (visible) {
			el_handle.style.display = '';
		}
		
		EL_VISIB[el] = visible;
	}
}

function dom_get_element(id){
        var obj;

        if (document.all) {
                eval('obj = document.all("' + id + '")');
        }
        else if (document.layers) {                
                eval('obj = document.layers["' + id + '"]');
        }
        else if (document.getElementById) {        
                eval('obj = document.getElementById("' + id + '")');
        }
        
        return obj;
}


function getObjByName(name,doc) {
	var o = 0;
  	if(!doc) {
  		doc = document;
  	}
  	if(doc[name]) {
  		o=doc[name];
  	}
  	if(document.all && doc.all[name]) {
  		o=doc.all[name];
  	}
  	if(o) {
    		if(!o.getElementsByTagName) {
    			o.getElementsByTagName = getElementsArray;
    		}
    		return o;
  	}
  	if(document.layers) {
    		for(var i=0; i < doc.layers.length; i++){
      			var lyrdoc = doc.layers[i].document;
      			if(lyrdoc[name]) {
      				return lyrdoc[name];
      			}
      			if(lyrdoc.layers.length > 0) {
        				var o = getObjByName(name,lyrdoc);
        				if(o) {
        					return o;
        				}
      			}
    		}
  	}
  	return 0;
}


function textCounter(field, cntfield, maxlimit) {
	var obj_field = getObjByName(field);
	var obj_cntfield = getObjByName(cntfield);
	if (obj_field.value.length > maxlimit){
        	obj_field.value = obj_field.value.substring(0, maxlimit);
	}
   	else {
       		obj_cntfield.value = maxlimit - obj_field.value.length;
   	}
}


function print_array(arr, lvl) {

	lvl = (lvl > 0) ? lvl : 1;
	var level = lvl;
	
	var tab = "\t";
	if (level > 1) {
		for (k=1; k < level-1; k++) {
			tab += "\t";
		}
		
		var buff = "Array\n" + tab + "(\n";
		tab += "\t";
	}
	else {
		var buff = "Array\n(\n";
	}
	
	var i = 0;
	for (var i in arr) {
		if (typeof(arr[i]) == "object") {
			buff += tab + "[" + i + "]" + " => " + print_array(arr[i], level + 1) + tab + ")\n";
		}
		else {
			buff += tab + "[" + i + "]" + " => " + arr[i] + tab + "\n";
		}
	}
	
	if (level > 1) {
		return buff;
	}
	else {
		alert(buff + ")\n");
	}
}


function js_in_array(the_needle, the_haystack) {

	var the_hay = the_haystack.toString();
	if(the_hay == '') {
		return false;
	}
	var the_pattern = new RegExp(the_needle, 'g');
	var matched = the_pattern.test(the_haystack);
	return matched;
}


// REMOTE REQUEST FUNCTIONS
var http_request = false;
var http_remote_result = "";

function remote_data_request(url, parameters, callback_function) {
	
	http_request = false;
	if (window.XMLHttpRequest) { // Mozilla, Safari,...
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) {
			http_request.overrideMimeType("text/xml");
		}
	}
	else if (window.ActiveXObject) { // IE
		try {
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		} 
		catch (e) {
			try {
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
			} 
			catch (e) {}
		}
	}
	if (!http_request) {
		// alert("Cannot create XMLHTTP instance");
		return false;
	}
	
	http_request.onreadystatechange = function(){
		if (http_request.readyState == 4) {
			// alert(http_request.status);
			if (http_request.status == 200) {
				http_remote_result = http_request.responseText;
				eval(http_remote_result);							
				eval(callback_function);		
				
			} 
			else {
				//alert("There was a problem with the request.");
			}
		}
	};
	http_request.open("POST", url, true);
	http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	http_request.setRequestHeader("Content-length", parameters.length);
	http_request.setRequestHeader("Connection", "close");
	http_request.send(parameters);
	
}