/*
 * Place for reusable Ajax convenience methods
 */
 function ajaxPost(ajaxMethodName,serializedFormContents,  onSuccessEval, onFailureOrErrorEval) {
     clearPreviousErrorMessages();
     new Ajax.Request(
        "/ams/servlet/ajax",
        {
            method: 'post',
            parameters: { ajaxMethod: ajaxMethodName, serializedFormContents: serializedFormContents},
            onSuccess: function(transport) {
                if(transport.responseText.substring(0,8) == "<!--S-->") {
                    eval(onSuccessEval);
                } else {
                    if (transport.responseText != "")
                    {
                        setErrorMessage(transport.responseText);
                        eval(onFailureOrErrorEval);
                    }
                }
            },
            onFailure: function(transport) {
                eval(onFailureOrErrorEval);
            },
            onException: function(transport) {
                eval(onFailureOrErrorEval);
            }
        }
    );
 }

 function ajaxPostUpdater(ajaxMethodName,serializedFormContents,  onSuccessEval, onFailureOrErrorEval, domElement) {
    clearPreviousErrorMessages();
     new Ajax.Updater(domElement,
        "/ams/servlet/ajax",
        {
            method: 'post',
            parameters: { ajaxMethod: ajaxMethodName, serializedFormContents: serializedFormContents},
            evalScripts: true,
            onSuccess: function(transport) {
                if(transport.responseText.substring(0,8) == "<!--S-->") {
                    eval(onSuccessEval);
                } else {
                    if (transport.responseText != "")
                    {
                        setErrorMessage(transport.responseText);
                        eval(onFailureOrErrorEval);
                    }
                }
            },
            onFailure: function(transport) {
                eval(onFailureOrErrorEval);
            },
            onException: function(transport) {
                eval(onFailureOrErrorEval);
            }
        }
    );
 }

 function ajaxGet(ajaxMethodName, domElement) {
     var cacheBusterValue = new Date().getTime();
     new Ajax.Updater(
        domElement,
        "/ams/servlet/ajax",
        {
            method: 'get',
            parameters: { ajaxMethod: ajaxMethodName, cacheBuster: cacheBusterValue},
            evalScripts: true
        }
    );
 }


 function getProductPrice(pvID,effectiveQty,domElement)
 {
    var cacheBusterValue = new Date().getTime();
    new Ajax.Updater(
        domElement,
        "/ams/getProductPrice.do",
        {
            method: 'get',
            parameters: {cacheBuster: cacheBusterValue,pvID: pvID, effectiveQuantity: effectiveQty},
            evalScripts: true
        }
    );
 }
 
 
function updateElement(elementId, html, append){
	var element = document.getElementById(elementId);
	if(element !=null){
		if(append)
		   element.innerHTML = element.innerHTML+ html;
		else
			element.innerHTML = html;
	}
}

 function sendLoadingAjaxUpdate(url, elementId, params){
		updateElement(elementId, "<center><div style='padding-top:5px;'><img src='skins/default/images/ajax-loader.gif'/></div></center>", false);
		 sendAjaxUpdate(url,elementId,params);
}
 
 function sendAjaxUpdate(url, elementId, params,method){
	 method = (method==null)? 'post':method;
	 new Ajax.Updater(elementId, url, {
		 method: method,
		 evalScripts: true,
		 parameters: params,
		 onFailure: function(response) {
				handleError(response, elementId);
		 },
	     onException: function(response) {
				handleError(response, elementId);
	     }
	});
}

function sendFormAjaxUpdate(url, elementId, form, extraParams){
	var formParams =  Form.serialize(form);
	var params = extraParams;
	if(formParams !=""){
	   params = formParams+ ((extraParams !=null && extraParams !="")? "&"+extraParams:"");
	}
	sendLoadingAjaxUpdate(url,elementId,params);
}

function handleError(response, elementId){
        response.responseText =$(elementId).innerHTML;
		alert("Network problem : "+getStatusMessage(response.status));
}

function getStatusMessage(status){
   var message ="Unknown error";
   if(status == "400")
         message = "The request could not be understood by the server due to malformed syntax";
   else if(status ="500")
   		message  = "Internal Server error"; 
   else if(status ="12029")
         message ="Could not connect to the server. Please try again later..";
   return message;
}

