jQuery(document).ready(function(){
    j$ = jQuery.noConflict();
    
    if (getCookie("lastUserName") != 0) {
        j$("#_ctl0_email").val(getCookie("lastUserName"));
        j$("#rememberMe").attr("checked", "checked");
        j$("#_ctl0_password").focus();
    }
    j$("#rememberMe").livequery('click', function(){
        var prevEmail = 0;
        if (j$("#rememberMe").attr("checked")) {
            prevEmail = j$("#_ctl0_email").val();
        }
        setCookie("lastUserName", prevEmail, expiryDate);
    });
    var searchBox = jQuery("#SearchBox");
    var searchBoxDefault = "Keyword, vendor...";
    searchBox.focus(function(){
        if (jQuery(this).attr("value") == searchBoxDefault) 
            jQuery(this).attr("value", "");
    });
    searchBox.blur(function(){
        if (jQuery(this).attr("value") == "") 
            jQuery(this).attr("value", searchBoxDefault);
    });
    j$("#addButton").click(function(){
        quickAdd();
    });
    j$("#tblSavedBasketContents").dialog({
        bgiframe: true,
        autoOpen: false,
        height: 400,
        width: 400,
        modal: true,
        buttons: {
            'Close': function(){
                j$(this).dialog('close');
            },
            'Copy': function(){
                copySavedBasket(j$("#currentSavedBasketID").text());
                j$(this).dialog('close');
            },
            'Delete': function(){
                deleteSavedBasket(j$("#currentSavedBasketID").text());
                j$(this).dialog('close');
            },
            'Activate': function(){
                activateSavedBasket(j$("#currentSavedBasketID").text());
                j$(this).dialog('close');
            }
        },
        close: function(){
            j$("#currentBasketName").attr("disabled", "disabled").addClass('none');
            j$("#done").text('Change name');
        }
    });
    j$("#done").toggle(function(){
        j$("#currentBasketName").removeAttr("disabled").focus().removeClass('none');
        j$(this).text('Done');
    }, function(){
        j$("#currentBasketName").attr("disabled", "disabled").addClass('none');
        j$(this).text('Change name');
        changeToNewName();
    });
    
    j$("#rxInfo").dialog({
    	bgiframe: true,
        width: 400,
        autoOpen: false,
        buttons: {
            Ok: function(){
                j$(this).dialog('close');
            }
        }
    }); 
    j$("#withRxButton, #withoutRxButton").hover(
    	function() {
    	    j$(this).addClass("ui-state-hover");
    	},
    	function() {
    	    j$(this).removeClass("ui-state-hover");
    	}
    );
    j$("#withRxButton").click(function() {
    	var bValid=true;    	
        j$("#stateLicenseInput, #datepicker").removeClass("ui-state-error");
    	bValid = bValid && checkLength(j$("#stateLicenseInput"),"",1,30);
        bValid = bValid && checkLength(j$("#datepicker"),"",1,30);
        if (bValid) {
            var newVal = j$("#stateLicenseInput").val() + " exp: " + j$("#datepicker").val();
            j$("#licenseNumberOpp").dialog('close');
            changeOrderItem("stateLicenseInput",newVal);
    	} else {
            j$("#stateLicenseInput, #datepicker").addClass("ui-state-error");
            j$("#stateLicenseInput").focus();
            j$("#tips").text("Please enter a state license number and expiration date or select Option 2 below.")
    	               .css({"color" : "#e14f1c", "font-style" : "italic", "margin" : "10px 0px 0px 5px"});
    	}
    });
    j$("#withoutRxButton").click(function() {
         j$("#licenseNumberOpp").dialog('close');
    	 j$.ajax({
	        data: 'foo=bar',
	        url: 'OnlineOrdering/AJAXasps/removeRxItems.aspx',
	        type: "POST",
	        cache: false,
	        contentType: 'application/x-www-form-urlencoded',
	        complete: function(xhr){
	            loadCouponsInViewCart();
	        }
    	 });
    });
    	
    	
    j$("#licenseNumberOpp").dialog({
		bgiframe: true,
		modal: true,
        width: 510,
        minWidth: 510,
		autoOpen: false,
        draggable: false, 
        beforeclose: function() {
            if (j$("#datepicker").datepicker("isDisabled") == false) {
                j$("#datepicker").datepicker("hide");
				}
			},
		close: function() {
            j$("#stateLicenseInput, #datepicker").removeClass('ui-state-error');
			j$("#tips").text('').removeAttr('style');
		}

    });
    
    j$(function() {
        j$("#datepicker").datepicker({
            changeMonth: true,
            changeYear: true,
            minDate: 0,
            appendText: '(mm/dd/yyyy)',
            showAnim: "",
            beforeShow: function () {
                var z = jQuery(j$("#datepicker")).closest(".ui-dialog").css("z-index") + 4;
                j$("#ui-datepicker-div").css('z-index', z);
            }
        });    
    });
    
    j$("#divInvalidPNPop").dialog({
        bgiframe: true,
        autoOpen: false,
        width: 600,
        height: 400,
        modal: true,
        buttons: {
            Ok: function(){
                j$(this).dialog('close');
            }
        }
    });
    j$("#tblCouponItems").dialog({
        bgiframe: true,
        autoOpen: false,
        modal: true,
        buttons: {
            Ok: function(){
                j$(this).dialog('close');
            }
        }
    });
    j$("#divCallTag").dialog({
        bgiframe: true,
        autoOpen: false,
        modal: true,
        buttons: {
            Submit: function(){
                sendCallTag();
                
                if (j$("#inpCallTagInvText").val() != "" && j$("#inpCallTagBoxesText").val() != "" && j$("#txtCallTagNotes").val() != "") {
                    j$("#inpCallTagInvText").val("");
                    j$("#inpCallTagBoxesText").val("");
                    j$("#txtCallTagNotes").val("");
                    j$(this).dialog('close');
                    document.getElementById("divCallTag").style.visibility = "hidden";
                }
            }
        }
    });
    j$("#details").dialog({
        bgiframe: true,
        autoOpen: false,
        width: 450,
        buttons: {
            Ok: function(){
            
                if (j$("#qtyDetails").val() != "" && j$("#qtyDetails").val() != undefined) {
                    detailsAdd();
                }
                j$(this).dialog('close');
            }
        }
    });
    j$("#divCouponSelections").dialog({
        bgiframe: true,
        autoOpen: false,
        width: 600,
        height: 400,
        modal: true,
        buttons: {
            'Complete Check Out': function(){
                getCheckout();
                j$(this).dialog('close');
            }
        }
    });
    j$("#scanhelp").livequery('click', function(){
        j$("#info").slideToggle();
    });
    j$(".prod-thumbnail img").livequery('load', function(){
    
        if (j$(this).height() > 42) {
            j$(this).height(42);
        }
        
        if (j$(this).width() > 42) {
            j$(this).width(42);
        }
    });
    j$(".prod-thumbnail img").livequery(function(){
        j$(this).attr("border", "0");
    }, function(){
    });
    j$("#divProductItems").livequery(function(){
        j$("#divProductItems div.product-wrapper:even").addClass("striped");
        j$("#divProductItems div.product-details-wrapper:even").addClass("striped");
    });
    j$("div.prod-wrapper:even, div.prod-wrapper-det:even, #tblCheckBasket tr:even, #partsGrid tbody tr:odd").livequery(function(){
        j$(this).addClass("striped");
    });
    
    if (j$("#_ctl0__ctl1_lblGuestName").text() == "guest ") {
        j$("#PartBox").attr("disabled", "disabled");
        j$("#QuantityBox").attr("disabled", "disabled");
        j$("#btnUsageToggle").attr("disabled", "disabled");
    }
    j$("#submitFeedbackBtn").livequery('click', function(){
		pageTracker._trackPageview('/store/feedback/submitFeedback');
        emailFeedback();
    });
    j$("#feedbackLink").livequery('click', function(){		
		resetLeftSide();
        j$("#divFilterBox").empty();
        j$("#_ctl0_StoreMainPane").empty();
        j$("#_ctl0_StoreMainPane").append('<div id="feedbackForm">' +
        '<div class="info"><h2>Send Feedback</h2><div>Thanks for taking the time to share your feedback.</div></div>' +
        '<ul><li><label class="descr" for="feedbackType">Subject</label><div><select id="feedbackType" name="feedbackType" class="field select medium" tabindex="1">' +
        '<option></option><option value="Comment">Comment</option><option value="Question">Question</option><option value="Suggestion">Suggestion</option><option value="Broken Link">Broken Link</option><option value="Bug Report">Bug Report</option><option value="Other">Other</option>' +
        '</select></div></li><li class="section"><h3>How was your experience?</h3><div>The information you provide will be used to help us improve our online store.</div></li>' +
        '<li class="altInstruct"><label class="descr" for="notes">Comments</label><div><textarea id="notes" name="notes" class="field textarea medium" rows="10" cols="50" tabindex="2"></textarea></div>' +
        '<div class="instruct">If this is a bug report please include what you were doing at the time, what steps we need to take to recreate the problem, what you expected to happen and what actually happened.</div></li>' +
        '<li class="buttons"><input id="submitFeedbackBtn" name="submitFeedbackBtn" class="btTxt" type="button" value="Submit"/></li>' +
        '</ul></div>');
        
        if (j$("#_ctl0__ctl1_lblGuestName").text() == "guest ") {
            j$("#feedbackForm ul li:last").prepend("<label class='descr' for='emailBox'>Email</label><div><input id='emailBox' size='30' type='text' /></div>")
        }
    });
    j$("#partsGridLink").livequery('click', loadPartsEntryGrid);
    j$("#partsGrid input").livequery('keypress', function(e){
    
        if (this == e.target) {
        
            return tabOnEnter(this, e);
        }
    });
    j$("#partsGrid input:text:last").livequery('focus', function(e){
        appendPartsGrid();
    });
    j$("#partsGrid input:text").livequery('change', function(e){
        var str = j$(this).attr("id");
        var patt1 = new RegExp(/\d+/);
        var index = patt1.exec(str);
        gridAdd(index);
    });
    j$("#partsGrid input:checkbox, #viewCartTable input:checkbox").livequery('change', function(e){
        var str = j$(this).attr("id");
        var patt1 = new RegExp(/\d+/);
        var index = patt1.exec(str);
        updateMsdsTagRequest(index);
    });
    j$("#partsGrid td:has(label)").livequery(function(){
        j$(this).css("min-width", "110px");
    });
    j$("#partsGrid tbody tr td:eq(3)").livequery(function(){
        j$(this).css("min-width", "200px");
    });
    j$("#partsGrid tr td:last").livequery(function(){
        j$(this).css("text-align", "right");
    });
    j$("#viewCartTable tr:odd").livequery(function(){
        j$(this).addClass("blueStriped");
    });
    j$(".goToPage").livequery('click', jumpToResultsPage);
    j$(".jumpTo").livequery('keypress', function(e){
        if (this == e.target) {
            if (e.keyCode == 13) {
                jumpToResultsPage();
                return false;
            }
        }
    });
    j$(".goToPage").livequery('mouseover', function(e){
        var cssObj = {
            'background-color': 'rgb(110,144,91)',
            'color': '#fff',
            'text-decoration': 'underline',
            'cursor': 'pointer'
        }
        if (j$(".resultCountSpan:first").text() > 20) {
            j$(this).css(cssObj);
        }
    });
    j$(".goToPage").livequery('mouseout', function(e){
        var cssObj = {
            'background-color': '#F2F2F2',
            'color': '#666666',
            'text-decoration': 'none'
        }
        if (j$(".resultCountSpan:first").text() > 20) {
            j$(this).css(cssObj);
        }
    });
    j$(".pagination p").livequery(function(){
        var result = j$(".resultCountSpan:first").text();
        if (result <= 20) {
            j$(this).css('color', '#F2F2F2');
            j$(".pagination input").hide();
        }
    });
});

function emailFeedback(){
    checkForValidSession();
    var notes = j$("#notes").val();
    var subj = j$("#feedbackType").val();
    var email = "";
    if (j$("#_ctl0__ctl1_lblGuestName").text() == "guest ") {
        var email = j$("#emailBox").val()
        notes = notes + " " + email;
    }
    var xmlHttp = new XMLHttpRequest();
    if (xmlHttp) {
        xmlHttp.onreadystatechange = function(){
            if (xmlHttp.readyState == 4 && (xmlHttp.status == 200 || xmlHttp.status == 304)) {
                var xml = xmlHttp.responseXML;
                j$("#_ctl0_StoreMainPane").empty().append("<font size='4'>Thank you for you comments!</font><br/></br><a href=\"javascript:getBrowseListWithCatIcons('CATEGORIESALPHA','nada','nada','nada')\">Continue Shopping</a>");
            }
            if (xmlHttp.readyState == 4 && xmlHttp.status == 500) {
                alert("emailFeedback response status 500");
            }
        }
    }
    var parameter = encodeURI("notes=" + notes + "&feedbackType=" + subj);
    xmlHttp.open('POST', 'OnlineOrdering/AJAXasps/sendUserFeedbackEmail.aspx');
    xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
    xmlHttp.send(parameter);
}

function jumpToResultsPage(){
    var result = j$(".resultCountSpan:first").text();
    result = Math.ceil(result / 20);
    var patternString = /\D/;
    var page = j$(".jumpTo:first").val();
    if (page == '' || page == undefined || page == null) {
        page = j$(".jumpTo:last").val();
    }
    if ((patternString.test(page)) || (page < 1) || (page > result)) {
        alert("Please enter a page number between 1 and " + result);
        page = j$(".jumpTo").val("");
    }
    else {
        var x = (page - 1) * 20;
        var oldCommandStr = j$("#lastCommand").text();
        var searchParams = new Array();
        searchParams = oldCommandStr.split("'");
        var newCommandStr = "getProdList('" + searchParams[1] + "', '" + searchParams[3] + "', '" + searchParams[5] + "', '" + searchParams[7] + "', '" + searchParams[9] + "', '" + x + "')";
        j$("#lastCommand").text(newCommandStr);
        getProdList(searchParams[1], searchParams[3], searchParams[5], searchParams[7], searchParams[9], x);
    }
}

function loadPartsEntryGrid(){
    swirlOn();
    resetLeftSide();
    j$("#ctrQuickAdd").fadeOut("slow");
    j$("#divFilterBox").empty().append("<br /><span class='LargePrint'>Quick Order Entry</span>");
    j$("#_ctl0_StoreMainPane").empty().append("<table id='partsGrid' class='sortable'><thead><tr><th></th><th  class='sorttable_numeric'>Burkhart PN</th><th class='sorttable_numeric'>Qty</th><th>Description</th><th>Vendor</th><th>Price</th></thead><tbody></tbody></table>");
    j$("#_ctl0_StoreMainPane").append("<br /><div class='updateButton'><input type='button' value='Update' onclick='loadPartsEntryGrid(); return false;' /></div>");
    j$.ajax({
        data: 'foo=bar',
        url: 'OnlineOrdering/AJAXasps/updateMiniCart.aspx',
        type: "POST",
        cache: false,
        contentType: 'application/x-www-form-urlencoded',
        complete: function(xhr){
            buildPartsEntryTable(xhr.responseXML);
        }
    });
}

var PartList;
function buildPartsEntryTable(xhr){
    var lineNum = 0;
    PartList = new Array();
    j$(xhr).find("Item").each(function(i){
        var partNum = j$(this).find("PartNumber").text();
        var qty = j$(this).find("Qty").text();
        var regDesc = stringToLowerCapEachWord(j$(this).find("Description").text());
        var vendName = stringToLowerCapEachWord(j$(this).find("VendorName").text());
        var vendorPartNumber = j$(this).find("VendorPN").text();
        if (vendorPartNumber != "") {
            vendorPartNumber = "(" + vendorPartNumber + ")";
        }
        var patt1 = new RegExp("\n");
        var prices = new String(j$(this).find("Price").text());
        var myStr = new String(prices);
        prices = prices.replace(/ü /g, "<br/>");
        lineNum = i + 1;
        j$("#partsGrid tbody").append("<tr><td>" + lineNum + ".</td><td><input class='gridPart' type='text' maxLength='10' size='10' id='gridPart" + i + "' /></td><td><input class='gridQty' type='text' maxLength='3' size='3' id='gridQty" + i + "' /></td><td id='gridDesc" + i + "'>" + regDesc + "</td><td><span id='gridVend" + i + "'>" + vendName + "</span><span class='cartFinePrint' id='vendPN" + i + "'> " + vendorPartNumber + "</span><span class='cartFinePrint' id='boxes" + i + "'><br /><label><input type='checkbox' id='msds" + i + "' name='msds" + i + "' />MSDS</label>  <label><input type='checkbox' id='tags" + i + "' name='tags" + i + "' />Tags</label></span></td><td id='gridPrice" + i + "' class='right'>$" + prices + "</td></tr>");
        j$("#gridPart" + i).attr("value", partNum);
        j$("#gridQty" + i).attr("value", qty);
        
        if (j$(this).find("MSDS").text() == "True") {
            j$("#msds" + i).attr("checked", "checked");
        }
        
        if (j$(this).find("TAGS").text() == "True") {
            j$("#tags" + i).attr("checked", "checked");
        }
        objLine = new Object();
        objLine['PartNumber'] = partNum;
        objLine['Quantity'] = qty;
        objLine['Line'] = lineNum;
        PartList[PartList.length] = objLine;
    });
    
    //sorttable.makeSortable(document.getElementById("partsGrid"));
    if (lineNum < 20) {
        for (var i = lineNum; i < 20; i++) {
            num = i + 1;
            appendPartsGrid(i);
        }
    }
    else {
        appendPartsGrid();
    }
    swirlOff();
}

function appendPartsGrid(theIndex){
    var theLineNum = '';
    if (theIndex == undefined) {
        var str = j$("#partsGrid input:last").attr("id");
        var patt1 = new RegExp(/\d+/);
        theIndex = Number(patt1.exec(str)) + 1;
    }
    theLineNum = Number(theIndex) + 1;
    j$("#partsGrid tbody").append("<tr><td>" + theLineNum + ".</td><td><input class='gridPart' type='text' maxLength='10' size='10' id='gridPart" + theIndex + "' /></td><td><input class='gridQty' type='text' maxLength='3' size='3' id='gridQty" + theIndex + "' /></td><td id='gridDesc" + theIndex + "'></td><td><span id='gridVend" + theIndex + "'></span><span class='cartFinePrint'id='vendPN" + theIndex + "'></span><span class='cartFinePrint' id='boxes" + theIndex + "'><br /><label><input type='checkbox' id='msds" + theIndex + "' name='msds" + theIndex + "' />MSDS</label>  <label><input type='checkbox' id='tags" + theIndex + "' name='tags" + theIndex + "' />Tags</label></span></td><td id='gridPrice" + theIndex + "' class='right'></td></tr>");
}

function gridAdd(index){
    index = Number(index);
    newPart = j$("#gridPart" + index).val();
    newQty = j$("#gridQty" + index).val();
    if (newQty == null || newQty == "" || newQty == undefined) {
        j$("#gridQty" + index).val(1);
        newQty = 1;
    }
    if (checkQty(newQty)) {
        if (noDuplicates(newPart, index + 1)) {
			pageTracker._trackEvent('Cart', 'Add', 'EntryGrid');
            j$.ajax({
                data: 'PartNumber=' + newPart,
                url: 'OnlineOrdering/AJAXasps/verifyPart.aspx',
                type: "POST",
                contentType: 'application/x-www-form-urlencoded',
                complete: function(xhr){
                    var isInvalid = j$(xhr.responseXML).find("InvalidPN").text();
                    
                    if (isInvalid != "N") {
                        alert(j$(xhr.responseXML).find("InvalidDesc").text());
                        clearGridRow(index);
                    }
                    else {
                        if (j$("#partsGrid tr").size() == PartList.length) {
                            var num = PartList.length + 1;
                            appendPartsGrid(num);
                        }
                        addPart(newPart, newQty);
                        getPartInfo(newPart, newQty, index);
                        appendPartList(newPart, newQty, index + 1);
                    }
                }
            });
        }
        else {
            var partId = j$("#gridPart" + index).attr("id");
            j$("#gridQty" + index).val('');
            j$(partId).select().focus();
        }
    }
    else {
        j$("#gridQty" + index).val('').focus();
    }
}

function updateMsdsTagRequest(index){
    index = Number(index);
    newPart = j$("#gridPart" + index).val();
    if (newPart == undefined) {
        newPart = j$("#tdPart" + index).text();
    }
    newQty = j$("#gridQty" + index).val();
    if (newQty == undefined) {
        newQty = j$("#qty" + index).val();
    }
    if (checkQty(newQty)) {
        if (noDuplicates(newPart, index + 1)) {
            newMsds = j$("#msds" + index).is(":checked");
            newTags = j$("#tags" + index).is(":checked");
            j$.ajax({
                data: 'partNumber=' + newPart + '&qty=' + newQty + '&msds=' + newMsds + '&tags=' + newTags,
                url: 'OnlineOrdering/AJAXasps/updateBasket.aspx',
                type: 'POST',
                contentType: 'application/x-www-form-urlencoded',
                complete: function(xhr){
                    if (j$(xhr.responseXML).find("SuccessStatus").text() != "Basket Updated") {
                        alert("Error. Basket was not updated.")
                    }
                }
            });
        }
    }
}

function clearGridRow(rowNum){
    j$("#gridQty" + rowNum).val('');
    j$("#gridPart" + rowNum).select().focus();
    j$("#gridDesc" + rowNum + ", #gridPrice" + rowNum + ", #gridVend" + rowNum + ", #vendPN" + rowNum).empty();
    j$("#boxes" + rowNum + " input:checkbox").removeAttr("checked");
}

function noDuplicates(part, lineNum){
    if (typeof(part) != 'undefined') {
        if (part != "") {
            for (var line in PartList) {
                if (PartList[line].PartNumber == part) {
                    if (PartList[line].Line != lineNum) {
                        alert('Duplicate Part: ' + PartList[line].PartNumber + '\r   Qty: ' + PartList[line].Quantity + '\r   Line: ' + PartList[line].Line);
                        return false;
                    }
                }
            }
        }
    }
    return true;
}

function appendPartList(partBox, qtyBox, lineNum){
    for (var line in PartList) {
        if ((PartList[line].PartNumber == partBox) || ((line * 1 + 1) == lineNum)) {
            PartList[line].PartNumber = partBox;
            PartList[line].Quantity = qtyBox;
            return true;
        }
    }
    objLine = new Object();
    objLine["PartNumber"] = partBox;
    objLine["Quantity"] = qtyBox;
    objLine["Line"] = lineNum;
    PartList[PartList.length] = objLine;
}

function getPartInfo(part, qty, index){
    cust = j$("#_ctl0__ctl1_lblCustId").text();
    userno = j$("#_ctl0__ctl1_lblUserNo").text();
    xmlHttp = new XMLHttpRequest();
    var SoapServer = "./webservice/product.asmx";
    var strResponse;
    var bMoveOn = true;
    var requestString = "";
    var editIndex;
    if (xmlHttp) {
        try {
            xmlHttp.open("POST", SoapServer, true);
        } 
        catch (e) {
            alert("Connection Open Error : " + e);
            bMoveOn = false;
        }
        if (bMoveOn) {
            xmlHttp.onreadystatechange = function(){
                if (xmlHttp.readyState == 4) {
                    var xhr = xmlHttp.responseXML;
                    j$("#gridDesc" + index).text(stringToLowerCapEachWord(j$(xhr).find("PartDescription").text()));
                    j$("#gridVend" + index).text(stringToLowerCapEachWord(j$(xhr).find("VendorName").text()));
                    j$("#gridAvail" + index).text(stringToLowerCapEachWord(j$(xhr).find("Available").text()));
                    j$("#gridPrice" + index).text("$" + j$(xhr).find("Price").text());
                    var vendorPartNumber = j$(xhr).find("CustomerPartNumber").text();
                    
                    if (vendorPartNumber != "") {
                        vendorPartNumber = " (" + vendorPartNumber + ")";
                    }
                    j$("#vendPN" + index).text(vendorPartNumber);
                }
            }
        }
    }
    requestString = SoapString(part, qty, cust, userno)
    xmlHttp.setRequestHeader('Host', 'advancedware.com')
    xmlHttp.setRequestHeader('Content-Type', 'text/xml; charset=utf-8')
    xmlHttp.setRequestHeader('Content-Length', requestString.length)
    xmlHttp.setRequestHeader('SOAPAction', '"http://advancedware.com//Product/PartPrice"')
    try {
        xmlHttp.send(requestString);
    } 
    catch (e) {
        alert('Send Error : ' + e);
    }
    return true;
}

function SoapString(part, qty, customer, userno){
    var tempString = '';
    tempString = '<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">'
    tempString = tempString + '  <soap:Body>'
    tempString = tempString + ' <PartPrice xmlns="http://advancedware.com//Product">'
    tempString = tempString + '   <part>' + part + '</part>'
    tempString = tempString + '   <qty>' + qty + '</qty>'
    tempString = tempString + '   <customer>' + customer + '</customer>'
    tempString = tempString + '   <userno>' + userno + '</userno>'
    tempString = tempString + ' </PartPrice>'
    tempString = tempString + '  </soap:Body>'
    tempString = tempString + '</soap:Envelope>'
    return tempString
}

function checkQty(inVal){
    if (isNaN(inVal)) {
        alert(inVal + ' is not a numeric value');
        return false;
    }
    else {
        if (inVal < 999) {
            if (inVal < 0) {
                alert('Qty cannot be negative');
                return false;
            }
        }
        else {
            alert('Qty is too large');
            return false;
        }
    }
    return true;
}

function detailsAdd(){
    checkForValidSession();
	pageTracker._trackEvent('Cart', 'Add', 'Details');
    pn = j$("#pnDetails").text();
    qu = j$("#qtyDetails").val();
    if (qu != null && qu != "" && qu != undefined) {
        if (checkQty(qu)) {
            addPart(pn, qu);
        }
    }
    j$("#details").dialog('close');
}

function quickAdd(){
    checkForValidSession();
	pageTracker._trackEvent('Cart', 'Add', 'LeftNav');
    var partBox = document.getElementById("PartBox");
    var qtyBox = document.getElementById("QuantityBox");
    var qtyBoxValue = j$(qtyBox).val();
    
    if (checkQty(qtyBoxValue)) {
        var newPart = partBox.value;
        var newQty = qtyBox.value;
        VerifyPartNumber(newPart, newQty);
        partBox.value = "";
        qtyBox.value = "";
        document.getElementById("PartBox").focus();
    }
}

function addPart(newPart, newQty){
	var xmlHttp = new XMLHttpRequest();
    if (xmlHttp) {
        xmlHttp.onreadystatechange = function(){
        
            if (xmlHttp.readyState == 4 && (xmlHttp.status == 200 || xmlHttp.status == 304)) {
                loadMiniCart();
            }
            
            if (xmlHttp.readyState == 4 && xmlHttp.status == 500) {
                alert("addPart response status 500");
            }
        }
    }
    var parameter = encodeURI('partNumber=' + newPart + '&qty=' + newQty);
    xmlHttp.open('POST', 'OnlineOrdering/AJAXasps/updateBasket.aspx');
    xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
    xmlHttp.send(parameter);
}

function cursor_waitOO(){
    document.body.style.cursor = 'wait';
}

function cursor_clearOO(){
    document.body.style.cursor = 'default';
}

function updateScannerMessageOO(theMessage){
    j$("#theScannerMessage").text(theMessage);
}

function startit(){
    checkForValidSession();
    resetLeftSide();
    j$("#divFilterBox").empty();
    j$("#tblQuickAdd td:last a").blur();
    j$("#_ctl0_StoreMainPane").empty().append("<div class='prod-wrapper' id='scanner-div' name='scanner-div'>");
    j$("#scanner-div").append("<div class='prod-content' id='scanner-content' name='scanner-content'><div class='prod-picture'><img alt='Scanner Image' src='img/KeychainScannerImage.gif'></div><div class='prod-main-desc-det'><h1>EasyScan from Burkhart</h1><h2>Automated ordering from your EasyScan Catalog</h2><a href='javascript:getScansNowOO();' onclick=\"javascript:pageTracker._trackEvent('EasyScan', 'Send' ,'HelpPage');\"><img border='none' id='send_scans_button' name='send_scans_button' alt='Click here to upload scans' src='img/Send_scans_button.gif' /></a></div></div>");
    j$("#scanner-content").append("<div id='theScannerMessage' name='theScannerMessage' class='prod-sub-desc-det'>Simply connect your scanner and click the Send Scans Now button</div>");
    j$("#scanner-content").append("<div id='scanhelp' name='scanhelp' class='prod-sub-desc-det'><a href='#' onmouseover='document.scanhelpbtn.src=\"img/scanhelp_rollover.gif\";' onmouseout='document.scanhelpbtn.src=\"img/scanhelp.gif\";'><img border='none' id='scanhelpbtn' name='scanhelpbtn' src='img/scanhelp.gif' /></a></div>");
    j$("#scanner-content").append("<div id='info'><ul><li><a href='http://store.burkhartdental.com/burkhart/includes/ScannerSetup.msi'><u><b>Install Scanner Software</b></u></a> - You must install the needed drivers and software if this is your first time using the scanner.</li><br><li>System Requirements<ul><li>Windows 2000, Windows XP, or Vista</li><li>Internet Explorer 5+.  If you do not have Internet Explorer <a target='_blank' href='http://www.microsoft.com/windows/downloads/ie/getitnow.mspx'><u>click here</u></a> to install from Microsoft's website. </li></ul></li><br><li>How to install the scanner software: <a href='includes/symbolinstall.pdf' target='_blank'><strong><u>Scanner Installation Instructions</u></strong></a> (.pdf, 661KB)</li><br><li>How to use your scanner to create an order online: <a href='includes/symbolusermanual.pdf' target='_blank'><strong><u>Scanner User Manual</u></strong></a> (.pdf, 2.15MB)</li><br> <li>Note -- Some bluetooth applications conflict with the keychain barcode scanner.  If you are having trouble with the scanner and your computer supports bluetooth, try uninstalling the bluetooth software.</li><br>Links open in a new tab/window.</u></div>");
    j$("#scanner-div").append("<div class='prod-bottom'></div>");
}

function getScansNowOO(){
    if (BrowserDetect.browser == 'Explorer') {
        cursor_waitOO();
        try {
            myObj = new ActiveXObject("BurkhartScanner.Symbol");
            updateScannerMessageOO("Reading Barcodes...");
            var scannerFound = myObj.OpenCom;
            if (scannerFound == "true") {
                setTimeout("updateCartOO()", 300);
            }
            else {
                alert("Error.  Please reconnect the scanner and try again.");
            }
        } 
        catch (e) {
            alert('Error. This could be caused by the following: \n 1. Security settings do not allow for activeXobjects on this page \n 2. Drivers need to be installed.  Click the "Installation Instructions and Technical Information" button and then click "Install Scanner Software."');
        }
        updateScannerMessageOO("Simply connect your scanner and click the Send Scans Now button");
        cursor_clearOO();
    }
    else {
        alert("I'm sorry, the barcode scanner is only available in Internet Explorer at this time");
    }
}

function updateCartOO(){
    var barcodes = myObj.Barcodes;
    if (barcodes == "empty") {
        alert("No barcodes found");
    }
    else {
        updateScannerMessageOO("Updating cart...");
        var xmlHttp = new XMLHttpRequest();
        if (xmlHttp) {
            xmlHttp.onreadystatechange = function(){
                if (xmlHttp.readyState == 4 && (xmlHttp.status == 200 || xmlHttp.status == 304)) {
                    var returnXml = xmlHttp.responseXML;
                    successStatus = returnXml.getElementsByTagName("SuccessStatus");
                    badScansMessage = getTextFromThisNode(successStatus, 0);
                    if (badScansMessage != "winna") {
                        alert(badScansMessage);
                    }
                    updateScannerMessageOO("Simply connect your scanner and click the Send Scans Now button");
                    loadMiniCart();
                }
                if (xmlHttp.readyState == 4 && xmlHttp.status == 500) {
                    alert("parseBarcodes response status " + xmlHttp.status + " " + xmlHttp.statusText);
                }
            }
        }
        var parameter = encodeURI('scans=' + barcodes);
        xmlHttp.open('POST', 'OnlineOrdering/AJAXasps/parseScans.aspx');
        xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
        xmlHttp.send(parameter);
    }
}

function getProductMeta(productId){
    checkForValidSession();
    var xmlHttp = new XMLHttpRequest();
    if (xmlHttp) {
        xmlHttp.onreadystatechange = function(){
            if (xmlHttp.readyState == 4 && (xmlHttp.status == 200 || xmlHttp.status == 304)) {
                var returnXml = xmlHttp.responseXML;
                var thisSavedBasketIDNode = returnXml.getElementsByTagName("SaveBasketId");
                var thisOrderNameNode = returnXml.getElementsByTagName("OrderName");
                var thisPONumberNode = returnXml.getElementsByTagName("PONumber");
                var thisOrderedByNode = returnXml.getElementsByTagName("OrderedBy");
                var thisOrderedOnNode = returnXml.getElementsByTagName("OrderedOn");
                var i = 0;
                var thisSavedBasketID = getTextFromThisNode(thisSavedBasketIDNode, i);
                var thisOrderName = getTextFromThisNode(thisOrderNameNode, i);
                var thisPONumber = getTextFromThisNode(thisPONumberNode, i);
                var thisOrderedBy = getTextFromThisNode(thisOrderedByNode, i);
                var thisOrderedOn = getTextFromThisNode(thisOrderedOnNode, i);
                var new_table = document.createElement("table");
                var new_tbody = document.createElement("tbody");
                new_table.id = "tblSavedBasketContents";
                while (document.getElementById("mainPopOver").hasChildNodes()) {
                    document.getElementById("mainPopOver").removeChild(document.getElementById("mainPopOver").firstChild);
                }
                if (thisOrderName != "") {
                    var new_row = document.createElement("tr");
                    new_row.id = "trBasketMetaOrderName";
                    var spanForId = document.createElement("span");
                    spanForId.id = "spanBasketMetaName";
                    var new_hidden = document.createElement("input")
                    new_hidden.type = "hidden";
                    new_hidden.value = thisSavedBasketID;
                    new_hidden.id = "currentSavedBasketID";
                    spanForId.appendChild(new_hidden);
                    var spanForId2 = document.createElement("span");
                    spanForId2.id = "currentBasketName";
                    var new_text2 = document.createTextNode(thisOrderName);
                    var new_text = document.createTextNode("Order Name: ");
                    spanForId.appendChild(new_text);
                    spanForId2.appendChild(new_text2);
                    spanForId.appendChild(spanForId2);
                    var new_button = document.createElement("button");
                    new_button.id = "btnChangeBasketName";
                    new_text = document.createTextNode("Change Name");
                    new_button.appendChild(new_text);
                    addEvent(new_button, "click", changeToChangeName);
                    spanForId.appendChild(new_button);
                    createTableCell("tdBasketMetaOrderName", "tdBasketMetaOrderName", spanForId, new_row);
                    new_tbody.appendChild(new_row)
                    //
                    var new_row = document.createElement("tr");
                    new_row.id = "trBasketMetaPO"
                    var new_text = document.createTextNode("PO Number: " + thisPONumber);
                    createTableCell("tdBasketMetaPO", "tdBasketMetaPO", new_text, new_row);
                    new_tbody.appendChild(new_row)
                    //
                    var new_row = document.createElement("tr");
                    new_row.id = "trBasketMetaOB"
                    var new_text = document.createTextNode("Ordered By: " + thisOrderedBy);
                    createTableCell("tdBasketMetaOB", "tdBasketMetaOB", new_text, new_row);
                    new_tbody.appendChild(new_row)
                    //
                    var new_row = document.createElement("tr");
                    new_row.id = "trBasketMetaOO"
                    var new_text = document.createTextNode("Ordered On: " + thisOrderedOn);
                    createTableCell("tdBasketMetaOO", "tdBasketMetaOO", new_text, new_row);
                    new_tbody.appendChild(new_row);
                    //
                    new_table.appendChild(new_tbody);
                    document.getElementById("mainPopOver").appendChild(new_table);
                    document.getElementById("mainPopOver").style.visibility = "visible";
                    getSavedBasketInfo(thisSavedBasketID)
                }
            }
            if (xmlHttp.readyState == 4 && xmlHttp.status == 500) {
                alert("getSavedBasketInfo response status 500"); //fixme
            }
        }
        var parameter = encodeURI("SaveBasketId=" + savedBasketId);
        xmlHttp.open('POST', 'OnlineOrdering/AJAXasps/getBasketMeta.aspx'); // many server-side scripts require the Content-Type to be set: 
        xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
        xmlHttp.send(parameter);
    }
}

function onClickShowProductDetails(e){
    re = /MSIE/;
    if (re.exec(navigator.userAgent)) {
        getProductInfo(e.srcElement.childNodes.item(0).nodeValue);
    }
    else {
        getProductInfo(e.target.childNodes.item(0).nodeValue);
    }
}

function getNextElement(field){
    var formElements = j$("#partsGrid input:text")
    for (var e = 0; e < formElements.length; e++) 
        if (field == formElements[e]) 
            break;
    
    return formElements[++e % formElements.length];
}

function tabOnEnter(field, evt){
    var keyCode = document.layers ? evt.which : document.all ? evt.keyCode : evt.keyCode;
    if (keyCode != 13) {
        return true;
    }
    else {
        getNextElement(field).focus();
        getNextElement(field).select();
        return false;
    }
}
