﻿var unitsPerPixel = 1;

var loadFunctions = new Array();

window.onload = function () {
    for (var i in loadFunctions) {
        loadFunctions[i].call();
    }
}

function addLoadFunction(func) {
    loadFunctions.push(func);
}

function showLogin() {
    var el = document.getElementById("loginPopup");
    el.style.display = "block";
    centerItem(el, el.offsetWidth, el.offsetHeight);
    closeModal();
    hideVideos();
}

function hideLogin() {
    var el = document.getElementById("loginPopup");
    el.style.display = "none";
    showVideos();
}

function hideVideos() {
    var divs = document.getElementsByTagName("div");
    for (var i in divs) {
        if (divs[i].className) {
            if (divs[i].className.indexOf("hideable") >= 0) {
                divs[i].style.visibility = "hidden";
            }
        }
    }
}

function showVideos() {
    var divs = document.getElementsByTagName("div");
    for (var i in divs) {
        if (divs[i].className) {
            if (divs[i].className.indexOf("hideable") >= 0) {
                divs[i].style.visibility = "visible";
            }
        }
    }
}


function mouseX(evt) {
    if (evt.pageX) return evt.pageX;
    else if (evt.clientX)
        return evt.clientX + (document.documentElement.scrollLeft ?
               document.documentElement.scrollLeft :
               document.body.scrollLeft);
    else return null;
}




function mouseY(evt) {
    if (evt.pageY) return evt.pageY;
    else if (evt.clientY)
        return evt.clientY + (document.documentElement.scrollTop ?
               document.documentElement.scrollTop :
               document.body.scrollTop);
    else return null;
}

function findPosX(obj) {
    var curleft = 0;
    if (obj.offsetParent) {
        while (obj.offsetParent) {
            curleft += obj.offsetLeft
            obj = obj.offsetParent;
        }
    }
    else if (obj.x) {
        curleft += obj.x;
    }
    return curleft;
}

function findPosY(obj) {
    var curtop = 0;
    if (obj.offsetParent) {
        while (obj.offsetParent) {
            curtop += obj.offsetTop
            obj = obj.offsetParent;
        }
    }
    else if (obj.y) {
        curtop += obj.y;
    }
    return curtop;
}

function PlanEvent(item, evt) {
    evt = evt || window.event;
    var top = findPosY(item);
    var left = findPosX(item);
    var parnode = item.parentNode;
    this.x = (mouseX(evt) - left) + parnode.scrollLeft ;
    this.y = (mouseY(evt) - top) + parnode.scrollTop;
    this.left = mouseX(evt) - left;
    this.top = mouseY(evt) - top;
}

function getElementValue(elname) {
    return document.getElementById(elname).value;
}

function setElementValue(elname, val) {
    return document.getElementById(elname).value = val;
}

function getSelectValue(elname) {
    var sel = document.getElementById(elname);
    return sel.options[sel.selectedIndex].value;
}

function setSelectValue(elname, val) {
    var sel = document.getElementById(elname);
    for (var i = 0; i < sel.options.length; i++) {
        if (sel.options[i].value == val) {
            sel.options[i].selected = true;
        }
        else {
            sel.options[i].selected = false;
        }
    }
}

function PlanItem(id, left, top, width, height, type, label, booked, exhib, zone) {
    this.id = id;
    this.left = left;
    this.top = top;
    this.width = width;
    this.height = height;
    this.type = type;
    this.label = label;
    this.booked = (booked == "Y");
    this.exhib = exhib;
    this.area = width * height;
    this.zone = zone;
}

var dragging = false;
var dragItem = null;

function getPlanItemDiv(item) {
    var div = document.createElement("div");
    if (item.type == "A") {
        div.className = "planstand " + item.zone;
        if (item.booked) {
            div.className = "planstand booked " + item.zone;
        }
    }
    else if (item.type == "L") {
        div.className = "planlabel " + item.zone;
    }
    else {
        div.className = "planother";
    }
    var w = translateToPixels(item.width);
    var h = translateToPixels(item.height);
    div.style.width = (w-1) + "px";
    div.style.height = (h-1) + "px";
    div.style.top = (translateToPixels(item.top)) + "px";
    div.style.left = (translateToPixels(item.left)) + "px";
    div.id = "pi_" + item.id;
    div.innerHTML = item.label;
    div.onclick = function(event) {
        edit(this, event);
        endPropagation(event);
    };
    div.onmouseover = function(event) {
        planmouse(this, event);
    }
    div.onmouseout = function(event) {
        planout(this, event);
    }
    div.onmousedown = function(event) {
        dragging = true;
        dragItem = this;
    };
    //alert("div id " + this.id + " added at " + div.style.left + ", "
    //    + div.style.top);
    return div;
}

function setUnitsPerPixel(val) {
    unitsPerPixel = val;
}

function getUnitsPerPixel() {
    return unitsPerPixel;
}

function halfRound(val) {
    var extra = val - Math.floor(val);
    var basis = val - extra;
    if (extra < 0.25) return basis;
    if (extra < 0.75) return basis + 0.5;
    return basis + 1;
}

function translateToUnits(val) {
    return halfRound(val * unitsPerPixel);
}

function translateToPixels(val) {
    return Math.round(val / unitsPerPixel);
}

function edit(item, evt) {
    alert("edit(item,evt) is a placeholder function - override it for " + item.id);
}

function planmouse(item, evt) {

}

function planout(item, evt) {

}

function endPropagation(event) {
    evt = event || window.event;
    if (evt.stopPropagation) {
        evt.stopPropagation();   // W3C model
    } else {
        evt.cancelBubble = true; // IE model
    }
}

function setElementClass(elid, newclass) {
    var el = document.getElementById(elid);
    if(el) el.className = newclass;
}

function hideElement(elid) {
    var el = document.getElementById(elid);
    el.style.display = "none";
}

function insertAtCursor(myField, myValue) {
    //IE support
    if (document.selection) {
        myField.focus();
        sel = document.selection.createRange();
        sel.text = myValue;
    }
    //MOZILLA/NETSCAPE support
    else if (myField.selectionStart || myField.selectionStart == '0') {
        var startPos = myField.selectionStart;
        var endPos = myField.selectionEnd;
        myField.value = myField.value.substring(0, startPos)
                    + myValue
                    + myField.value.substring(endPos, myField.value.length);
    } else {
        myField.value += myValue;
    }
}

function show(itemid) {
    var item = document.getElementById(itemid);
    item.style.display = "block";

}

function hide(itemid) {
    var item = document.getElementById(itemid);
    item.style.display = "none";
}

function toggle(event, itemid) {
    var item = document.getElementById(itemid);
    if (item.style.display == "block") {
        item.style.display = "none";
    }
    else {
        item.style.display = "block";
    }
    endPropagation(event)
}

function insertcode(imageid, controlid, menuname) {
    var control = document.getElementById(controlid);
    var code = "[image " + imageid + "]";
    insertAtCursor(control, code);
    hide(menuname);
}

function insertVideoCode(imageid, controlid, menuname) {
    var control = document.getElementById(controlid);
    var code = "[video " + imageid + "]";
    insertAtCursor(control, code);
    hide(menuname);
}

function findAllByClass(tag, className) {
    var arr = document.getElementsByTagName(tag);
    var els = new Array();
    for (var i = 0; i < arr.length; i++) {
        if (arr[i].className) {
            if (arr[i].className == className) {
                els.push(arr[i]);
            }
        }
    }
    return els;
}

function setCookie(name, value) {
    document.cookie = name + "=" + escape(value);
}

function getCookie(check_name) {
    var a_all_cookies = document.cookie.split(';');
    var a_temp_cookie = '';
    var cookie_name = '';
    var cookie_value = '';
    var b_cookie_found = false; // set boolean t/f default f

    for (i = 0; i < a_all_cookies.length; i++) {
        // now we'll split apart each name=value pair
        a_temp_cookie = a_all_cookies[i].split('=');


        // and trim left/right whitespace while we're at it
        cookie_name = a_temp_cookie[0].replace(/^\s+|\s+$/g, '');

        // if the extracted name matches passed check_name
        if (cookie_name == check_name) {
            b_cookie_found = true;
            // we need to handle case where cookie has no value but exists (no = sign, that is):
            if (a_temp_cookie.length > 1) {
                cookie_value = unescape(a_temp_cookie[1].replace(/^\s+|\s+$/g, ''));
            }
            // note that in cases where cookie is initialized but no value, null is returned
            return cookie_value;
            break;
        }
        a_temp_cookie = null;
        cookie_name = '';
    }
    if (!b_cookie_found) {
        return null;
    }

}

function showRegBubble() {
    var regbubble = document.getElementById("regbubble");
    regbubble.style.display = "block";
    closeModal();
}

function closeRegBubble() {
    var regbubble = document.getElementById("regbubble");
    regbubble.style.display = "none";
    closeModal();
}

function setAjaxSource(url) {
    var ajc = document.getElementById("ajaxFrame");
    if (ajc == null) {
        alert("Error: No Ajax Frame Available");
    }
    else {
        ajc.src = url;
    }
}

var currentFollowButton = null;

function follow(item, exhibId) {
    setAjaxSource("/VisitorFollowFrame.aspx?follow=y&exhibitor_id="
            + exhibId);
    currentFollowButton = item;
}

function followCallBack(following) {
    if (currentFollowButton) {
        var addon = "";
        if(currentFollowButton.className.indexOf("small") >= 0) addon = " small";
        if (following) {
            currentFollowButton.className = "unfollow-button" + addon;
            currentFollowButton.innerHTML = "Unfollow";
        }
        else {
            currentFollowButton.className = "follow-button" + addon;
            currentFollowButton.innerHTML = "Follow";
        }
    }
}

function showModal(itemName) {
    
    var dk = document.getElementById("filldiv");
    dk.style.display = "block";
    var el = document.getElementById(itemName);
    el.style.display = "block";
    centerItem(el, el.offsetWidth, el.offsetHeight);
    dk.onclick = function() {
        closeModal();
    }
}

function showModalSignIn() {
    showModal("modaldiv");
}

/*
function closeModal(itemName) {
    var dk = document.getElementById("filldiv");
    dk.style.display = "none";
    var el = document.getElementById(itemName);
    el.style.display = "none";
}
*/

function closeModal(itemName) {
    var dk = document.getElementById("filldiv");
    if (dk) dk.style.display = "none";
    if (itemName == null) {
        dk = document.getElementById("errorModal");
    }
    else {
        dk == document.getElementById(itemName);
    }
    if (dk) dk.style.display = "none";
}



function centerItem(item, w, h) {
    var sh = window.pageYOffset;
    if (!sh) sh = document.documentElement.scrollTop;

    var cendiv = window.innerHeight;
    if (!cendiv) cendiv = document.documentElement.clientHeight;

    var t = (sh - 70) + ((cendiv / 2) - (h / 2));
    if (t < (sh - 70)) t = (sh - 70);
    var l = Math.round((980 / 2) - (w / 2));

    item.style.top = t + "px";
    item.style.left = l + "px";
}

function showAlert(message) {
    var error = document.getElementById("errortext");
    error.innerHTML = message;
    showModal("errorModal");
}

function clearEnquiryForm() {
    setElementValue("enq_name", "");
    setElementValue("enq_email", "");
    setElementValue("enq_message", "");
}

function checknumeric(val) {
    var strPass = val.value;
    var strLength = strPass.length;
    var lchar = val.value.charAt((strLength) - 1);
    var cCode = CalcKeyCode(lchar);

    /* Check if the keyed in character is a number
    do you want alphabetic UPPERCASE only ?
    or lower case only just check their respective
    codes and replace the 48 and 57 */

    if (cCode < 48 || cCode > 57) {
        var myNumber = val.value.substring(0, (strLength) - 1);
        val.value = myNumber;
    }
    return false;
}


function checkdotnumeric(val) {
    var strPass = val.value;
    var strLength = strPass.length;
    var lchar = val.value.charAt((strLength) - 1);
    var cCode = CalcKeyCode(lchar);

    /* Check if the keyed in character is a number
    do you want alphabetic UPPERCASE only ?
    or lower case only just check their respective
    codes and replace the 48 and 57 */

    if ((cCode != 46) && ((cCode < 48) || (cCode > 57))) {
        var myNumber = val.value.substring(0, (strLength) - 1);
        val.value = myNumber;
    }
    return false;
}

function CalcKeyCode(aChar) {
    var character = aChar.substring(0, 1);
    var code = aChar.charCodeAt(0);
    return code;
}

function GetJson(url, parms, func) {
    parms = JSON.stringify(parms);
    $.ajax({
        type: "POST",
        contentType: "application/json; charset=utf-8",
        url: url,
        data: parms,
        dataType: "json",
        processData: false,
        success: func
    });
}

function ParseJsonDate(dt) {
    dt = dt.replace(/\//g, '');
    return eval("new " + dt);
}

