

function mxfer_includevars() {
    var script_filename;

    var script_filename = domainfrommatchingsrc(document,"mxfer.js") + "virtual/mxfervar-js.aspx?r=" + Math.random();
    
    var html_doc = document.getElementsByTagName('head').item(0);
    var js = document.createElement('script');
    js.setAttribute('language', 'javascript');
    js.setAttribute('type', 'text/javascript');
    js.setAttribute('src', script_filename);
    html_doc.appendChild(js);

}

//returns calling source url, up to first "/" past double "//"'s
function domainfrommatchingsrc(topelement, src) {
    //document.write("*");
    for (var i = 0; i < topelement.childNodes.length; i++) {
        var z = topelement.childNodes[i];
        if (z.nodeName != "SCRIPT") {
            if (z.hasChildNodes()) {
                var test = domainfrommatchingsrc(z, src);
                if (test != '') return test;
            }
        }
        else {
            var l = z.src.toLowerCase();
            //document.write(l);
            if (l.length > src.length + 1) {
                //test if filename matches
                if (l.substring(l.length - src.length - 1) == "/" + src.toLowerCase()) {

                    var rx = new RegExp("(\[a-zA-Z]+):(\d+)?//[^/]+/");
                    var result = z.src.match(rx);
                    if (result == null)
                        return "/";
                    else
                        return result[0];
                }
            }
        }
    }
    return '';
}

//mxfer_includevars();
var mxfer_element_clientid = 'MXferDoc';

var MXfer = function() {



    mxfer_includevars();

    if (document.getElementById(mxfer_element_clientid) == null)
        return;

    // apply onblur event to all text field
    var txtEles = null;
    var txtElesPriceConf = null;
    var txtElesPriceConf_old = null;
    var vAddToCart = null;
    var vAddToCart2 = null;
    var tf = null;

    var frmAddToCart = document.getElementById(mxfer_element_clientid).form;

    return {
        AddVSItemToCart: function(sku) {


          


            // parse query string and set value to areaid, productid and qty attribute
            // and call SubmitSingleXfer()
            //		var areaId = getQueryVariable('labelid');
            //		var productId = getQueryVariable('productid');
            //		var qty = getQueryVariable('qty');

            var frmName = "form_" + sku;
            var frm = Ext.select('form[id=' + frmName + ']').elements[0];
            if (frm) {


                //alert('aa'+frm.elements[0].labelid.value+","+frm.elements[0].productid.value+","+frm.elements[0].qty.value);

                //var q = Ext.urlDecode(window.location.search.substring(1));
                var areaId = frm.labelid.value;
                var productId = frm.productid.value;
                var qty = frm.qty.value;


                //frmAddToCart = Ext.get(mxfer_var.addtocartform_clientid).dom;
                frmAddToCart = document.getElementById(mxfer_element_clientid).form;

                //var btnName='vsAddCart';
                var btn = Ext.get(frmName);
                //alert("btn "+btn);
                //debugger

                btn.set({
                    productId: productId,
                    quantity: qty,
                    areaId: areaId
                });




                //alert(areaId+","+productId+","+areaId);
                //alert(btn.getAttributeNS('','areaid')+'\n'+btn.getAttributeNS('','productid')+'\n'+btn.getAttributeNS('','qty'));
                MXfer.SubmitSingleXfer(frmName);

            } else {
                alert('Fail to add item ' + sku + ' to shopping cart, please re-enter.');

            }
        },
        init: function() {
            //		if (Ext.get('vsAddCart')){
            //			this.AddVSItemToCart();
            //		}


            // if this is the Ominture add cart page


            if (Ext.get('searchForm')) {
                //alert('a');
                //var frm = Ext.select('form[id=form_423]');
                //if (frm){
                //	alert(frm.elements[0].labelid.value+","+frm.elements[0].productid.value+","+frm.elements[0].qty.value);
                //}
                Ext.select("table tbody tr.MenuItem td.MenuItem > a:contains(Rapid Price Quote)").parent().el.dom.parentNode.parentNode.style.display = 'none';

            }
            else {



                txtEles = Ext.select('table.tableborder tr td >input[type=text]');

                this.InitTxtQty();

                vAddToCart = Ext.get("btnAddToCart");
                vAddToCart2 = Ext.get("btnAddToCart2");
                tf = Ext.get("proddetailBox");

                if (vAddToCart) {
                    vAddToCart.on('click', this.BuildXML);

                }
                if (vAddToCart2) {
                    vAddToCart2.on('click', this.BuildXML);
                }

                if (txtEles.elements.length == 0 && txtElesPriceConf_old.elements.length == 0 && txtElesPriceConf.elements.length == 0) {
                    this.SetAddToCartVisible(false);
                }



                if (tf) {
                    //tf.on('keypress',this.EnterKey,this,true);
                    tf.on(Ext.isIE ? 'keypress' : 'keydown', this.EnterKey, this, true);

                }
            }


        },
        InitTxtQty: function() {

            //if (txtElesPriceConf==null || txtElesPriceConf.elements.length==0){
            txtElesPriceConf_old = Ext.select('table tr td.dark >input[type=text]');
            txtElesPriceConf = Ext.select('table.configtableborder tr td >input[type=text]');
            //}

            txtEles.on('blur', this.ValidateQty);
            txtEles.on('focus', this.SelectText);

            //for new price conigurator
            if (txtElesPriceConf.elements.length > 0) {
                txtElesPriceConf.on('blur', this.ValidateQty);
                txtElesPriceConf.on('focus', this.SelectText);
                //this.SetAddToCartVisible(true);

            }
            // for old price configurator
            if (txtElesPriceConf_old.elements.length > 0) {
                txtElesPriceConf_old.on('blur', this.ValidateQty);
                txtElesPriceConf_old.on('focus', this.SelectText);
                this.SetAddToCartVisible(true);

            }

        },

        SetAddToCartVisible: function(bShow) {
            if (vAddToCart) {
                vAddToCart.setVisible(bShow);

            }

            if (vAddToCart2) {
                vAddToCart2.setVisible(bShow);
            }
        },

        ValidateQty: function(e, target, o) {
            // if qty is not numeric
            if ((!IsNumeric(this.value) && this.value.trim().length > 0) || this.value < 0) {
                Ext.fly(this).frame('red', 1);
                var o = Ext.get(this);
                setTimeout(function() {
                    if (o.isVisible()) {
                        o.focus();
                    }
                }, 500);
            }

        },
        SelectText: function(e) {
            this.select();
        },

        EnterKey: function(e) {
            var bEnter = e.getCharCode();
            if (bEnter == e.RETURN) {

                MXfer.BuildXML();
            }
        },



        BuildXML: function() {
            //var sItemID="";
            //var txtItem;
            var sXML;
            //var sElement="";
            var sAttribute;
            //var areaId=-1;
            //var qty=-1;
            var sMaterial = "";
            var sMaterials = "";
            // xml format
            // <Materials>
            //		<Material>
            //			<Name/>
            //			<AreaID/>
            //			<Quantity/>
            //		</Material>
            //	</Materials>
            sXML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
            sElement = "\n";
            var i = 0;
            var j = 0;

            for (i = 0; i < txtEles.elements.length; i++) {
                sMaterial += MXfer.BuildMaterialNode(txtEles.elements[i]);

            }

            for (j = 0; j < txtElesPriceConf.elements.length; j++) {
                sMaterial += MXfer.BuildMaterialNode(txtElesPriceConf.elements[j]);

            }


            if (txtElesPriceConf_old.elements.length > 0) {
                sMaterial += MXfer.BuildMaterialNode(txtElesPriceConf_old.elements[0]);
            }


            if (sMaterial != "") {
                sXML += element("Materials", sMaterial, "");
                //sAttribute = {language:"en"};
                //sXML += element("Materials",sElement,sAttribute);
            }
            else {
                sXML = "";
            }
            //	sXML = "Please select a part with quantity";


            //Ext.example.msg('',sXML,'');
            //alert(sXML);		
            //sXML = Ext.urlEncode(sXML);
            sXML = encodeURI(sXML);

          

            
            //alert(sXML);
            MXfer.SubmitMXfer(sXML, GetUId());

            /*
            //var lang = Ext.get("fldLang").getValue();
            var countryCode = readCookie("country");

		if (countryCode == "US"){
            document.forms[0].action="http://usirv-barnad.newport.com:50100/b2c_Newport/b2c/init.do?forward=multipleitemtransfer";
            }
            else{

			document.forms[0].action = "/store/offlineaddproduct.aspx";
            document.forms[0].__VIEWSTATE.name = 'NOVIEWSTATE';
            }
            document.forms[0].submit();
            */
            //

        },
        BuildMaterialNode: function(eleText) {
            var nodeMaterial = "";
            var txtItem = Ext.get(eleText);
            var sElement = "";
            // build xml nodes
            var sItemID = txtItem.getAttributeNS("", "productId");
            var qty = "0";

            if (txtItem.getAttributeNS("", "type") == "text") {
                qty = txtItem.getValue();
            }
            else if (txtItem.getAttributeNS("", "quantity") != "" && txtItem.getAttributeNS("", "quantity") != null) {
                qty = txtItem.getAttributeNS("", "quantity");
            }
            else if (txtItem.getAttributeNS("", "qty") != "" && txtItem.getAttributeNS("", "qty") != null) {
                qty = txtItem.getAttributeNS("", "qty");
            }

            if (qty.length == 0) {
                qty = "0";
            }


            var areaId = txtItem.getAttributeNS("", "areaId");
            if (IsNumeric(qty) > 0 && qty != "0") {
                sElement += element("Name", sItemID, "") + "\n";
                sElement += element("AreaID", areaId, "") + "\n";
                sElement += element("Quantity", qty, "") + "\n";
                nodeMaterial = element("Material", sElement, "") + "\n";
                sElement = "";
            }
            return nodeMaterial;

        },
        AddMultipleItemsSuccessCallback: function(args) {
            location = "/store/offlineviewcart.aspx";
        },
        AddMultipleItemsFailureCallback: function(args) {
            alert('Adding the items failed.  Please try again.');
        },
        SubmitMXfer: function(MXferDoc, UId) {
            //var MXferDoc = Ext.get(mxfer_element_clientid).getValue();
            Ext.get(mxfer_element_clientid).set({ value: MXferDoc });
            Ext.get("productBuyUid").set({ value: UId });

            if (MXferDoc != "") {
                var countryCode = mxfer_var.pricecode;
                var pathEAX = mxfer_var.eaxpath;

                if (countryCode == "US" || countryCode == null) {
                    //submit to SAP cart.
                    frmAddToCart.action = pathEAX;
                    frmAddToCart.submit();
                }
                else {
                    var useAtlas = true;
                    
                    //see if this script is being called while the browser points to the search server, and the country isn't us
                    mylocation = new String(window.location);
                    if (mylocation.length >= mxfer_var.search_server.length && (mxfer_var.countrycode != 'US')) {
                        if (mylocation.substring(0, mxfer_var.search_server.length).toLowerCase() == mxfer_var.search_server.toLowerCase()) {
                            useAtlas = false;
                        }
                    }

                    if (useAtlas) {
                        //call ATLAS page method on aspx page.
                        PageMethods.AddMultipleItems(MXferDoc, this.AddMultipleItemsSuccessCallback, this.AddMultipleItemsFailureCallback);
                    }
                    else {
                        //submit to SAP cart.
                        frmAddToCart.action = mxfer_var.offline_cart_add_url;
                        frmAddToCart.submit();
                    }

                }
            }
            else {
                Ext.MessageBox.alert('', 'Please add item to cart with quantity', '');
                //Ext.example.msg('', "Please add item to cart with quantity", '');
            }



        },

        SubmitSingleXfer: function(obj) {
            // get material, areaid and set qty=1
            var sXML = "";
            if (obj) {
                var sMaterial = MXfer.BuildMaterialNode(obj);

                if (sMaterial != "") {
                    sXML += element("Materials", sMaterial, "");
                }


                sXML = encodeURI(sXML);
                //alert(sXML);
                MXfer.SubmitMXfer(sXML, GetUId());

            }
        }





    }; // end return

} ();

//YAHOO.util.Event.on(window, 'load', MXfer.init, MXfer, true);

if (document.getElementById(mxfer_element_clientid)!=null){
	Ext.EventManager.onDocumentReady(MXfer.init, MXfer, true);
}



function CloseUpdateWindow(){
   if (Ext.MessageBox!=null){
		Ext.MessageBox.hide();
   }
}

//window.setTimeout(MXfer.init,5000);


