IE = document.all && !window.opera;
eniMap = window.opener.eniMap;

function initializePage() {
    pViewport = document.getElementById("printViewport");
    pViewport.innerHTML = eniMap.viewport.innerHTML;
    
    //Center Backdrop and Layers
    for(i=0;i<pViewport.childNodes.length;i++) {
        xTop(pViewport.childNodes[i], xTop(pViewport.childNodes[i]) + (xHeight(pViewport) - xHeight(eniMap.viewport))/2 );
        xLeft(pViewport.childNodes[i], xLeft(pViewport.childNodes[i]) + (xWidth(pViewport) - xWidth(eniMap.viewport))/2 );
    }
    
    //Append Callout (Workaround for IE)
    calloutDiv = eniMap.getDefaultCalloutLayer().getDomElement()
    domElement = document.createElement("div");
    domElement.innerHTML = calloutDiv.innerHTML;
    domElement.style.position = "absolute";
    xZIndex(domElement, xZIndex(calloutDiv));
    xLeft(domElement, xLeft(calloutDiv));
    xTop(domElement, xTop(calloutDiv));
    document.getElementById("printContainer").appendChild(domElement);
    
    //Routes
    if(eniMap.getDefaultRouteLayer().geometry) {
        routeDiv = document.getElementById(eniMap.getDefaultRouteLayer().getRouteDivId())
        routeDiv.innerHTML = "";
        printRoute();
    }
    
    //Places (All browsers except IE)
    if(!IE) {
        placeDiv = document.getElementById(eniMap.getDefaultPlaceLayer().getPlaceDivId())
        placeDiv.innerHTML = "";
        printPlace();
    }    
    
    //TopLayer
    topLayer = document.getElementById(eniMap.getDefaultTopLayer().getDomElement().id);
    scalebar = document.getElementById("scalebarDiv");
    xTop(topLayer,xHeight(pViewport) - xHeight(eniMap.viewport));
    xLeft(topLayer, 0);
    xLeft(scalebar, xWidth(pViewport) - xWidth(scalebar) - 10);
}

function printPlace() {
    var arrX = new Array();
    var arrY = new Array();        
    var j = 0;
    placeLayer = eniMap.getDefaultPlaceLayer();
    xSize = eniMap.bdSizeX;
    ySize = eniMap.bdSizeY; 
    strippedRoute = placeLayer.strippedRoute;
    centerPx = eniMap.getCurrentLocationPx();        
    
    if(strippedRoute.length > 0) {
        for(i=0;i<strippedRoute.length;i++) {
            if(strippedRoute[i] == "*") {
                paint(arrX,arrY,placeLayer.getPlaceDivId());
                arrX = new Array();
                arrY = new Array();
            } else {
                pxCoord = eniMap.getPxCoord(strippedRoute[i], eniMap.tileInfo);
                x = Math.round(pxCoord.x);
                y = Math.round(pxCoord.y);
                if(x < centerPx.x+xSize && x > centerPx.x-xSize && y < centerPx.y+ySize && y > centerPx.y-ySize) {
                    arrX[j] = (placeLayer.width/2) + x - 2;
                    arrY[j] = (placeLayer.height/2) - y - 2;
                    j++;
                }
            }
        }
    } 
}

function printRoute() {
    var arrX = new Array();
    var arrY = new Array(); 
  	 var j = 0;
    routeLayer = eniMap.getDefaultRouteLayer();
    strippedRoute = routeLayer.strippedRoute;
    xSize = eniMap.bdSizeX;
    ySize = eniMap.bdSizeY; 
    centerPx = eniMap.getCurrentLocationPx();
    
    if(strippedRoute.length > 0) {
        for(i=0;i<strippedRoute.length;i++) {
            pxCoord = eniMap.getPxCoord(strippedRoute[i], eniMap.tileInfo);
            x = Math.round(pxCoord.x);
            y = Math.round(pxCoord.y);
            if(x < centerPx.x+xSize && x > centerPx.x-xSize && y < centerPx.y+ySize && y > centerPx.y-ySize) {
                arrX[j] = (routeLayer.width/2) + x - 2;
                arrY[j] = (routeLayer.height/2) - y - 2;
                j++;
            }
        }    
        paint(arrX,arrY,routeLayer.getRouteDivId());
    }
}

function paint(arrX,arrY,divID) {
    if(IE) { //IE Only
        var points = "";
        var routeDiv = document.getElementById(divID);
        for(m=1;m<arrX.length;m++) {
            points += arrX[m]+","+arrY[m]+",";
        }
        routeDiv.innerHTML += "<v:shape style='behavior: url(#default#VML); position: absolute; width: 1px; height: 1px' "+ 
            "unselectable='on' coordsize = '1,1' coordorigin='0,0'  filled = 'false' strokecolor = 'blue' strokeweight = '3.75pt' "+
            "path='m"+arrX[0]+","+arrY[0]+" l"+points+" e'>"+
            "<v:stroke style='behavior: url(#default#VML)' opacity = '29491f'></v:stroke>"+
            "</v:shape>";            
    } else {
        var rObj = new jsGraphics(divID);
        rObj.setPrintable(true);
        rObj.setStroke(4);
        rObj.setColor("#00F");   
        rObj.drawPolyline(arrX, arrY);
        rObj.paint();
    }
}