﻿

//-----------------------------------------------------------------
//	cls_tag
//-----------------------------------------------------------------
//	Description: 	This class is used in the overviews at run time
//                  to download tag info and display in the gutter.
//-----------------------------------------------------------------

var arrTagDef = new Array();
arrTagDef.push({ type: OBJ_SHAPE_TAG_DEFAULT, imageName: "DefaultTag.png" });
arrTagDef.push({ type: OBJ_SHAPE_TAG_CLEARANCE, imageName: "ClearanceTag.png" });
arrTagDef.push({ type: OBJ_SHAPE_TAG_HOLD, imageName: "HoldTag.png" });
arrTagDef.push({ type: OBJ_SHAPE_TAG_CAUTION, imageName: "CautionTag.png" });
arrTagDef.push({ type: OBJ_SHAPE_TAG_RED, imageName: "RedTag.png" });
arrTagDef.push({ type: OBJ_SHAPE_TAG_SWITCH_ORDER, imageName: "SwitchOrder.png" });

function cls_tag() {
    var me = this;

    this.xHTTP = null;
    this.doc = null;
    this.gutter = null;
    this.blanket = null;
    this.coords = null;

    this.init = function() {
        setTimeout(me.getData, 1000);
        return;
    };

    this.getData = function() {
        me.xHTTP = new oXMLHTTP();
        me.xHTTP.method = DCWebServices2.strGetCurrentTagsByID;
        me.xHTTP.callBack.onComplete = me.oc_getData;
        
        //me.xHTTP.debug = true;
        me.xHTTP.addParameter(p.overview.id);
        me.xHTTP.run();
        return;

    };

    this.oc_getData = function(_doc) {

        if (_doc) {
            me.doc = _doc;
        }
        me.refreshTable();

        //log.writeXMLNode(_doc);
        return;
    };

    this.refreshTable = function() {
        if (!me.doc) { return; } //No doc, that's a problem

        //Make sure gutter node exists
        if (!me.gutter) {
            me.gutter = browser.html.get("gutter");
            if (!me.gutter) { return; } //Can't find it so bail
        }

        if (me.coords == null) {
            me.coords = { x: ((p.canvas.w + p.canvas.x) + 2), y: (p.canvas.y + 2) };
        }

        //Select the tag nodes
        var tags = me.doc.selectNodes("//tag");

        if (tags.length == 0) { return; } //No tags to display


        var sb = new stringBuilder();

        sb.append("<table border='0' cellpadding='2' cellspacing='0' id='gutterTable'>");

        for (var c = 0; c < tags.length; c++) {
            var tagType = parseInt(tags[c].getAttribute("shape"));
            var id = parseInt(tags[c].getAttribute("scadatagid"));

            sb.append("<tr><td id='" + id + "_td' >");
            sb.append("<img id='" + id + "_img' src='" + strIconPath + me.imageName(tagType) + "'/></td></tr>");
        }
        sb.append("</table>");


        me.gutter.innerHTML = sb.toString();
        //log.write(me.gutter.innHTML);

     //   me.gutter.style.left = me.coords.x + "px";
     //   me.gutter.style.top = me.coords.y + "px";
        me.gutter.style.visibility = "visible";

        //log.write("gutter.coords( x:" + me.coords.x + ",y:" + me.coords.y + " )");


        for (var c = 0; c < tags.length; c++) {
            var id = parseInt(tags[c].getAttribute("scadatagid"));

            var n = browser.html.get(id + "_td");
            if (n) {
                n.onmouseover = me.mOver;
                n.onmouseout = me.mOut1;
                n.onclick = me.openTag;
            }

            var n = browser.html.get(id + "_img");
            if (n) {
                n.onmouseover = me.mOver;
                n.onmouseout = me.mOut1;
                n.onclick = me.openTag;
            }

            var n = browser.html.get("gutterTable");
            if (n) {
                n.onmouseout = me.mOut;
            }
        }

        setTimeout(me.getData, 10000);
        return;
    };

    this.openTag = function(e) {
        e = browser.getEvent(e);
        var node = browser.target(e);
        if (node) {
            var tag = me.doc.selectSingleNode("//tag[@scadatagid='" + parseInt(node.id) + "']");
            if (tag) {

                var maid = parseInt(tag.getAttribute("maid"));

                var strTagName;
                var winHeight = 810, winWidth = 295;

                switch (parseInt(tag.getAttribute("shape"))) {
                    case OBJ_SHAPE_TAG_CLEARANCE:
                        strTagName = "Clearance";
                        break;

                    case OBJ_SHAPE_TAG_HOLD:
                        strTagName = "HoldTag";
                        break;

                    case OBJ_SHAPE_TAG_CAUTION:
                        strTagName = "Caution";
                        break;

                    case OBJ_SHAPE_TAG_RED:
                        strTagName = "RedTag";
                        break;

                    case OBJ_SHAPE_TAG_SWITCH_ORDER:
                        strTagName = "SwitchOrderTag";
                        winHeight = 500;
                        winWidth = 345;
                        return;

                    default:
                        return;
                }

                //Build URL
                var strURL = "../../Overviews/Tags/" + strTagName + ".aspx?maid=" + maid;

                var w = browser.open(strURL, strTagName, "height=" + winHeight + "px,width=" + winWidth + "px");
                w.focus();
            }
        }
        return;
    };
    
    this.mOver = function(e) {
        e = browser.getEvent(e);
        var node = browser.target(e);
        if (node) {

            if (node.nodeName.toLowerCase() == "img") {
                node = node.parentNode;
            }
            var tag = me.doc.selectSingleNode("//tag[@scadatagid='" + parseInt(node.id) + "']");
            if (tag) {

                //show blanket
                me.showBlanket();

                var maid = parseInt(tag.getAttribute("maid"));
                for (var c = 0; c < p.arrObjects.length; c++) {
                    var o = p.arrObjects[c];
                    var d = o.div.get();
                    if (d) {
                        if (o.maid == maid) {
                            d.style.zIndex = 30;
                        }
                        else {
                            var d = o.div.get();
                            d.style.zIndex = o.get.int("zIndex", true, 1);
                        }
                    }
                }
                node.style.background = '#dddddd';
                browser.cursor.hand();
            }
        }
    };
    this.mOut1 = function(e) {
        e = browser.getEvent(e);
        var node = browser.target(e);
        if (node) {

            if (node.nodeName.toLowerCase() == "img") {
                node = node.parentNode;
            }
            node.style.background = '#ffffff';
            javascript:browser.cursor.none();
        }
    };

    this.mOut = function(e) {
        //hide blanket
        me.hideBlanket();
    };

    this.imageName = function(shapeTypeID) {
        for (var c = 0; c < arrTagDef.length; c++) {
            if (shapeTypeID == arrTagDef[c].type) {
                return (arrTagDef[c].imageName);
            }
        }
        return (arrTagDef[0].imageName);
    };

    this.showBlanket = function() {

        //get div template
        var div = browser.html.get("blanket");

        //Set stuff
        div.style.height = (p.canvas.h + 4) + "px";
        div.style.width = (p.canvas.w + 4) + "px";
        div.style.left = p.canvas.x + "px";
        div.style.top = p.canvas.y + "px";

        return;
    };

    this.hideBlanket = function() {

        //get div template
        var div = browser.html.get("blanket");

        //Set stuff
        div.style.left = "-10000px";
        div.style.top = "-10000px";

        return;
    };
    
    this.init();
}

//var clsTag = new cls_tag();
