function Transformer(proxy,baseurl,processor){
	this.baseurl = baseurl;
	this.processor = processor;
	this.proxy = proxy;
	}
Transformer.prototype.convertCRS = function (cra) {
	var newCRS = "urn:ogc:def:crs:";
	var crsa = cra.replace("EPSG","EPSG:6.0");
	var crsb = crsa.replace("CRS:","OGC:1.3:CRS");
	var crsc = crsb.replace("AUTO2:","OGC:1.3:AUTO");
	var crsd = crsc.replace("AUTO42001","AUTO42001:99:8888");
	var crse = crsd.replace("AUTO42002","AUTO42002:99:8888");
	var crsf = crse.replace("AUTO42003","AUTO42003:99:8888");
	var crsg = crsf.replace("AUTO42004","AUTO42004:99:8888");
	var crsh = crsg.replace("AUTO42005","AUTO42005:99");
	var crsi = crsh.replace("MicroImages","MicroImages:1.0");
	newCRS += crsi;
	return newCRS;
	}
Transformer.prototype.transformPoint = function(src,dest,pt){
	src = this.convertCRS(src);
	dest = this.convertCRS(dest);
	xmldata = "<gml:Point><gml:pos>"
	xmldata += pt.lon+" "+pt.lat+"</gml:pos>";
	xmldata += "</gml:Point>";
	this.doTransform (src,dest,xmldata);
	}
Transformer.prototype.doTransform = function (src,dest,xmldata) {
	var fullurl = this.proxy+"url="+escape(this.baseurl+"service=WCTS&request=Transform&sourceCRS="+src+"&targetCRS="+dest+"&InputData="+escape(xmldata));
 	$.get(fullurl,function(data){ ProcessResult(data);},"xml");
	}


function ProcessResult (xmlDoc) {
	var pos = [];
	var regex_sc1 = /<gml:pos>(.)+<\/gml:pos>/g; /// simplistic grab of pts
	var m = xmlDoc.match(regex_sc1);
	var p = [];
	if(m[0] && typeof m[0] == "string"){
		var tend = m[0].length-10;
		var mid = m[0].substring(9,tend);
		p = mid.split(' ');
		}
	if(p.length == 2){
		var loc = new OpenLayers.LonLat(parseFloat(p[0]),parseFloat(p[1]));
		var bounds = map.getMaxExtent();
		if(bounds.containsLonLat(loc)){ 
			var zoom = map.getZoom();	
			if(mymc.zoomTo){
				var width;
				if(activeLayer.units != "degrees"){
					width = bounds.getWidth();
					}
				else {
					var mid = (bounds.top+bounds.bottom)/2;
					var ml = new OpenLayers.LonLat(bounds.left,mid);
					width = OpenLayers.Util.distVincenty(bounds.right,mid);
					}
	 
				var t = width/40072000;
				var zoomchange = Math.log(t)/Math.log(2);
				zoom = targetZoom + parseInt(zoomchange);
				}
			map.setCenter(loc, zoom);
			}
		else {
			alert("Etsittyä paikkaa ei löydy tai se sijaitsee kartta-alueen ulkopuolella.");
			}
		}
	
	else {
		alert("Etsinnässä tapahtui virhe\n Hakupaikan prosessointi TNTserverin kautta ei onnistunut");
		}
	}
 	

