﻿// JScript File

IE4 = document.all ? 1 : 0;
NS4 = document.layers ? 1 : 0;

var ver = (IE4 || NS4) ? true : false;

var httpRequest = new ActiveXObject("Microsoft.XMLHTTP");

function showCartViewWindow()
{
    window.open("cart.aspx", null, "height=400, width=810, status=no, toolbar=no, menubar=no, scrollbars=yes, resizable=yes");
}

/**************************** begin enable tree view node's mutex ****************************/

function setTreeviewTDAlignTop()
{
    var IE4 = document.all ? 1 : 0;
    var NS4 = document.layers ? 1 : 0;
    var ver = (IE4 || NS4) ? 1 : 0;
    
    var divs = document.getElementsByTagName("div");
    var div;
    for (i = 0; i < divs.length; i++)
    {
        if (divs[i].id.indexOf("ProductTree") != -1)
        {
            div = divs[i];
            break;
        }
    }
    
    if (div == null) return;
    
    var tds = div.getElementsByTagName("td");
    
    for (i = 0; i < tds.length; i++)
    {
        if (tds[i].style.verticalAlign == "")
        {
            if (ver == 1) //ie
                tds[i].style.verticalAlign = "top";
            else
                tds[i].setAttribute("style","vertical-align: top;");
        }
    }
}

//only one node can be expanded
function treeNodeMutex()
{
    var elem = window.event.srcElement;
    
    if (elem.href == null) return;  //the element is not a node in tree view
    if (elem.href.indexOf("javascript") == -1) return;  //it means the element is not top node in tree view.
    
    //in asp.net 2.0 the top node nests in <a> elemet
    if (elem.tagName != "A" && elem.tagName != "a") return;
    //the leaf node contain href attribute which trigger __doPostBack function
    if (elem.href.indexOf("doPostBack") != -1) return;
    
    var id = elem.id;
    var treeview = document.getElementById("CategoriesTree");
    var divs = treeview.getElementsByTagName("div");
    
    for (i = 0; i < divs.length; i++)
    {
        if (divs[i].id != "")
        {
            if (divs[i].id.indexOf(id) == -1) 
            {
                if (divs[i].id.indexOf("Nodes") != -1)
                    divs[i].style.display = "none";
            }
            else //could be useless here to set div[i], the last line set elem.style.dispaly to replace the next line
                divs[i].style.display = "block";
        }
    }
    
    
}

function cancelEvent()
{
    event.returnValue = false;
    event.cancelBubble = true;
}

function handleError(error)
{
    cancelEvent();
}

/**************************** end ****************************/

/**************************** begin category dropdownlist client side click event handling ****************************/
function staticCategoryOnChange(obj)
{
    var hidden = null;
    var target = null;
    var bSplit = false;
    
    var id = obj.options[obj.selectedIndex].value;
    
    if (obj.id.indexOf("StaticTopCategoryDDL") != -1)
    {
        hidden = document.getElementById("ctl00_ContentPlaceHolder4_SecondCategoryDDL_Hidden");
        target = document.getElementById("ctl00_ContentPlaceHolder4_StaticSecondCategoryDDL");
    }
    else if (obj.id.indexOf("StaticSecondCategoryDDL") != -1)
    {
        hidden = document.getElementById("ctl00_ContentPlaceHolder4_ThirdCategoryDDL_Hidden");
        target = document.getElementById("ctl00_ContentPlaceHolder4_StaticThirdCategoryDDL");
//        hiddenValue = document.getElementById("SecondCategoryValue");
//        hiddenValue = id.split(",")[0]; //[0] : category id; [1] : owner id
        bSplit = true;
    }
    else if (obj.id.indexOf("StaticThirdCategoryDDL") != -1) 
    {
//        hiddenValue = document.getElementById("ThirdCategoryValue");
//        hiddenValue.value = id.split(",")[0];
    }
    
    linkCategoryText(obj);
    
    if (target == null) return; //it is the third level category
    
    changeDDLItems(id, target, hidden, bSplit);
    if (bSplit) return; 
    
    //the chosen option is top level category. 
    //otherwise the third level category must be updated.
    id = target.options[target.selectedIndex].value;
    hidden = document.getElementById("ctl00_ContentPlaceHolder4_ThirdCategoryDDL_Hidden");
    target = document.getElementById("ctl00_ContentPlaceHolder4_StaticThirdCategoryDDL");
    changeDDLItems(id, target, hidden, true);

}

function categoryOnChange(obj)
{
    var hidden = null;
    var target = null;
    var bSplit = false;
    var hiddenValue = null;
    
    var id = obj.options[obj.selectedIndex].value;
    
    if (obj.id.indexOf("TopCategoryDDL") != -1)
    {
        hidden = document.getElementById("ctl00_ContentPlaceHolder4_SecondCategoryDDL_Hidden");
        target = document.getElementById("ctl00_ContentPlaceHolder4_SecondCategoryDDL");
    }
    else if (obj.id.indexOf("SecondCategoryDDL") != -1)
    {
        hidden = document.getElementById("ctl00_ContentPlaceHolder4_ThirdCategoryDDL_Hidden");
        target = document.getElementById("ctl00_ContentPlaceHolder4_ThirdCategoryDDL");
//        hiddenValue = document.getElementById("SecondCategoryValue");
//        hiddenValue = id.split(",")[0]; //[0] : category id; [1] : owner id
        bSplit = true;
    }
    else if (obj.id.indexOf("ThirdCategoryDDL") != -1) 
    {
//        hiddenValue = document.getElementById("ThirdCategoryValue");
//        hiddenValue.value = id.split(",")[0];
    }
    
    linkCategoryText(obj);
    
    if (target == null) return; //it is the third level category
    
    changeDDLItems(id, target, hidden, bSplit);
    if (bSplit) return; 
    
    //the chosen option is top level category. 
    //otherwise the third level category must be updated.
    id = target.options[target.selectedIndex].value;
    hidden = document.getElementById("ctl00_ContentPlaceHolder4_ThirdCategoryDDL_Hidden");
    target = document.getElementById("ctl00_ContentPlaceHolder4_ThirdCategoryDDL");
    changeDDLItems(id, target, hidden, true);
}

function changeDDLItems(id, target, hidden, bSplit)
{
    if (bSplit)
    {
        id = id.split(",")[0];
    }
    
    target.options.length = 0;
    
    var ownerId;
    var opt;
    var index = 0;
    for (i = 0; i < hidden.options.length; i++)
    {
        opt = hidden.options[i];
        ownerId = opt.value.split(",")[1];
        
        if (ownerId == id) 
        {
            target.options[index] = new Option(opt.text, opt.value);
            index++;
        }
    }
    linkCategoryText(target);
}

function clearAddCategory()
{
    var top = document.getElementById("TopCategoryText");
    var second = document.getElementById("SecondCategoryText");
    var third = document.getElementById("ThirdCategoryText");
    
    top.value = "";
    second.value = "";
    third.value = "";
}

function linkCategoryText(source)
{
    var value = (source.options.length == 0) ? "" : source.options[source.selectedIndex].text;
    
    //it represent a html hidden control to contain the selected dropdownlist item value, 
    //when it is changed in browser using javascript.
    var hiddenValue = null; 
    
    if (source.id.indexOf("TopCategoryDDL") != -1)
    {
        //document.getElementById("TopCategoryText").value = value;
    }
    else if (source.id.indexOf("StaticSecondCategoryDDL") != -1)
    {
        hiddenValue = document.getElementById(clientId3);
    }
    else if (source.id.indexOf("StaticThirdCategoryDDL") != -1)
    {
        hiddenValue = document.getElementById(clientId4);
    }
    else if (source.id.indexOf("SecondCategoryDDL") != -1)
    {
        //document.getElementById("SecondCategoryText").value = value;
        hiddenValue = document.getElementById(clientId1); //see javascript block in SiteManager.master page
    }
    else if (source.id.indexOf("ThirdCategoryDDL") != -1)
    {
        //document.getElementById("ThirdCategoryText").value = value;
        hiddenValue = document.getElementById(clientId2);  //see javascript block in SiteManager.master page
    }
    
    if (hiddenValue != null)
        hiddenValue.value = (source.options.length == 0) ? "" : source.options[source.selectedIndex].value; //[0] : category id; [1] : owner id
}

//--- start to populate category full name dropdown lists for both synnex and altech

function copySelectedText(ddlID, inputID)
{
    var ddl = document.getElementById(ddlID);
    var input = document.getElementById(inputID);
    
    var text = ddl.options[ddl.selectedIndex].text;
    input.value = text;
}

//---- end

/**************************** end ****************************/

//for div names in divNames array, the first one is set to display:block, others display:none
function siteConfigTabClick(divNames)
{
    var div;
    var names = divNames.split(",");
    
    for (i = 0; i < names.length; i++)
    {
        div = document.getElementById(names[i]);
        
        if (i != 0) 
        {
            div.style.display = "none";
        }
        else 
        {
            div.style.display = "block";
        }
    }
}

function execWarning(obj,evt)
{
    var text;
    
    if (ver) 
    {
        text = obj.innerText;
    }
    else 
    {
        text = obj.text;
    } 
    
    var ret = window.confirm("Are you sure to execute command '" + text + "'");
    
    if (ver)
    {
        if (!ret)
        {
            event.returnValue = false;
            event.cancelBubble = true;
            return false;
        }
    }
    else
    {
        if (!ret)
        {
            evt.preventDefault();
            evt.stopPropagation();
            return false;
        }
    }
    return true;
}

function openProductItem(id, partNumber)
{
    window.open("ProductItem.aspx?ProductId=" + id + "&PartNumber=" + partNumber, "_blank", "width=600,height=500,scrollbars=yes, resizable=yes");
}

//function openProductItem2(partNumber)
//{
//    window.open("ProductItem2.aspx?PartNumber=" + partNumber, "_blank", "width=600,height=500,scrollbars=yes, resizable=yes");
//}

function getFreight()
{
    var FreightLabel = document.getElementById("FreightLabel");
    FreightLabel.innerText = "calculating freight...";
    var postcode = document.getElementById("ctl00_PageHolder1_CheckOutPostcode");
    var req = new ActiveXObject("Microsoft.XMLHTTP");
    req.open("POST", "cart.aspx?&task=getFreight&postcode=" + postcode.value, false);
    req.send();
    
    if (req.responseText == "-1")
        FreightLabel.innerText = "please enter valid postcode (4 digits)";
    else if (req.responseText == "-2")
        FreightLabel.innerText = "please add an item into cart.";
    else
        FreightLabel.innerText = "freight: $" + req.responseText;
}

function openQuote()
{
    var freight = document.getElementById("FreightLabel").innerText;
    var index = freight.indexOf("$");
    if (index == -1) freight = "freight is not calculated.";
    
    window.open("quote.aspx?freight=" + freight, null, "height=400, width=810, status=no, menu=no, toolbar=no, menubar=no, scrollbars=yes, resizable=yes");
}


function printPage()
{
    window.self.focus();
    window.self.print();
}

function underline(obj, bUnderline)
{
    obj.style.textDecoration = (bUnderline) ? "underline " : "none";
    obj.style.color = (bUnderline) ? "red" : "black";
}

/**************************** Progress bar for generating images ****************************/

/**/

function makeImageUrls(obj, evt, url)
{
    if (!execWarning(obj, evt)) return;
    
    setProgressBarColor("#ffffff");
    setProgressBarMsg("please wait...", "");
    
    httpRequest.onreadystatechange = doRequestStateChange;
    httpRequest.open("POST", url, true);
    httpRequest.send();
}

var stateRequest = new ActiveXObject("Microsoft.XMLHTTP");
var alreadySetInterval = false;
var intervalID;

function doRequestStateChange()
{
    if (!alreadySetInterval)
    {
        intervalID = window.setInterval("checkState()", 5000);
        alreadySetInterval = true;
    }
}

function checkState()
{
    if (httpRequest.readyState == 4)
    {
        //var msgCtrl = document.getElementById("SynnexImageMsg");
        //msgCtrl.innerText = stateRequest.responseText;
        window.clearInterval(intervalID);
        setProgressBarColor("#0066ff");
        setProgressBarMsg("finished.", httpRequest.responseText);
        return;
    }
    
    stateRequest.open("POST", "ClientCallback.aspx?task=getState", false);
    stateRequest.send();
    
    if (isNaN(stateRequest.responseText)) 
    {
        //alert(stateRequest.responseText);
        setProgressBarMsg("being processed.", stateRequest.responseText);
        return;
    }
    
    setProgressBar(stateRequest.responseText, "#0066ff");
}

var lastProgressValue;

function setProgressBar(percentage, color)
{
    if (lastProgressValue == percentage) return;
    
    lastProgressValue = percentage;
    var ctrlName = "ProgressBar" + percentage.toString();
    var ctrl = document.getElementById(ctrlName);
    
    if (ctrl == null) return;
    
    ctrl.style.backgroundColor = color;
}

function setProgressBarColor(color)
{
    for (i = 1; i < 11; i++)
    {
        var ctrlName = "ProgressBar" + i.toString();
        var ctrl = document.getElementById(ctrlName);
    
        if (ctrl != null)
        {
            if (ctrl.style.backgroundColor != color)
                ctrl.style.backgroundColor = color;
        }
    }
}

function setProgressBarMsg(msg, finishMsg)
{
    var msgCtrl = document.getElementById("ProgressBarMsg");
    var finishCtrl = document.getElementById("ProgressFinishMsg");
    
    if (msgCtrl == null) return;
    
    msgCtrl.innerText = msg;
    
    if (finishCtrl == null) return;
    
    finishCtrl.innerText = finishMsg;
}

function showProgressImage()
{
    var image = document.getElementById("ctl00$ContentPlaceHolder4$ProgressImage");
    image.src = "http://192.168.1.100/atweb/images/progress.gif";
}

/**************************** end ****************************/

function setCurrentContent(names)
{
    if (currentContent == null || currentContent == "") return;
    
    var array = names.split(",");
    //var ctrl;
    
    for (i = 0; i < array.length; i++)
    {
        //ctrl = document.getElementById(array[i]);
        //if (ctrl == null) return;
        
        if (currentContent.indexOf(array[i]) != -1) document.getElementById(array[i]).style.display = "block";
        else document.getElementById(array[i]).style.display = "none";
    }
}

