﻿
var DXagent = navigator.userAgent.toLowerCase();
var DXopera = (DXagent.indexOf("opera") > -1);
var DXopera9 = (DXagent.indexOf("opera/9") > -1);
var DXsafari = DXagent.indexOf("safari") > -1;
var DXie = (DXagent.indexOf("msie") > -1 && !DXopera);
var DXIE55 = (DXagent.indexOf("5.5") > -1 && DXie);
var DXns = (DXagent.indexOf("mozilla") > -1 || DXagent.indexOf("netscape") > -1 || DXagent.indexOf("firefox") > -1) && !DXsafari && !DXie && !DXopera;
var DXDefaultThemeCookieName = "DemoCurrentTheme";

function fixPng(element) {
    if (/MSIE (5\.5|6).+Win/.test(navigator.userAgent)) {
        if (element.tagName == 'IMG' && /\.png$/.test(element.src)) {
            var src = element.src;
            element.src = '../Images/blank.gif';
            element.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "')";
        }
    }
}

var WidthCorrectAllowed = true;
function CorrectWidth() {
    if (WidthCorrectAllowed) {
        WidthCorrectAllowed = false;
        var divSpacer = document.getElementById('divSpacer');
        if (divSpacer != null)
            return divSpacer.offsetWidth > 800 ? '800px' : 'auto';
        return 'auto';
    }
}

function isIE() {
    return (document.all && !window.opera) ? true : false;
}
function MoveFooter() {
    var spacer = document.getElementById("SpacerDiv");
    var footer = document.getElementById("Footer");
    if (!DXDemoIsExists(spacer) || !DXDemoIsExists(footer))
        return;

    if (!isIE())
        footer.style.visibility = "hidden";

    spacer.style.height = "0px";

    var lastChildHeight = 0;
    var lastChild = null;
    lastChild = GetLastChild(document.body.lastChild);
    if (lastChild != null)
        lastChildHeight = DXGetAbsoluteY(lastChild) + lastChild.offsetHeight;
    spacer.top = DXGetDocumentClientHeight() - lastChildHeight;
    if (Math.abs(spacer.top) == spacer.top)
        spacer.style.height = spacer.top + "px";

    if (!isIE())
        footer.style.visibility = "";
}
function GetLastChild(element) {
    if (element != null) {
        var top = DXGetAbsoluteY(element);
        var height = element.offsetHeight;
        if (top == 0 && height == 0 || element.nodeName == "#text")
            return GetLastChild(element.previousSibling);
    }
    return element;
}

DXattachEventToElement(window, "resize", DXWindowOnResize);
function DXWindowOnResize(evt) {
    MoveFooter();
}

function trace_event(sender, args, event_name) {
    var s = "";
    for (var i in args) {
        if ("inherit" != i && "constructor" != i)
            s += i + " = " + eval("args." + i) + "<br />";
    }
    if (s == "") s = "";

    var name = sender.name;
    var pos = name.lastIndexOf("_");
    if (pos > -1)
        name = name.substring(pos + 1);
    change_monitor_value("<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\"><tr><td valign=\"top\" style=\"width: 100px;\">Sender:</td><td valign=\"top\">" + name + "</td></tr><tr><td valign=\"top\">EventType:</td><td valign=\"top\"><b>" + event_name + "</b></td></tr><tr><td valign=\"top\">Arguments:</td><td valign=\"top\">" + s + "</td></tr></table><br />", false);
}
function change_monitor_value(val, is_need_clear) {
    var memo = document.getElementById("Events");
    if (memo != null) {
        memo.innerHTML = Trim(is_need_clear ? val : memo.innerHTML + val);
        memo.scrollTop = 100000;
        if (is_need_clear)
            memo.scrollTop = 0;
    }
}
function clear_monitor() {
    change_monitor_value('', true);
}
function LTrim(value) {
    var re = /\s*((\S+\s*)*)/;
    return value.replace(re, "$1");
}
function RTrim(value) {
    var re = /((\s*\S+)*)\s*/;
    return value.replace(re, "$1");
}
function Trim(value) {
    return LTrim(RTrim(value));
}

function screenshot(src) {
    var screenLeft = document.all && !document.opera ? window.screenLeft : window.screenX;
    var screenWidth = screen.availWidth;
    var screenHeight = screen.availHeight;
    var zeroX = Math.floor((screenLeft < 0 ? 0 : screenLeft) / screenWidth) * screenWidth;

    var windowWidth = 475;
    var windowHeight = 325;
    var windowX = parseInt((screenWidth - windowWidth) / 2);
    var windowY = parseInt((screenHeight - windowHeight) / 2);
    if (windowX + windowWidth > screenWidth)
        windowX = 0;
    if (windowY + windowHeight > screenHeight)
        windowY = 0;

    windowX += zeroX;

    var popupwnd = window.open(src, '_blank', "left=" + windowX + ",top=" + windowY + ",width=" + windowWidth + ",height=" + windowHeight + ", scrollbars=no, resizable=no", true);
    if (popupwnd != null && popupwnd.document != null && popupwnd.document.body != null) {
        popupwnd.document.body.style.margin = "0px";
    }
}
function DXDemoIsExists(obj) {
    return (typeof (obj) != "undefined") && (obj != null);
}
function DXDemoIsFocusableTag(tagName) {
    tagName = tagName.toLowerCase();
    return (tagName == "input" || tagName == "textarea" || tagName == "select" ||
        tagName == "button" || tagName == "a");
}
function DXDemoIsFocusable(element) {
    if (!DXDemoIsExists(element) || !DXDemoIsFocusableTag(element.tagName))
        return false;
    var current = element;
    while (DXDemoIsExists(current)) {
        if (current.tagName.toLowerCase() == "body")
            return true;
        if (current.disabled || element.style.display == "none" || element.style.visibility == "hidden")
            return false;
        current = current.parentNode;
    }
    return true;
}
function DXDemoActivateFormControl(controlId) {
    var control = document.getElementById(controlId);
    if (DXDemoIsExists(control) && DXDemoIsFocusable(control))
        control.focus();
}
function DXDemoActivateLabels() {
    var labels = document.getElementsByTagName("label");
    for (var index = 0; index < labels.length; index++) {
        labels[index].onclick = function() {
            DXDemoActivateFormControl(this.getAttribute('htmlfor') || this.getAttribute('for'));
        }
    }
}
function DXDemoHideFocusRects(container) {
    if (container == null)
        return;
    hyperlinks = container.getElementsByTagName("a");
    for (var index = 0; index < hyperlinks.length; index++) {
        hyperlinks[index].onfocus = function() { this.blur(); }
    }
}
DXattachEventToElement(window, "load", DXWindowOnLoad);
function DXWindowOnLoad(evt) {
    DXDemoActivateLabels();
    MoveFooter();
    DXPrepareThemes();
}
function DXPrepareThemes() {
}
function DXGetCookieValue(name) {
    var cookie = " " + document.cookie;
    var search = " " + name + "=";
    var setStr = null;
    var offset = 0;
    var end = 0;
    if (cookie.length > 0) {
        offset = cookie.indexOf(search);
        if (offset != -1) {
            offset += search.length;
            end = cookie.indexOf(";", offset)
            if (end == -1) {
                end = cookie.length;
            }
            setStr = unescape(cookie.substring(offset, end));
        }
    }
    return setStr;
}
function DXGetCurrentThemeCookieName() {
    if (_aspxIsExists(DXCurrentThemeCookieName))
        return DXCurrentThemeCookieName;
    return DXDefaultThemeCookieName;
}
function DXGetCurrentThemeFromCookies() {
    return DXGetCookieValue(DXGetCurrentThemeCookieName());
}
function DXSaveCurrentThemeToCookies(name) {
    document.cookie = DXGetCurrentThemeCookieName() + "=" + name + "; expires=Thu, 13 Sep 3007 14:07:07 GMT; path=/";
}

function DXSetClientWidth(element, clientWidth) {
    var currentStyle = _aspxGetCurrentStyle(element);
    var newClientWidth = clientWidth - _aspxPxToInt(currentStyle.paddingLeft) - _aspxPxToInt(currentStyle.paddingRight) -
        _aspxPxToInt(currentStyle.borderLeftWidth) - _aspxPxToInt(currentStyle.borderRightWidth);
    element.style.width = newClientWidth + "px";
}
function DXGetAbsoluteX(curEl) {
    var pos = 0;
    var isFirstCycle = true;
    while (curEl != null) {
        pos += curEl.offsetLeft;
        if (curEl.offsetParent != null && !DXopera && !DXopera9) {
            pos -= curEl.scrollLeft;
        }
        if (DXie && !isFirstCycle && curEl.tagName != "TABLE")
            pos += curEl.clientLeft;
        isFirstCycle = false;

        curEl = curEl.offsetParent;
    }
    return pos;
}
function DXGetAbsoluteY(curEl) {
    var pos = 0;
    while (curEl != null) {
        pos += curEl.offsetTop;
        if (curEl.offsetParent != null && !DXopera && !DXopera9) {
            pos -= curEl.scrollTop;
        }
        curEl = curEl.offsetParent;
    }
    return pos;
}
function DXGetDocumentClientHeight() {
    if (DXsafari)
        return window.innerHeight;
    if (DXIE55 || DXopera || document.documentElement.clientHeight == 0)
        return document.body.clientHeight;
    return document.documentElement.clientHeight;
}
function DXGetDocumentScrollTop() {
    if (!DXsafari && (DXIE55 || document.documentElement.scrollTop == 0))
        return document.body.scrollTop;
    return document.documentElement.scrollTop;
}
function DXGetDocumentScrollLeft() {
    if (!DXsafari && (DXIE55 || document.documentElement.scrollLeft == 0))
        return document.body.scrollLeft;
    return document.documentElement.scrollLeft;
}
function DXattachEventToElement(element, eventName, func) {
    if (DXns || DXsafari)
        element.addEventListener(eventName, func, true);
    else {
        if (eventName.toLowerCase().indexOf("on") != 0)
            eventName = "on" + eventName;
        element.attachEvent(eventName, func);
    }
}
//Begin Expand/Collapse
var sectionStates = new Array();
function ExpandCollapse(imageItemId) {
    noReentry = true; // Prevent entry to OnLoadImage
    var imageItem = _aspxGetElementById(imageItemId);
    if (ItemCollapsed(imageItemId) == true) {
        imageItem.src = "../Images/ExpandedButton.gif";
        imageItem.alt = "Collapse";
        ExpandSection(imageItem);
    }
    else {
        imageItem.src = "../Images/CollapsedButton.gif";
        imageItem.alt = "Expand";
        CollapseSection(imageItem);
    }
    noReentry = false;
}
function ExpandCollapse_CheckKey(imageItemId) {
    var imageItem = _aspxGetElementById(imageItemId);
    if (window.event.keyCode == 13)
        ExpandCollapse(imageItem);
}
function ChangeExpanded(imageItem, state, style) {
    try {
        var element = imageItem.parentNode.parentNode;
        var span = element.nextSibling;
        span.style.display = style;
        sectionStates[imageItem.id] = state;
    }
    catch (e) {
    }
}
function ExpandSection(imageItem) {
    ChangeExpanded(imageItem, "e", "");
}

function CollapseSection(imageItem) {
    ChangeExpanded(imageItem, "c", "none");
}
function ItemCollapsed(imageId) {
    return sectionStates[imageId] != "e";
}
function CorrectCodeRenderWidth(pageControl) {
    var tabContent = pageControl.GetContentElement(pageControl.activeTabIndex);
    var divCodeRender = _aspxGetChildsByClassName(tabContent, "cr-div");
    for (var index = 0; index < divCodeRender.length; index++) {
        if ((divCodeRender[index].offsetWidth) != pageControl.GetContentsCell().clientWidth)
            DXSetClientWidth(divCodeRender[index], pageControl.GetContentsCell().clientWidth);
    }
}

/* Xactimate Updload Client Logic */
var allowXactimateExtensions = ['bmp'];
function Uploader_OnUploadStart_Xaxtimate() {
    btnUpload_Xactimate.SetText("Uploading...");
    btnUpload_Xactimate.SetEnabled(false);
}
function Uploader_OnUploadComplete_Xactimate(args) {
    cpXactimate.PerformCallback(args.callbackData);
    btnXactimateUpdate.SetEnabled(true);
    btnUpload_Xactimate.SetEnabled(false);
    btnUpload_Xactimate.SetText("View Image");
}
function OnUploadControlTextChanged_Xactimate(s, e) {
    if (isXactimateValidFileName(s.GetText())) {
        btnUpload_Xactimate.SetEnabled(true);
        btnXactimateUpdate.SetEnabled(false);
    }
    else {
        s.ClearText();
        alert("Selected File Type is Not Permitted.  Please Try Again.");
    }
}
function isXactimateValidFileName(fileName) {
    var fileParts = fileName.split(".");
    var fileExtension = fileParts[fileParts.length - 1];
    return arrayIndexOf(allowXactimateExtensions, fileExtension) != -1;
}


/* PhotoAlbum Updload Client Logic */
var allowPhotoAlbumExtensions = ['jpg', 'jpeg', 'jpe', 'gif', 'png', 'JPG', 'PNG', 'GIF'];
function Uploader_OnUploadStart_PhotoAlbum() {
    btnUpload_PhotoAlbum.SetText("Uploading...");
    btnUpload_PhotoAlbum.SetEnabled(false);
}
function Uploader_OnUploadComplete_PhotoAlbum(args) {
    cpPhotoAlbum.PerformCallback(args.callbackData);
    btnPhotoAlbumUpdate.SetEnabled(true);
    btnUpload_PhotoAlbum.SetEnabled(false);
    btnUpload_PhotoAlbum.SetText("View Image");
}
function OnUploadControlTextChanged_PhotoAlbum(s, e) {
    if (isPhotoAlbumValidFileName(s.GetText())) {
        btnUpload_PhotoAlbum.SetEnabled(true);
        btnPhotoAlbumUpdate.SetEnabled(false);
    }
    else {
        s.ClearText();
        alert("Selected File Type is Not Permitted.  Please Try Again.");
    }
}
function isPhotoAlbumValidFileName(fileName) {
    var fileParts = fileName.split(".");
    var fileExtension = fileParts[fileParts.length - 1];
    return arrayIndexOf(allowPhotoAlbumExtensions, fileExtension) != -1;
}




/* Image Updload Client Logic */
function Uploader_OnUploadStart_Image() {
    btnUpload_Image.SetText("Uploading...");
    btnUpload_Image.SetEnabled(false);
}
function Uploader_OnUploadComplete_Image(args) {
    cpImage.PerformCallback(args.callbackData);
    btnImageUpdate.SetEnabled(true);
    btnUpload_Image.SetEnabled(false);
    btnUpload_Image.SetText("View Image");
}
function Uploader_OnUploadComplete_Image2(args) {
    cpImage.PerformCallback(args.callbackData);
    btnUpload_Image.SetEnabled(false);
    btnUpload_Image.SetText("View Image");
}


var allowImageExtensions = ['jpg', 'jpeg', 'jpe', 'gif', 'JPG', 'JPEG', 'JPE', 'GIF'];
function OnUploadControlTextChanged_Image(s, e) {
    if (isImageValidFileName(s.GetText())) {
        btnUpload_Image.SetEnabled(true);
        btnImageUpdate.SetEnabled(false);
    }
    else {
        s.ClearText();
        alert("Selected File Type is Not Permitted.  Please Try Again.");
    }
}
function OnUploadControlTextChanged_Image2(s, e) {
    if (isImageValidFileName(s.GetText())) {
        btnUpload_Image.SetEnabled(true);
    }
    else {
        s.ClearText();
        alert("Selected File Type is Not Permitted.  Please Try Again.");
    }
}
function isdefined(variable) {
    return (!(!(document.getElementById(variable))))

}

function isImageValidFileName(fileName) {
    var fileParts = fileName.split(".");
    var fileExtension = fileParts[fileParts.length - 1];
    return arrayIndexOf(allowImageExtensions, fileExtension) != -1;
}

/*This is used for loading the Selected Xactimate Diagram so that images can be assigned to it */
function cbSelectedXactimate_SelectedIndexChanged() {
    cpSelectedXactimate.PerformCallback();
}


/* Document Updload Client Logic */
function Uploader_OnUploadStart_Document() {
    btnUpload_Document.SetText("Uploading Document...");
    btnUpload_Document.SetEnabled(false);
}
function Uploader_OnUploadComplete_Document(args) {
    cpDocument.PerformCallback(args.callbackData);
    btnDocumentUpdate.SetEnabled(true);
    btnUpload_Document.SetEnabled(false);
    btnUpload_Document.SetText("Upload");
}

var allowDocExtensions = ['pdf', 'doc', 'txt', 'docx', 'xls'];
function OnUploadControlTextChanged_Document(s, e) {
    if (isDocValidFileName(s.GetText())) {
        btnUpload_Document.SetEnabled(true);
        btnDocumentUpdate.SetEnabled(false);
    }
    else {
        s.ClearText();
        alert("Selected File Type is Not Permitted.  Please Try Again.");
    }
}
function isDocValidFileName(fileName) {
    var fileParts = fileName.split(".");
    var fileExtension = fileParts[fileParts.length - 1];
    return arrayIndexOf(allowDocExtensions, fileExtension) != -1;
}

/*Opens a new Browser so that Uploaded File can be Displayed*/
function OpenTempDocument() {
    var s = hf_DocumentFilePath.Get("TempDocFilePath");
    window.open(s);
}
function OpenTempViewDocument(arg) {
    //var s = arg.Get("TempDocFilePath");
    //window.open(s);
    window.open(arg);
}
function ProcessResult(result) {
    window.open(result);
    //    if (String(result).indexOf('popup:') == 0) {
    //        window.open('view2.aspx?ClickKey=' + result.slice(6));
    //    }
}

/* Common Method for validating Upload File type */
function arrayIndexOf(array, element) {
    for (var i = 0; i < array.length; i++) {
        if (array[i] == element)
            return i;
    }
    return -1;
}
function NavBarGroupExpandedChanging(e) {
    if (!e.group.GetExpanded())
        e.group.navBar.CollapseAll();
}

/* Logic for displaying full size image in a popup */
var dvKeyValue = -1;
function OnThumbNailClickedEventHander(s, e, argID) {
    if (dvKeyValue == argID) {
        ImagePopUp.Show();
    }
    else {
        dvKeyValue = argID;
        ImagePopUp.Hide();
        ImagePopUp.Show();
    }
}

function ImagePopUpOnShownEventHander(s, e) {
    cpPopupCallBack.PerformCallback(dvKeyValue);
}
function ImagePopUpCloseUpEventHander(s, e) {
    cpPopupCallBack.PerformCallback("");
}
