﻿// IC Window

var ua=navigator.userAgent.toLowerCase();
var Browser=new Object();
Browser.isMozilla=(typeof document.implementation!='undefined')&&(typeof document.implementation.createDocument!='undefined')&&(typeof HTMLDocument!='undefined');
Browser.isIE=(window.ActiveXObject?true:false)&&(ua.indexOf("msie 7.0")==-1);
Browser.isIE7=(ua.indexOf("msie 7.0")!=-1);
Browser.isFirefox=(ua.indexOf("firefox")!=-1);
Browser.isSafari=(ua.indexOf("Browser.isSafari")!=-1);
Browser.isOpera=(typeof window.opera!='undefined');

function GetWS() {
    var ws = { scrollTop:0, scrollLeft:0, scrollWidth: 0, scrollHeight:0, clientWidth:0, clientHeight:0 };
    var scrollLeft = (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft);
    var scrollTop = (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop);
    var scrollWidth = (document.body.scrollWidth ? document.body.scrollWidth : document.documentElement.scrollWidth);
    var scrollHeight = (document.body.scrollHeight ? document.body.scrollHeight : document.documentElement.scrollHeight);
    var clientWidth;
    if (window.innerWidth) {
        clientWidth = ((Browser.isSafari) ? window.innerWidth : Math.min(window.innerWidth, document.documentElement.clientWidth));
    } else if(document.documentElement && document.documentElement.clientWidth) {
        clientWidth = document.documentElement.clientWidth;
    } else if(document.body) {
        clientWidth = document.body.clientWidth;
    }
    var clientHeight;
    if (window.innerHeight) {
        clientHeight = ((Browser.isSafari) ? window.innerHeight : Math.min(window.innerHeight, document.documentElement.clientHeight));
    } else if(document.documentElement && document.documentElement.clientHeight) {
        clientHeight = document.documentElement.clientHeight;
    } else if(document.body) {
        clientHeight = document.body.clientHeight;
    }
    ws.scrollTop = scrollTop;             
    ws.scrollLeft = scrollLeft;             
    ws.scrollWidth = scrollWidth;             
    ws.scrollHeight = scrollHeight;             
    ws.clientWidth = clientWidth;             
    ws.clientHeight = clientHeight;             
    return ws
}

var ActiveWindow = null;
var __ICGlobalModalID = "ICModal";

function GetICModal() {return document.getElementById(__ICGlobalModalID);}

function ICModal(pParent,pZIndex) {
    this.Parent = pParent;
	this.id = __ICGlobalModalID;
	this.ZIndex = pZIndex;
	this.Visible = false;
	
	this.saveTabIndexes = new Array();
    this.saveDisableSelect = new Array();
    this.tagWithTabIndex = new Array('A','AREA','BUTTON','INPUT','OBJECT','SELECT','TEXTAREA','IFRAME');
	
	var ws = GetWS();
    var el = document.createElement("DIV");
    el.id=this.id;
    el.style.display = "none";
    el.style.position = "absolute";
    el.style.zIndex = this.ZIndex;
    el.style.backgroundColor = "#000000";
    el.style.opacity = "0.45";
    el.style.filter = "alpha(opacity=45);";
    el.style.left = "0px";
    el.style.top = "0px";
    el.style.width = Math.max(ws.scrollWidth,ws.clientWidth)+"px";
    el.style.height = Math.max(ws.scrollHeight,ws.clientHeight)+"px";
    this.Parent.appendChild(el);  
}

ICModal.prototype.Show = function(fgEl) {
    var el = GetICModal();
    if(el&&fgEl) {
        el.style.display="";
        this.DisableTabs(fgEl);
    }   
}

ICModal.prototype.Hide = function() {
    var el = GetICModal();
    if(el) {
        el.style.display="none";
        this.RestoreTabs();
    }
}

ICModal.prototype.OnResize = function(ws) {
    var el = document.getElementById(this.id);
    if(el) {
        el.style.width = Math.max(ws.scrollWidth,ws.clientWidth)+'px';
        el.style.height = Math.max(ws.scrollHeight,ws.clientHeight)+'px';
    }
}

ICModal.prototype.DisableTabs = function(fgEl) {
    var i = 0;
    var tagElements;
    var tagElementsInPopUp = new Array();
    this.saveTabIndexes = new Array();
    for (var j = 0; j < this.tagWithTabIndex.length; j++) {
        tagElements = fgEl.getElementsByTagName(this.tagWithTabIndex[j]);
        for (var k = 0 ; k < tagElements.length; k++) {
            tagElementsInPopUp[i] = tagElements[k];
            i++;
        }
    }
    i = 0;
    for (var j = 0; j < this.tagWithTabIndex.length; j++) {
        tagElements = document.getElementsByTagName(this.tagWithTabIndex[j]);
        for (var k = 0 ; k < tagElements.length; k++) {
            var tmpIndex = -1;
            for (var l = 0 ; l < tagElementsInPopUp.length; l++) {
                if(tagElementsInPopUp[l]==tagElements[k]) {
                    tmpIndex=l;
                    break;
                }
            }
            if (tmpIndex == -1)  {
                this.saveTabIndexes[i] = {tag: tagElements[k], index: tagElements[k].tabIndex};
                tagElements[k].tabIndex="-1";
                i++;
            }
        }
    }
    i = 0;
    if (Browser.isIE) {
        var tagSelectInPopUp = new Array();
        tagElements = fgEl.getElementsByTagName('SELECT');
        for (var k = 0 ; k < tagElements.length; k++) {
            tagSelectInPopUp[i] = tagElements[k];
            i++;
        }
        i = 0;
        this.saveDisableSelect = new Array();
        tagElements = document.getElementsByTagName('SELECT');
        for (var k = 0 ; k < tagElements.length; k++) {
            var tmpIndex = -1;
            for (var l = 0 ; l < tagSelectInPopUp.length; l++) {
                if(tagSelectInPopUp[l]==tagElements[k]) {
                    tmpIndex=l;
                    break;
                }
            }
            if (tmpIndex == -1)  {
                this.saveDisableSelect[i] = {tag: tagElements[k], visib: tagElements[k].style.visibility} ;
                tagElements[k].style.visibility = 'hidden';
                i++;
            }
        }
    }
}

ICModal.prototype.RestoreTabs = function() {
    for (var i = 0; i < this.saveTabIndexes.length; i++) {
        this.saveTabIndexes[i].tag.tabIndex = this.saveTabIndexes[i].index;
    }
    if (Browser.isIE) {
        for (var k = 0 ; k < this.saveDisableSelect.length; k++) {
            this.saveDisableSelect[k].tag.style.visibility = this.saveDisableSelect[k].visib;
        }
    }
}

function ICWindow(pId) {
	this.id = pId;
	this.modal = GetICModal();
	this.ZIndex = 10000000;
    this.Hide();
}

ICWindow.prototype.GetWindow = function() {return document.getElementById(this.id);}

ICWindow.prototype.Show = function() {
    if(!this.modal) this.modal = new ICModal(document.forms[0],this.ZIndex-1)
    var el = this.GetWindow();
    if(el&&this.modal) {
        if(el.style.display=="") {
            this.PositionElement(el);
        } else {
            el.style.position="absolute";
            el.style.zIndex=this.ZIndex;
            el.style.display="";
            this.modal.Show(el);
            this.PositionElement(el);
            window.onscroll=this.PositionElement;
            window.onresize=this.PositionElement;
        }
    }
}

ICWindow.prototype.Hide = function() {
    var el = this.GetWindow();
    if(el) {
        el.style.display="none";
        window.onscroll=null;
        window.onresize=null;
    } 
    if(this.modal) {
        this.modal.Hide();
    }
}

ICWindow.prototype.PositionElement = function(pEl) {
    if(pEl&&!pEl.tagName) pEl=null;
    var el = !pEl ? ActiveWindow.GetWindow(pEl) : pEl;
    if(el) {
        if(el.parentNode.tagName!="FORM") {
            el.parentNode.removeChild(el);
            document.forms[0].appendChild(el);
        }
        
        var ws = GetWS();
        var w = el.offsetWidth/2;
        var h = el.offsetHeight/2;
        
        el.style.left=((ws.clientWidth/2)-w)+ws.scrollLeft+"px";
        el.style.top=((ws.clientHeight/2)-h)+ws.scrollTop+"px";
        
        if(ActiveWindow) ActiveWindow.modal.OnResize(ws);
        else this.modal.OnResize(ws);
    }
}

function ICWdwCmd(pId,pShow) {
    if(arrICWindows) {
        var target = null;
        for(var i=0;i<arrICWindows.length;i++) {
            if(arrICWindows[i].id==pId) {
                target=arrICWindows[i];
                break;
            }
        }
        
        if(pShow) target.Show();
        else target.Hide();
        
        ActiveWindow = target;
    }    
}
