﻿// JScript File for map projection trasformation
// Load accessory file

// definition of projection varaibles used in transformations

var GOOGLE_PRJ      = new OpenLayers.Projection("EPSG:900913");
var WGS84_Z37_PRJ   = new OpenLayers.Projection("EPSG:32637");
var WGS84           = new OpenLayers.Projection("EPSG:4326");

//////////

///////////     Transformation methods  /////////////////////////

function Transform(point, srcPRJ, destPRJ)
    {
        var result_point = OpenLayers.Projection.transform(point, srcPRJ , destPRJ);
        return result_point;
    }

function Transform_From_900913(point_900913)
    {
        var result_point = OpenLayers.Projection.transform(point_900913, GOOGLE_PRJ , WGS84_Z37_PRJ);
        return result_point;
    }

function Transform_To_900913(point_WGS84)
    {
        var result_point = OpenLayers.Projection.transform(point_WGS84, WGS84_Z37_PRJ, GOOGLE_PRJ);
        return result_point;
    }

function TransformPoints(srcPointsArr, srcPrj, destPrj)
    {
        var resultPoints = [];
        
        var point, pointX, pointY, resultPoint;
        //var points = srcPointsArr.split(pointsSplitter);
        for(var i = 0 ; i < srcPointsArr.length ; i++)
        {
            pointX = parseFloat(srcPointsArr[i].split(',')[0]);
            pointY = parseFloat(srcPointsArr[i].split(',')[1]);
            
            point = new OpenLayers.Geometry.Point(pointX,pointY);
            
            resultPoint = Transform(point, srcPrj, destPrj);
            
            resultPoints.push(resultPoint.x + "," + resultPoint.y);
        }
        
        return resultPoints;
    }

function TransformExtent(srcExtentArr, srcPrj, destPrj)
    {
        var resultPoint, point, resultExtent, xmin, xmax, ymin, ymax ;

        xmin = parseFloat(srcExtentArr.split(',')[0]);
        ymin = parseFloat(srcExtentArr.split(',')[1]);
        point = new OpenLayers.Geometry.Point(xmin,ymin);
        resultPoint = Transform(point, srcPrj, destPrj);
        xmin = resultPoint.x;
        ymin = resultPoint.y;
        
        xmax = parseFloat(srcExtentArr.split(',')[2]);
        ymax = parseFloat(srcExtentArr.split(',')[3]);
        point = new OpenLayers.Geometry.Point(xmax,ymax);
        resultPoint = Transform(point, srcPrj, destPrj);
        xmax = resultPoint.x;
        ymax = resultPoint.y;
        
        resultExtent = xmin + "," + ymin + "," + xmax + "," + ymax;
        
        return resultExtent;
    }
///////////////////////////////////////////////////////////

