function do_link(section, params){
	
	var parts = section.split(".");
	var module = parts[0];
	var page = parts[1];	
	var send_to_file;		
	var array_params = Array();
	var i = 0;
	var j = 0;
	var send_params = "";
	var param = Array();
	array_params = params.split("&");	
	// Get module & page
	var res_file = section.split(".");	
	var send_to_file = res_file[1];
	var force_files = SUBDOMAINS_FORCE_FILES_JS.split(",");
	var base_path = PATH + "/";
	
	// Cross subdomain links
	if (js_in_array(section, force_files)) {
		send_to_file = res_file[0] + "-" + res_file[1];
	}
	// Normal links
	else {
		send_to_file = (send_to_file == "index") ? "" : 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 += "/";
		}
	}
				
	return ((send_params != "") ? (base_path + send_to_file + "?" + send_params) : (base_path + send_to_file));
}

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!");
	}
	else {
	    if (window.focus) {win.focus()}
	}
	
}

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, simpleMatch){

	var the_hay = the_haystack.toString();
	
	if(!the_hay || !the_needle || (the_hay == '')){
		return false;
	}
	for(var i in the_haystack){
		var the_hay = the_haystack[i];
		if(simpleMatch){
			the_hay = the_hay.toString().toLowerCase();
			the_needle = the_needle.toString().toLowerCase();
		}
		if(the_hay == the_needle){
			return true;
		}
	}
	return false;
}


// 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);
	
}
