/**
 * Correct JavaScript inheritance. Usage:
 * CustomObj.Inherits(BaseObj);
 * function CustomObj(myCtorParam) {
 *   this.Inherits(BaseObj, myCtorParam);
 * }
 * And don't forget to handler 'undefined' params in ctors.
 * UPDATE: We cannot put Inherits in Object because prototype and scriptaculous
 * will fail. So Inherit must be overriden for each extending class individually
 */
Function.prototype.Inherits = function(parent)
{
	this.prototype = new parent();
	this.prototype.constructor = this;
}

function selectTechnology(context) {
	if (context.className == "selected_technology") {
		context.className = "technology"
	}
	else {
		context.className = "selected_technology"
	}
}

function addTechnology(obj) {
	var input = document.getElementById("suggestTechnologies");
	var tech = document.getElementById("tech_" + obj);
	var tech_value = tech.name.replace("tech_", "");
	var existingvalues = input.value.split(",");
	var testadd = true;

	for (var i = 0; i < existingvalues.length; i++) {
		if (existingvalues[i] == tech_value || existingvalues[i] == " " + tech_value) {
			testadd = false;
			existingvalues.splice(i,1);
		}
	}

	if (testadd == true) {
		if (input.value == "") {
			input.value = tech_value;
		}
		else {
			input.value += ", " + tech_value;
		}
	}
	else {
		input.value = "";
		for (var i = 0; i < existingvalues.length; i++) {
			if (input.value == "") {
				input.value = existingvalues[i];
			}
			else {
				input.value += "," + existingvalues[i];
			}
		}
	}
}


function getAtlasGeocoderURL(address, postal_code, country_name, engine) {
	//TODO: Move this hard-coded URL to settings.js.tmpl
	url=gSettings.xmlrpc_geocoding_endpoint;
	url+="?address=" + address;
	url+="&postal_code=" + postal_code;
	url+="&country=" + country_name;
	url+="&engine=" + engine;
	return url;
}

function ajax_get(options) {
    var getXmlHttpRequest = function() {
        if(window.GXmlHttp)
            return GXmlHttp.create();
        if(window.XMLHttpRequest)
            return new XMLHttpRequest();
        if(window.ActiveXObject) {
            /*@cc_on @*/
            /*@if(@_jscript_version >=5)
                try{ return new ActiveXObject("Msxml2.XMLHTTP"); }
                catch(e){ return new ActiveXObject("Microsoft.XMLHTTP"); }
            @end @*/
        }
    }
    
    var request = getXmlHttpRequest();
    request.onreadystatechange = function() {
        if(request.readyState != 4)
            return;
        if(request.status == 200 && typeof(options.onSuccess)=="function") {
            options.onSuccess(request);
        }
        else if(typeof(options.onError)=="function") {
            options.onError(request);
        }
    };
    request.open("GET", options.url, true);
    request.send(null);
}