var errorElemID = '';

function ajaxShop(parms, errorDivID, response) {
  var url = '/servlet/AJAXActionServlet';
  if (response=='') {
    response = 'ajaxShopResponse';
  }
  var myAjax = new Ajax.Request( url, { method: 'post', parameters: parms, onComplete: eval(response), encoding:'UTF-8' });
}

function ajaxShopPost(formName, errorDivID) {
  var parms = getFormData(formName, '', '', 'false', 'true');
  var url = '/servlet/AJAXActionServlet';
  var myAjax = new Ajax.Request( url, { method: 'post', parameters: parms, onComplete: ajaxShopResponse, encoding:'UTF-8' });
}

function ajaxShopResponse(req) {
  var ajaxResponseElements = req.responseXML.getElementsByTagName('ajaxActionResponse');
  if(ajaxResponseElements.length > 0) {
      publishResponseXML(req, 'xml');
  }
}

function submitAsAJAX(thisForm, errorDivID) {
	if ('function' == typeof window.loadMessage) {
    loadMessage(thisForm);
  }
	errorElemID = errorDivID;
	var parms = getFormData(thisForm.name, '', '', 'false', 'true');
	var url = '/servlet/AJAXActionServlet';
	//alert(parms);
	//ajaxSendRequest('/servlet/AJAXActionServlet?'+parms, 'POST', errorDivID, 'actionprocessed', 'xml', 'actionParse', '', '', '', 'false');
	var myAjax = new Ajax.Request( url, { method: 'post', parameters: parms, onComplete: ajaxShopResponse, encoding:'UTF-8' });
}

function showLoadingMsg() {

}

function closeLoadingMsg() {
	if ('function' == typeof window.removeLoadMessage) {
    removeLoadMessage();
  }
}

function actionParse() {
   switch (xmlObj.readyState) {
        case 2, 3:
            showLoadingMsg();
            break;
        case 4:
            closeLoadingMsg();
            if(thisdebug == 'true') {
                alert(xmlObj.status);
            }
            if (xmlObj.status == 200) {
                if(thisdebug == 'true') {
                    alert("thisreturnas: "+thisreturnas);
                }
                if(thisreturnas == 'xml') {
                    if(thisdebug == 'true') {
                       alert("returned: "+xmlObj.responseText);
                    }

                    var ajaxResponseElements = xmlObj.responseXML.getElementsByTagName('ajaxActionResponse');
                    if(ajaxResponseElements.length > 0) {
						publishResponseXML(xmlObj, 'xml');
                    }
 
                }
                else if(thisreturnas == 'text') {

                }
            }
            else if (xmlObj.status == 404) {
                setErrorMessage(errorElemID, "ERROR: "+xmlObj.status);
            }
            else if (xmlObj.status == 500) {
                setErrorMessage(errorElemID, "ERROR: "+xmlObj.status);
            }
            xmlObj = null;
            break;
    }
}

function publishResponseXML(obj,tag){
	if ('function' == typeof window.removeLoadMessage) {
    removeLoadMessage();
  }
	var respXMLNodes =  obj.responseXML.getElementsByTagName(tag);
	var respXMLNode = respXMLNodes[0];
	var browser=navigator.appName;
	//alert(browser);
	//alert('respXMLNode.name '+respXMLNode.nodeName);
	
	// each child node of the response xml should be published 
	// to the document when a div element ID matches the child's node name
	var nodes = respXMLNode.childNodes;
	//alert('nodes'+nodes);
	for(var i=0; i<nodes.length; i++) {
		var nodeName = nodes[i].nodeName;
		//alert('nodeName'+nodeName);
		var thisSeg = nodeName;
		if(nodeName == 'error') {
			//process errors
			//alert('setting error div '+errorElemID+' as segment '+thisSeg);
			thisSeg = errorElemID;
			// is element/container with node name exist in document
			//alert(document.getElementById(thisSeg));
			if(document.getElementById(thisSeg)) {
				var nodeVal = '';
				var childNodes = nodes[i].childNodes;
				document.getElementById(thisSeg).innerHTML = "";
				for(var j=0; j<childNodes.length; j++) {
					
					var displayName = getNodeValue(childNodes[j], 'DisplayName');
					if (!displayName || displayName.length ==0 || displayName == 'null') {
						 displayName = '';
					} else {
						displayName += ' ';
					}
					
					nodeVal = nodeVal + displayName + getNodeValue(childNodes[j], 'Msg') + '<br/>';
				}
				
				var returnHtml = nodeVal.replace("<![CDATA[", "");
				returnHtml = returnHtml.replace("]]>", "");
				
				document.getElementById(thisSeg).innerHTML = returnHtml;
        writeScriptTagsToDOM(thisSeg);
        document.getElementById(thisSeg).focus();
			} else {
			
			}
		} else {
			// process display
			// is element/container with node name exist in document
			if(document.getElementById(thisSeg)) {
				var nodeVal = '';
				var childNodes = nodes[i].childNodes;
				for(var j=0; j<childNodes.length; j++) {
					if(browser=="Netscape") {
						nodeVal += (new XMLSerializer()).serializeToString(childNodes[j]);
					} else {
						nodeVal += childNodes[j].xml;
					}
				}
				var returnHtml = nodeVal.replace("<![CDATA[", "");
				while (returnHtml.indexOf("<![CDATA[") > -1) {
					returnHtml = returnHtml.replace("<![CDATA[", "");
				}
				while (returnHtml.indexOf("]]>") > -1) {
					returnHtml = returnHtml.replace("]]>", "");
				}
				document.getElementById(thisSeg).innerHTML = returnHtml;
	            writeScriptTagsToDOM(thisSeg);
			}
		}
	}
	//var nodeVal = (new XMLSerializer()).serializeToString(nodes[0]);
	//document.getElementById("testdom").innerHTML = nodeVal;
	return nodeVal;
}

function getNodeValue(thisNode, qryNodeName) {
	var qryNode = thisNode.getElementsByTagName(qryNodeName);
	var nodes = qryNode[0].childNodes;
	var browser=navigator.appName;
	var nodeVal = '';
	if(nodes && nodes.length > 0) {
		if(browser=="Netscape") {
			nodeVal += (new XMLSerializer()).serializeToString(nodes[0]);
		} else {
			nodeVal += nodes[0].xml;
		}
	}
	return nodeVal;
}

function addAJAXEventToForm(formName, errorDivID) {
	var forms = document.getElementsByTagName('form');
	for (var i=0; i < forms.length; i++) {
		var tempForm = forms[i];
		if(tempForm.name == formName) {
			tempForm.onsubmit = function(){submitAsAJAX(this, errorDivID); return false;}
			tempForm.submit = function(){submitAsAJAX(this, errorDivID); return false;}
		}
	}
}

function openCheckoutHref(thisHref) {
	if(ajaxActionEnabled && ajaxActionEnabled == 'true') {
		var errorDivID = "defaultErrorDivID";
		var parms = thisHref.substring(thisHref.indexOf("?") + 1);
		//alert(parms);
		//ajaxSendRequest('/servlet/AJAXActionServlet?'+parms, 'POST', errorDivID, 'actionprocessed', 'xml', 'actionParse', '', '', '', 'false');
		var url = '/servlet/AJAXActionServlet';
		var myAjax = new Ajax.Request( url, { method: 'post', parameters: parms, onComplete: ajaxShopResponse, encoding:'UTF-8' });

	} else {
		window.open(thisHref);
	}
}