﻿// JScript File

    function getXMLHttpRequest()
    {
	    try {return new XMLHttpRequest(); }
	    catch(e) {return new ActiveXObject("Microsoft.XMLHTTP"); }
    }

    function concat(objArray, separator)
    {
        var s = "";
        var sep = (separator?separator:",");
        
        for (var i=0;i<objArray.length;i++)
        {
            if (i > 0) s += sep;
            s += objArray[i];
        }
        return s;
    }

    function setUserId(ifr, newUserId)
    {
        var userIdInput = getIframe(ifr.id).document.getElementById("__userId");
        var form = getIframe(ifr.id).document.getElementById("form1");
        
        if (!isNaN(parseInt(newUserId)))
        {
            if (newUserId == userIdInput.value) return;
            userIdInput.value = newUserId;
            if (typeof(getIframe(ifr.id).override) == "function")
                getIframe(ifr.id).override();
            form.submit();
        }
        else userIdInput.value = "0";
    }

    function GetPageName()
    {
        return document.getElementById("__PageName").value;
    }

    function ManageContent(control)
    {
        if (!(event.ctrlKey && event.ctrlLeft && event.button==1)) return;    
        window.open("ManageContent.aspx?ControlId="+control.id+"&ControlType="+control.type+"&PageName="+GetPageName(), "_blank", "width=400px,height=300px");
    }

    function onSubmit(evt) 
    {
        if (evt) 
        {
            switch (getSrcElement(evt).className)
            {
                case "regularButtonOver":
                    getSrcElement(evt).className = "regularButton"; 
                    break;
                case "bigButtonOver":
                    getSrcElement(evt).className = "bigButton"; 
                    break;
                case "biggerButtonOver":
                    getSrcElement(evt).className = "biggerButton"; 
                    break;
            }
        }
    }

    function onSubmitOver(evt) 
    {
        if (evt) 
        {
            switch (getSrcElement(evt).className)
            {
                case "regularButton":
                    getSrcElement(evt).className = "regularButtonOver"; 
                    break;
                case "bigButton":
                    getSrcElement(evt).className = "bigButtonOver"; 
                    break;
                case "biggerButton":
                    getSrcElement(evt).className = "biggerButtonOver"; 
                    break;                
            }
        }
    }

    function SelectBanner(elem)
    {
        if (elem != undefined && elem.BannerSelectField != undefined && elem.BannerSelectField)
            document.getElementById("ifrBanner").src = "Banner.aspx?SelectField="+elem.BannerSelectField;
        else 
            document.getElementById("ifrBanner").src = "Banner.aspx?SelectField=InnerPageClickPrice";
    }

    function FocusElem(target)
    {
        if (document.getElementById(target.id+"_anchor")) document.getElementById(target.id+"_anchor").click();
    }

    var prevBGColor = null;

    function RowHover(row, inOut)
    {
        if (inOut)
        {
            prevBGColor = row.style.backgroundColor;
            row.style.backgroundColor = "Azure";
        }
        else if (prevBGColor) row.style.backgroundColor = prevBGColor;
        else row.style.backgroundColor = "white";
    }

    function RowClick(row)
    {
        if (document.getElementById("__doRetrieve")) document.getElementById("__doRetrieve").value = "1";
        eval(row.cells[1].getElementsByTagName("a")[0].href.substr("javascript:".length));
    }    
           
    function displayYesNoCancelBox(msg)
    {
        var features = "dialogHeight:170px; dialogWidth:302px; center:1; help:0; status:0; scroll:0;";
        var resp = showModalDialog("YesNoCancelBox.aspx", msg, features);
        
        return resp;
    }
    
    function isAllSameChar(inputString, charCode)
    {
        if ((typeof(inputString) != "string") || (inputString.length == 0)) return false;
        for (var i=0;i<inputString.length;i++) if (inputString.charCodeAt(i) != charCode) return false;
        return true;
    }

    function stringEmpty(inputString)
    {
        if (isIE()) return ((inputString == null) || isAllSameChar(inputString, 32) || ((typeof(inputString) == "string") && (inputString.length == 0)));
        if (inputString.length == 0) return true;
        for (var i=0;i<inputString.length;i++)
            if ((escape(inputString[i]) != "%0A") && (escape(inputString[i]) != "%20")) return false;
        return true;
    }
    
    function isNumber(input)
    {
        var ch;
		var dotCnt = 0;
		var isNum = true;

        if (typeof(input) == "number") return true;
        if (typeof(input) != "string") return false;
		if ((input.length == 0) || isAllSameChar(input, 32) ||
		    (input.charAt(input.length - 1) == '.')) return false;
 		for (var i=0;i<input.length;i++)
 		{
 		    ch = input.charAt(i);
			if (ch == '.')
			{
				dotCnt++;
				isNum = (dotCnt < 2);
			}
			else isNum = (((i == 0) && (ch == '-')) || !isNaN(parseInt(ch)));
			if (!isNum) break;
 		}
		return isNum;
    }
    
    function hideButtons()
    {
        var btns = document.getElementsByTagName('input');
        if (!btns) return;
        for (var i=0; i<btns.length; i++)
            if (btns[i].type == 'button' || btns[i].type == 'image' || btns[i].type == 'submit')
                btns[i].style.display = "none";
    }

// Get new window features

    function getFeatures(height, width)
    {
        var features = "resizable=0,fullscreen=0,status=0,help=0,scrollbars=0,";
        var left = (screen.availWidth - width) / 2;
        var top = (screen.availHeight - height) / 2;
        
        features += "height=";
        features += height;
        features += ",width=";
        features += width;
        features += ",left=";
        features += left;
        features += ",top=";
        features += top;
        return features;
    }

// Open Help Window
            
    function openHelpWindow(stepId)
    {
        var url = "SitePriceMainHelp.aspx";
        
        if (typeof(stepId) == "string")
        {
            url += "?StepId=";
            url += stepId;
        }
        top.showHelp(url);
    }

function keyCodeIsOneOf(s, keyCode)
{
    for (var i=0; i<s.length; i++)
        if (s.charCodeAt(i) == keyCode)
            return true;
    return false;
}

function filterEnglish(keyCode, cultureCode)
{
    var c = ((typeof(cultureCode)!="string")||stringEmpty(cultureCode)?"en":cultureCode.substr(0,2));
    switch (c)
    {
        case "en": return keyCode >= "a".charCodeAt(0) && keyCode <= "z".charCodeAt(0) ||
                          keyCode >= "A".charCodeAt(0) && keyCode <= "Z".charCodeAt(0) ||
                          keyCode >= "0".charCodeAt(0) && keyCode <= "9".charCodeAt(0) ||
                          keyCodeIsOneOf(" `|\\/.,=+-~!@#$%^&*()_+{}[]\"?<>:;", keyCode);
        case "he": return keyCode >= "א".charCodeAt(0) && keyCode <= "ת".charCodeAt(0) ||
                          keyCode >= "0".charCodeAt(0) && keyCode <= "9".charCodeAt(0) ||
                          keyCodeIsOneOf(" `|\\/.,=+-~!@#$%^&*()_+{}[]\"?<>:;", keyCode);
        default: return keyCode >= "a".charCodeAt(0) && keyCode <= "z".charCodeAt(0) ||
                        keyCode >= "A".charCodeAt(0) && keyCode <= "Z".charCodeAt(0) ||
                        keyCode >= "0".charCodeAt(0) && keyCode <= "9".charCodeAt(0) ||
                        keyCodeIsOneOf(" `|\\/.,=+-~!@#$%^&*()_+{}[]\"?<>:;", keyCode);
    }
}

// Get Position
 
    function getLeft(obj, container)
    {
        var contWidth = 0;
        var width = parseInt(obj.style.width);
        var cont = (container?container:top.document.body);
        
        if (isNaN(width)) width = obj.clientWidth;
        if (width == 0) width = obj.offsetWidth;
        if ((cont.style.width) && (cont.style.width.indexOf('%') == -1)) contWidth = parseInt(cont.style.width);
        if (isNaN(contWidth) || (contWidth == 0)) contWidth = cont.clientWidth;
        if (contWidth == 0) contWidth = cont.offsetWidth;
        return (contWidth - width) / 2 + "px";
    }
        
    function getTop(elem, container, yOffset)
    {
        var b = (container?container:document.documentElement);
        
        return b.scrollTop + (b.clientHeight - elem.offsetHeight) / 2 + (typeof(yOffset)=="undefined"?0:yOffset) + "px"
    }

// Update Events Log

    function updateEventsLog(siteEvent, eventObjectType, spZone, eventObject)
    {
        var ifr = top.document.getElementById("ifrUpdateEventsLog");
        
        if (ifr)
        {
            var src = "UpdateEventsLog.aspx?SiteEvent=";
            
            src += siteEvent;
            src += "&EventObjectType=";
            src += eventObjectType;
            src += "&SPZone=";
            src += spZone;
            if (typeof(eventObject) == "string")
            {
                src += "&EventObject=";
                src += eventObject;
            }
            ifr.src = src;
        }
    }

// Combo Box

    function getListIndex(list, value)
    {
        if (list.tagName.toLowerCase() == "select")
        {
            var opt;
            
            for (var i=0;i<list.options.length;i++)
            {
                opt = list.options[i];
                if ((opt.value == value) || (opt.text == value)) return i;
            }
        }
        return -1;
    }
    
    function selectedExists(list)
    {
        if (list.tagName.toLowerCase() == "select")
            for (var i=0;i<list.options.length;i++) if (list.options[i].selected) return true;
        return false;
    }
    
    function getIframe(ifrName)
    {
        var col = document.getElementsByTagName("iframe");
        for (var i=0; i<col.length; i++)
            if (col[i].name == ifrName || col[i].id == ifrName) return window.frames[i];
        return null;
    }
        
    function ifrDoc(ifrName)
    {
        var ifr = getIframe(ifrName);
        return (ifr?ifr.document:null);
    }
    
    var hasInnerText;

    function initHasInnerText()
    {
        try
        {hasInnerText = document.getElementsByTagName("body")[0].innerText != undefined; }
        catch (e) 
        {hasInnerText = false; }
    }
    
    function getInnerText(elem)
    {
        return isIE() ? elem.innerText : elem.textContent;
    }
    
    function setInnerText(elem, text)
    {
        if (isIE())
            elem.innerText = text;
        else
            elem.textContent = text;
    }
    
    function getSrcElement(evt)
    {
        if (evt)
            return evt.srcElement != undefined ? evt.srcElement : evt.target != null ? evt.target : evt.currentTarget != null ? evt.currentTarget : top.srcElem;
        return top.srcElem?top.srcElem:null;
    }
    
    function click(elem, bubble)
    {
        if (elem.dispatchEvent != undefined)
        {
            if (elem.tagName.toLowerCase() == "input" && 
                (elem.type.toLowerCase() == "submit" ||
                 elem.type.toLowerCase() == "button")) elem.click();
            else
            {             
                var clickevent = document.createEvent("MouseEvents");
                
                clickevent.initEvent("click", bubble == undefined || bubble, true);
                elem.dispatchEvent(clickevent);
            }
        }
        else elem.click();
    }

    function isIE()
    {
        return window.navigator.appName.toLowerCase().indexOf('explorer') > -1;
    }

    function IEVersion()
    {
        var spl2;
        var spl1 = window.navigator.appVersion.split(';');
        
        for (var i=0;i<spl1.length;i++)
        {
            spl2 = spl1[i].split("; ");
            if ((spl2[0] == "MSIE") && (spl2.length > 1)) return parseInt(spl2[1]);
        }
        return -1;
    }
    
    function addOption(select, option)
    {
        if ((select.tagName.toLowerCase() == "select") && (option.tagName.toLowerCase() == "option"))
        {
            if (isIE()) select.options.add(option);
            else select.add(option, null);
        }
    }
    
    function removeOption(select, index)
    {
        if (select.tagName.toLowerCase() == "select")
        {
            if (isIE()) select.options.remove(index);
            else select.remove(index);
        }
    }
    
    function inlineBlock(tagName)
    {
        if (!isIE() && tagName)
        {
            if ((tagName == "TABLE") || (tagName == "table")) return "table";
            if ((tagName == "TR") || (tagName == "tr")) return "table-row";
            if ((tagName == "Td") || (tagName == "td")) return "table-cell";
        }
        return "";
    }

    function getKeyCode(evt)
    {
        return evt.which ? evt.which : evt.keyCode;
    }
    
    function getValue(childNodes)
    {
        var i=0;
        while (i<childNodes.length && childNodes[i].value == undefined) i++;
        return i<childNodes.length ? childNodes[i].value : null;
    }
    
    function getPrevSibling(node)
    {
        if (!node) return null;
        do {
            node = node.previousSibling;
        } while (node && node.nodeType != 1) 
        return node;
    }
    
    function getNextSibling(node)
    {
        if (!node) return null;
        do {
            node = node.nextSibling;
        } while (node && node.nodeType != 1) 
        return node;
    }
    
    function getChildNodeById(parent, id)
    {
        if (parent && parent.childNodes.length > 0)
        {
            var child = parent.childNodes[0];
            
            if ((child.nodeType == 1) && (child.id == 1)) return child;
            while (child != null)
            {
                child = getNextSibling(child);
                if (child && (child.id == id)) return child;
            }
        }
    }
    
    function getChildNode(node, index)
    {
        if (!node || node.childNodes.length == 0) return null;
        var child = node.childNodes[0];
        if (tagName(child) == "table" && node.childNodes.length == 1 && index < child.rows.length)
        {
          return child.rows[index].cells[0].childNodes[0];
        }
        if (!index) return child.nodeType == 1 ? child : getNextSibling(child);
        var i = child.nodeType == 1 ? 0 : -1;
        while (i < index && i < node.childNodes.length) 
        {
            child = getNextSibling(child);
            i++;
        }
        return i == index ? child : null;
    }
    
    function getChildNodesLength(childNodes)
    {
        if (!childNodes) return -1;
        var len = 0;
        for (var i=0; i<childNodes.length; i++)
            if (childNodes[i].nodeType == 1) len++;
        return len;
    }
    
function hasVScroll(elem)
{
    return elem && elem.scrollHeight > elem.offsetHeight ? 1 : 0;
}
    
function getElemPos(elem) 
{
    var result = new Object();       
    result.x = 0;
    result.y = 0;
    result.width = 0;
    result.height = 0;
    result.scrollLeft = isNaN(elem.scrollLeft) ? 0 : elem.scrollLeft;
    result.scrollTop = isNaN(elem.scrollTop) ? 0 : elem.scrollTop;
    result.scrollRight = Math.max(0,elem.scrollWidth - elem.scrollLeft - elem.offsetWidth);
    
    if (elem.offsetParent) {
        result.x = elem.offsetLeft;
        result.y = elem.offsetTop;
        var parent = elem.offsetParent;
        while (parent) {
            result.x += parent.offsetLeft;
            result.y += parent.offsetTop; 
            result.scrollLeft += isNaN(parent.scrollLeft) ? 0 : parent.scrollLeft;
            result.scrollTop += isNaN(parent.scrollTop) ? 0 : parent.scrollTop;
            result.scrollRight += Math.max(0,parent.scrollWidth - parent.scrollLeft - parent.offsetWidth);
            var parentTagName = parent.tagName.toLowerCase();
            if (parentTagName != "table" &&
                parentTagName != "body" && 
                parentTagName != "html" && 
                parentTagName != "div" && 
                parent.clientTop && 
                parent.clientLeft) {
                result.x += parent.clientLeft;
                result.y += parent.clientTop;
            }
            parent = parent.offsetParent;
        }
    }
    else if (elem.style.position == "absolute" && elem.style.left && elem.style.top) {
        result.x = parseInt(elem.style.left);
        result.y = parseInt(elem.style.top);
    }
    
    if (elem.offsetWidth && elem.offsetHeight) {
        result.width = elem.offsetWidth;
        result.height = elem.offsetHeight;
    }
    else if (elem.style && elem.style.pixelWidth && elem.style.pixelHeight) {
        result.width = elem.style.pixelWidth;
        result.height = elem.style.pixelHeight;
    }
    
    return result;
}

function getInterIframeElemPos(elem)
{
    var pos = getElemPos(elem);
    if (typeof(getWindow) != "function") return pos;
    var w = getWindow(elem); 
    while (w && w.frameElement)
    {
        var p = getElemPos(w.frameElement);
        pos.x += p.x;
        pos.y += p.y;
        pos.scrollLeft += p.scrollLeft;
        pos.scrollTop += p.scrollTop;
        pos.scrollRight += p.scrollRight;
        pos.marginLeft += p.marginLeft;
        pos.marginRight += p.marginRight;
        pos.marginTop += p.marginTop;
        pos.marginBottom += p.marginBottom;
        elem = w.frameElement;
        w = getWindow(elem);
    }
    return pos;
}

function getHTML(url)
{
//    if (document.getElementById("pnlHourGlass")) document.getElementById("pnlHourGlass").style.display = "block";
    var xmlHTTP = isIE() ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
    xmlHTTP.open("GET", url, false);
    xmlHTTP.send("");
//    if (document.getElementById("pnlHourGlass")) document.getElementById("pnlHourGlass").style.display = "none";
    return xmlHTTP.responseText;
}

    var displayModeAttr = "DisplayMode";
    var homePageMode = "hp";
    
    function pathUnit_onclick(link)
    {
        if (top.currShownFrame && typeof(top.currShownFrame.contentWindow.toggleDisplayMode) == "function")
            top.currShownFrame.contentWindow.toggleDisplayMode(link.getAttribute(displayModeAttr));
    }
    
    function PathUnit(text, displayMode)
    {
        this.text = text;
        this.displayMode = displayMode;
    }

    function contains(a, b)
    {
        if (a == b) return false;
 	    while(b && (a!=b) && (b!=null)) b = b.parentNode;
	    return a == b;
    }

    function getWindow(n)
    {
        try
        {
            if (n == null || n.ownerDocument == null) return null;
            return n.ownerDocument.defaultView ? n.ownerDocument.defaultView : n.ownerDocument.parentWindow;
        }
        catch(e) {return null; }
    }
    
    function addEvent(obj, eventName, handler)
    {
        if (obj != null)
        {
            eventName = eventName.toLowerCase();
            if (window.attachEvent)           
                obj.attachEvent((eventName.indexOf("on")!=0?"on":"")+eventName, handler);
            else
                obj.addEventListener(eventName.indexOf("on")==0?eventName.substr("on".length):eventName, handler, false);
        }
    }
    
    function stopPropagation(evt)
    {
        isIE() ? evt.cancelBubble = true : evt.stopPropagation();
    }

function isNull(n, def) {return !n||isNaN(n)?def:n; }

function isDateValid(DD, MM, YYYY, yDiff)
{
    var isValid = false;
    var dt = new Date();
    var y = dt.getFullYear();
    var dd = isNull(DD, -1);
    var mm = isNull(MM, -1);
    var yyyy = isNull(YYYY, -1);
    var yd = isNull(yDiff, 0);
    
    if (yyyy>50 && yyyy<=99) yyyy += 1900;
    else if (yyyy>=0 && yyyy<=50) yyyy += 2000;
    
    isValid = (dd && (dd > -1) && mm && (mm > -1) && yyyy && (yyyy > -1));
    if (isValid)
    {
        if ((dd <= 0) || (dd > 31) || (mm <= 0) || (mm > 12) || (yyyy > y - yd)) isValid = false;
        else if ((dd > 28) && (dd <=31))
        {
            if (dd == 31) isValid = ((mm == 1) || (mm == 3) || (mm == 5) || (mm == 7) || (mm == 8) || (mm == 10) || (mm == 12))
            else if (dd == 29) isValid = ((mm != 2) || (yyyy % 4 == 0))
        }
        else isValid = true;
    }
    return isValid;
}

function isTimeValid(hh, mm, ss)
{
  hh = isNull(hh, 0);
  mm = isNull(mm, 0);
  ss = isNull(ss, 0);
  return hh >= 0 && hh < 24 && mm >= 0 && mm < 60 && ss >= 0 && ss < 60;
}

function setTabIndex(elems, ti)
{
    if (!elems || !elems.length) return;
    for (var i=0; i<elems.length; i++)  
        elems[i].tabIndex = ti;
}

function isValidEmail(input)
{
    var ch, inp = "";
    var atPassed = false;
    var dotAfterAt = false;
    var isValidChar = true;
    var atCnt = 0;
    
    if (typeof(input) == "string") inp = input;
    else if (input.value) inp = input.value;
    else if (input.innerText) inp = input.innerText;
    else if (input.innerHTML) inp = input.innerHTML;
    for (var i=0;i<inp.length;i++)
    {
        ch = inp.charAt(i);
        if (((i == 0) || (i == inp.length - 1)) && ((ch == '@') || (ch == '.')))
        {
            isValidChar = false;
            break;
        }
        if ((ch !== '@') && (ch != '.')) isValidChar = isValidEmailChar(ch, i);
        if (!isValidChar) break;
        if (ch == '@')
        {
            atPassed = true;
            atCnt++;
            if (atCnt > 1) break;
        }
        if (atPassed && !dotAfterAt) dotAfterAt = (ch == '.');
    }
    return (atPassed && dotAfterAt && isValidChar && (atCnt == 1));
}

function isValidEmailChar(ch, index)
{
    if ((typeof(ch) == "string") && (ch.length > 0))
    {
        ch = ch.charAt(0);
        return (((ch >='0') && (ch <='9')) ||
                ((ch >='A') && (ch <='Z')) ||
                ((ch >='a') && (ch <='z')) ||
                (index && (index > 0) && ((ch == '-') || (ch == '_')))); 
    }
    return (typeof(ch) == "number");
}

function returnFalse() {return false; }

function addFloat(number, addition)
{
    if (!isNaN(parseFloat(number)) && !isNaN(parseFloat(addition)))
    {
        var sNum = number.toString();
        var sAdd = addition.toString();
        var numDotPos = getCharPos('.', sNum);
        var addDotPos = getCharPos('.', sAdd);
        var numFracLen, addFracLen, maxFracLen, sum;
        
        if (numDotPos < 0) numFracLen = 0;
        else numFracLen = sNum.length - numDotPos - 1;
        if (addDotPos < 0) addFracLen = 0;
        else addFracLen = sAdd.length - addDotPos - 1;
        maxFracLen = Math.max(numFracLen, addFracLen);
        if (numFracLen < maxFracLen) for (var i=0;i<maxFracLen-numFracLen;i++) sNum += '0';
        else if (addFracLen < maxFracLen) for (var i=0;i<maxFracLen-addFracLen;i++) sAdd += '0';
        sNum = removeChar('.', sNum);
        sAdd = removeChar('.', sAdd);
        sum = parseFloat(sNum) + parseFloat(sAdd);
        for (var i=0;i<maxFracLen;i++) sum = sum / 10;
        return sum;
    }
    return number;
}

function removeChar(inpCh, str)
{
    var ch;
    var retStr = "";
    
    for (var i=0;i<str.length;i++)
    {
        ch = str.charAt(i);
        if (ch != inpCh) retStr += ch;
    }
    return retStr;
}

function getCharPos(inpCh, obj)
{
    var ch, str;
    
    if (typeof(obj) == "number") str = obj.toString();
    if (typeof(obj) != "string") str = "";
    else str = obj;
    for (var i=str.length-1;i>=0;i--)
    {
        ch = str.charAt(i);
        if (ch == inpCh) return i;
    }
    return -1;
}

function getDateTimeString()
{
    var d = new Date();
    var retVal = "";
    
    retVal += d.getYear();
    retVal += "+";
    retVal += d.getMonth() + 1;
    retVal += "+";
    retVal += d.getDate();
    retVal += "+";
    retVal += d.getHours();
    retVal += "+";
    retVal += d.getMinutes();
    retVal += "+";
    retVal += d.getSeconds();
    return retVal;
}

// tool is 
// widgetType is of type long
function initToolbar(tool, widgetType)
{
  tool.Var(1) = widgetType;
}

function replaceQuotes(input)
{
    if (!stringEmpty(input))
    {
        var output = "";
        var quotePos = input.indexOf("&quote;");
        
        if (quotePos < 0) output = input;
        else
        {
            var inp = input;
            var startPos = 0;
            
            while (quotePos >= 0)
            {
                output += inp.substr(startPos, quotePos);
                output += "'";
                startPos = quotePos + 7;
                inp = inp.substr(startPos);
                startPos = 0;
                quotePos = inp.indexOf("&quote;");
            }
            output += inp;
        }
        return output;
    }
    return "";
}

function tagName(e)
{
  return e ? (document.all ? (e.tagName ? e.tagName.toLowerCase() : "") : (e.nodeName ? e.nodeName.toLowerCase() : "")) : "";
}

function getParentNode(e, tagName_)
{
  while (e && tagName(e) != tagName_) e = e.parentNode;
  return e;
}