﻿///
/// event ===============================================================================
/// 
function __eventAdd(el, evname, func) {
    if (el.attachEvent) { // IE
	    el.attachEvent("on" + evname, func);
    } else if (el.addEventListener) { // Gecko / W3C
	    el.addEventListener(evname, func, true);
    } else {
	    el["on" + evname] = func;
    }
}

function __eventRemove(el, evname, func) {
    if (el.detachEvent) { // IE
	    el.detachEvent("on" + evname, func);
    } else if (el.removeEventListener) { // Gecko / W3C
	    el.removeEventListener(evname, func, true);
    } else {
	    el["on" + evname] = null;
    }
}

function __eventGetTarget(e) {
    var f = (window.event) ? window.event.srcElement : e.target;
    while (f.nodeType != 1)
	    f = f.parentNode;
    return f;
}

///
/// popup ===============================================================================
/// 
var __popupVisible;
var __popupElement;
var __popupTarget;

function __popupHandleMouseUp() {
    __popupHide();
}

function __popupHide() {
    if(__popupVisible) {
        if(__popupElement)
            __popupElement.style.display = "none";
        __popupVisible = false;                
        __eventRemove(document, "mouseup", __popupHandleMouseUp);
        __imageViewVisible = false;
        __mapImageVisible = false;
    }   
}

function __popupMove() {    
    if(__popupElement && __popupTarget) {
        var left = 0, top = 0;
        top = __popupTarget.offsetHeight;
        if(__popupTarget.offsetParent) {
            left += __popupTarget.offsetLeft;
            top += __popupTarget.offsetTop;
            var parent = __popupTarget.offsetParent;
            while(parent) {
                left += parent.offsetLeft;
                top += parent.offsetTop;
                parent = parent.offsetParent;
            }
            left += document.documentElement.scrollLeft + document.body.scrollLeft;
            top += document.documentElement.scrollTop + document.body.scrollTop;
            left -= document.documentElement.scrollLeft;
            top -= document.documentElement.scrollTop;
        }
        __popupElement.style.left = left + "px";
        __popupElement.style.top = top + "px";
    }
}

function __popupShow(element, target) {
    if(element && target) {                    
        if(__popupVisible && __popupElement != element) this.hide();
        //
        __popupElement = element;
        __popupTarget = target;
        //
        __popupMove();
        var mode = __popupElement.style.display;
        __popupElement.style.display = (mode == "none") ? "inline" : "none";
        __popupVisible = true;
        //
        __eventAdd(document, "mouseup", __popupHandleMouseUp);
    }
}

///
/// image set ===========================================================================
/// 
var __imageSetCount = 0;

function __imageSetAdd(max) {
    if(__imageSetCount < max) {
        var item = document.getElementById('__imageSet' + __imageSetCount);
        if(item) {
            item.style.display = "block";
        }
        __imageSetCount ++;
    }
}

///
/// image view ==========================================================================
/// 

var __imageViewLabel;
var __imageViewElement;
var __imageViewImage;
//var __imageViewSet;
var __imageViewSetCount = 0;
var __imageViewSetId = 0;
var __imageViewSetIndex = 0;
var __imageViewTimer = 0;
var __imageViewVisible = false;

function __imageViewInit() {
    if(!__imageViewElement) {
        // pane
        __imageViewElement = document.createElement('div');
        __imageViewElement.className = "popup";        
        __imageViewElement.style.display = "none";
        // image
        __imageViewImage = document.createElement('img');
//        __imageViewImage.src = 'Image.ashx?id=41097&i=0&w=400&h=400';
        __imageViewElement.appendChild(__imageViewImage);
        // hr
        __imageViewElement.appendChild(document.createElement('br'));
        // button
        __imageViewLabel = document.createElement("div");
        __imageViewLabel.className = 'lbl';
//        __imageViewLabel.innerHTML = 'Stop';
        __imageViewElement.appendChild(__imageViewLabel);
        ///  
        document.body.appendChild(__imageViewElement);      
    }
}

function __imageViewShow(target,id,count) {
    __imageViewInit();    
    //
    if(!__imageViewVisible) {
        __imageViewSetId = id;
        __imageViewSetCount = count;
        ///
        __imageViewLabel.innerHTML = 'Image ' + (__imageViewSetIndex + 1) + ' of ' + __imageViewSetCount;
        __imageViewImage.src = '/Image.ashx?id=' + __imageViewSetId + '&i=' + __imageViewSetIndex + '&w=440&h=440';
        if(++__imageViewSetIndex >= __imageViewSetCount) __imageViewSetIndex = 0;
        ///
        __popupShow(__imageViewElement, target);
        __imageViewVisible = !__imageViewVisible;
        if(__imageViewTimer)
            window.clearInterval(__imageViewTimer);
        __imageViewTimer = window.setInterval(__imageViewRotate, 4000);
    }
    else 
        __popupHide();
    //  
    if (event.stopPropagation) {
        event.stopPropagation()
        event.preventDefault();
    } 
    else {
        window.event.cancelBubble = true;
        window.event.returnValue = false;
    }
}

function __imageViewRotate() {
    if(__imageViewVisible) {
        __imageViewLabel.innerHTML = 'Image ' + (__imageViewSetIndex + 1) + ' of ' + __imageViewSetCount;
        __imageViewImage.src = '/Image.ashx?id=' + __imageViewSetId + '&i=' + __imageViewSetIndex + '&w=440&h=440';
        if(++__imageViewSetIndex >= __imageViewSetCount) __imageViewSetIndex = 0;
    }
    else
        window.clearInterval(__imageViewTimer);
}

//function __imageViewReceiveServerData(value) {
//    __imageViewSet = eval(value);
//}

//function __imageViewTest() {
//    alert('TEST');
//}

///
/// map =====================================================================
///

var __mapImage;
var __mapImagePane;
var __mapImageVisible = false;

function __mapImageInit() {
    if(!__mapImagePane) {
        // pane
        __mapImagePane = document.createElement('div');
        __mapImagePane.className = "popup";        
        __mapImagePane.style.display = "none";
        // image
        __mapImage = document.createElement('img');
        __mapImagePane.appendChild(__mapImage);
        ///  
        document.body.appendChild(__mapImagePane); 
    }
}

function __mapImageShow(target,code) {
    __mapImageInit();
    //
    var url;
    if(1000 <= code && code <= 3690)
        url = "/images/maps/1000-3690.gif";
    else if(3700 <= code && code <= 3790)
        url = "/images/maps/3700-3790.gif";
    else if(4000 <= code && code <= 4690)
        url = "/images/maps/4000-4690.gif";
    else if(4700 <= code && code <= 4990)
        url = "/images/maps/4700-4990.gif";        
    else if(5000 <= code && code <= 5985)
        url = "/images/maps/5000-5985.gif";
    else if(6000 <= code && code <= 6690)
        url = "/images/maps/6000-6690.gif";
    else if(6700 <= code && code <= 6990)
        url = "/images/maps/3700-3790.gif";
    else if(7000 <= code && code <= 7490)
        url = "/images/maps/7000-7490.gif";
    else if(7500 <= code && code <= 7990)
        url = "/images/maps/3700-3790.gif";
    else if(8000 <= code && code <= 8990)
        url = "/images/maps/3700-3790.gif";
    else if(9000 <= code && code <= 9990)
        url = "/images/maps/3700-3790.gif";
    else 
        url = "";
    if(!__mapImageVisible) {
        __mapImage.src = url;
        //
        __popupShow(__mapImagePane, target);
        //
        __mapImageVisible = !__mapImageVisible;
    }
    else 
        __popupHide();
    //  
    var e = window.event;
    if(e) {
        if (e.stopPropagation) e.stopPropagation();
        if(e.preventDefault) e.preventDefault();
        if(e.cancelBubble != null) e.cancelBubble = true;
        if(e.returnValue != null) e.returnValue = false;
    }
    return true;
}

///
/// char counter ========================================================================
///

var __charCounterPane;
var __charCounterTarget;

function __charCounterKeyUp(el,max) {
    var pane = document.getElementById('__charCounterPane');
    if(pane && el) {
        var len = el.innerHTML.length;
        if(len <= max)
            pane.innerHTML = len;
        else 
            el.innerHTML = el.innerHTML.substring(0, max);
    }
}
