var startAjax=false;
var cuUrl = "";
var lastUrl="";

function makeRequest(url, tipoRis,  callAsync)
{
    var isAsync=true;
    var isCallAsync =false;       
    
    DisplayDivNone('div_languages');
    var currentTime = new Date()
    
    if (callAsync!== undefined) 
        isCallAsync=callAsync;
    else
        isCallAsync=false;
    
	if (!isCallAsync && startAjax == true)
	{
		if (url.indexOf("'")>-1 && url.indexOf("\\'")==-1) url=replaceAll(url,"'", "\\'");//[BV] 30/06/2010
	    setTimeout("makeRequest('"+url+"', '"+tipoRis+"',"+callAsync+")",50);//[BV] 28/06/2010
	    return;
	}
	if (!isCallAsync) startAjax = true;
	
	lastUrl=url;
	url = url.replace("|", "?");
	url+="&time='"+currentTime.getTime()+"'";
	
	cuUrl=url;
	
    var ajax = new AJAXInteraction(url, tipoRis, isCallAsync,isAsync);
    if (!ajax)
    {
       startAjax=false;
       DisplayOnLoading(0);
       return false;
    }
	ajax.send(null);
	if (!isAsync)
    {
		ajax.procReq();
	}
}

function AJAXInteraction(url,caller, callAsync,async) 
{
  var tipoRis = caller;
  var url = url;
  var ajaxCallAsync=callAsync;
  var ajaxIsAsync=async;
  var req = init();
  
  if (ajaxIsAsync)
  {
  	req.onreadystatechange = processRequest;
  }
  
  function init() 
  {
    if (window.XMLHttpRequest) // Mozilla, Safari,...
    {
      return new XMLHttpRequest();
    } 
    else if (window.ActiveXObject) // IE
    { 
      try 
      {
           return new ActiveXObject("Msxml2.XMLHTTP");
      } 
      catch (e) 
      {
        try 
        {
               return new ActiveXObject("Microsoft.XMLHTTP");
        } 
        catch (e) 
        {
            return;
        }
      }
    }
  }
    
  function processRequest () 
  {
    if (ajaxCallAsync) return;
    
    if (req.readyState == 4) 
    {
        if (req.status)
        {
            if (req.status == 200) 
            {
                postProcess(req.responseText);
                http_request = null;
                startAjax=false;
            } 
            else 
            {
                DisplayOnLoading(0);
                //alert("There was a problem with the URL:\n"+cuUrl);
                //makeErrorMex("There was a problem with the URL:\n"+cuUrl+"\n "+req.status);
                //[BV] 09/10/2009 Scarto l'errore "pagina non trovata" perchè è il caso di una chiamata ajax che ritorna sulla pagina 
                //makeErrorMex(MEX_GENERIC_ERROR);
                
                if (req.status != 404)
                {
                    if (isMobile)
                        makeErrorMobile(MEX_GENERIC_ERROR, 0);
                    else
                        makeErrorMex(MEX_GENERIC_ERROR);
                }
                startAjax=false;
            }
         }
    }
  }

  this.send = function() 
  {
    req.open("GET", url, ajaxIsAsync);
    req.send(null);
  }
  
  this.procReq = function() 
  {
    processRequest();
  }
  
  function postProcess(responseText)
  {		
	    if (tipoRis != "Add2Log")
	    {
	        if (tipoRis!="ContactUs") curLang=myLangId;
	        
	        eval(responseText);//[BV] 02/09/2009 - Per avere sempre i dati utente aggiornati (sessione scaduta, ricompilazione, ecc.)
	        
	        // 02/09/2009 [FP] - non controllo newSessCurrAndShip perchè potrei aver cambiato 
	        //[BV] 02/02/2010
	        if (tipoRis!="ContactUs")
	        {
    	        // 16/12/2009 [FP] - la SetCurrAndShipHeader è chiamata al termine della SetUserIdentity
    	        //SetCurrAndShipHeader(); // 01/09/2009 [FP] - modifica lo SHIP TO e/o la Valuta in caso sia stata modificata lato server
    	        SetUserIdentity();    // 05/10/2009 [FP] - modifica WhoAmI
    	    }
	        if (tipoRis=="LoadCategory")
                LoadCategory(responseText);
            else if (tipoRis=="LoadDesigners")
                LoadDesigners(responseText);
            else if (tipoRis=="LoadDesignersForSearch")
                LoadDesignersForSearch();
            else if (tipoRis=="SearchLine")
                LoadSearchLine(responseText);
            else if (tipoRis=="SearchPriceRange")
                LoadSearchPriceRange(responseText);
            else if (tipoRis=="LoadCategoryForSearch")
                LoadCategoryForSearch(responseText);
            else if (tipoRis=="GetColors")
                LoadSearchColors(responseText);
            else if (tipoRis=="LoadProdotti")
                LoadProdotti(responseText);
            else if (tipoRis=="LoadSchedaProd")
                LoadSchedaProdotto(responseText);
            else if (tipoRis=="Vetrine" || tipoRis=="VetrineDes")
                LoadVetrine();
            else if (tipoRis=="LoadMyBag")
                LoadMyBag(); // (responseText);
            else if (tipoRis=="LogIn")
                LogInResponse(responseText);//vedi funzione per messaggi ad utente
            else if (tipoRis=="DoLogout")
                DoLogout(responseText);
            else if (tipoRis=="AddToMyBag")
                AddToMyBagOk(responseText);
            else if (tipoRis=="GetUserInfo")
                LoadUserInfo(responseText);
            else if (tipoRis=="GetUserInfoForPayAdd")
                loadUserInfoForPayAdd(); // 25/06/2010 [FP] - (responseText);
            else if (tipoRis=="UserInfoConfirm")
            {
                if (isMobile && inMyAccount)    // 22/04/2010 [FP]
                    ResponseConfirmUser();
                else
                    ConfirmOrderResponse(false);//(responseText, false);
            }
            else if (tipoRis=="CreateOrder" || tipoRis=="CreatePreOrder")
                ResponseCreateOrder(); // (responseText);
            else if (tipoRis=="LoadMyOrd")
                OrderResponse(); //(responseText);
            else if (tipoRis=="MoreInfo")
                if (isMobile)
                    SendResult(fromMail);
                else
                    SendResult(); //(responseText);
            else if (tipoRis=="MoreInfoLanding")
                ResponseLandingMoreInfo(responseText);
            // 19/01/2010 [FP]
            else if (tipoRis=="IncludeHtmLanding")
                ResponseIncludeHtmLanding(responseText);
	        else if (tipoRis=="ApplPromo")
	            ResponseApplPromo(applPromoFromBuy);
                //ApplPromoResponse(responseText);
	        else if (tipoRis=="UserReg")
	        {
                UserReg(responseText);
				if (!isMobile)  // 25/06/2010 [FP]
					ShowUserMsgPopUp(userMsgFlag, userMsgTipo, userMsgID, userMsgAlert);     // 18/12/2009 [FP]
            }
	        else if (tipoRis=="ModAccount")
                AccountModResponse();//(responseText);
            else if (tipoRis=="OrdersHistory")
                OrdersHistoryResponse(responseText);
            else if (tipoRis=="OrdersHistoryDetails")
                OrdersHistoryDetailsResponse(responseText);
            else if (tipoRis=="ForgotPassword")
                forgottPasswordResp(responseText);
            else if (tipoRis=="HomeContent")
                HomeContentResp(responseText);
            else if (tipoRis=="SizeChart")
                LoadSizeChart(responseText);
            else if (tipoRis=="RemoveFromCart")
            {
                // 05/07/2010 [FP] – BackOffice Nuovo Ordine in nome e per conto di un Cliente
                if (inBackOffice)
                    ResponseGetDataUser();
                else
                    CartUpdated();
            }
            else if (tipoRis=="LoadStyle")
                LoadStyle(responseText);
            else if (tipoRis=="GetUserInfoForReg")
            {
                if (isMobile)
                    ResponseUserAccountMobile(false);
                else
                    LoadRegAccount(responseText);
            }
            else if (tipoRis=="GetUserInfoForProfile")
            {
                if (isMobile)
                    ResponseUserAccountMobile(true);
                else
                    LoadMyProfile(responseText);
            }
            else if (tipoRis=="SubscriveNews")
                SubscriveNewsResp();
            else if (tipoRis=="GetMyHistory")
                LoadMyHistory(responseText);
            else if (tipoRis=="ConfirmBankTransfer")
                OrderResponse(); //(responseText);
            else if (tipoRis=="LoadMyOrdFromThanks")
            {
                if (isMobile)
                    ResponseThanksbuy();
                else
                    MakeMexOrdOK(responseText);
            }
            else if (tipoRis=="IntegratePay")
                integratePay(responseText);
            else if (tipoRis=="LoadCurrAndShip")
                LoadCurrAndShip();
            else if (tipoRis=="SaveCurrAndShip")
                UserReg(responseText);
            else if (tipoRis=="Language")
                ResponseLanguage(responseText);
            else if (tipoRis=="productLink")
                productLink(responseText);
            else if (tipoRis=="GetSurvey")  // 28/07/2009 [FP] - Survey
                ResponseSurvey(responseText);
            else if (tipoRis=="SaveSurvey")  // 28/07/2009 [FP] - Survey
                ResponseSaveSurvey(responseText);
            else if (tipoRis=="ContactUs")  // 25/08/2009 [FP] - ContactUs
                ResponseContactUs(); // 29/07/2010 [FP] - (responseText);   
            else if (tipoRis=="chkoutCancel")
                ResponseChkOutCancel();//(responseText);
            else if (tipoRis=="LastNewsletter") // 15/10/2009 [FP] - LastNewsletter
                ResponseNewsLetter();
            else if (tipoRis=="AddGFToShoppingBag") //[BV] 13/11/2009 GIFT CARD
                AddGFToMyBagOk(responseText);
            else if (tipoRis=="msgRead") //[BV] 12/18/2009
                ShowUserMsgPopUp(userMsgFlag, userMsgTipo, userMsgID, userMsgAlert);     // 18/12/2009 [FP]
            else if (tipoRis=="UserMex") //[BV] 12/22/2009
                ShowUserMex(false);     
            else if (tipoRis=="VetrineHtml") //[BV] 02/03/2010
                ShowVetrineInc(responseText);    
            else if (tipoRis=="LineVetrMobile") // 03/03/2010 [FP]
                ResponseVetrineMobile();
            else if (tipoRis=="LineVetrMobileAsync") // 03/03/2010 [FP]
                LineVetrMobileAsync();
            else if (tipoRis=="ListProdMobile")   // 04/03/2010 [FP]
                ResponseListProdMobile(true);
            else if (tipoRis=="ProdMobile")   // 05/03/2010 [FP]
                ResponseProdMobile();
            else if (tipoRis=="ListDesignerMobile") // 11/03/2010 [FP]
                ResponseListDesignerMobile();
            else if (tipoRis=="SearchDesignerMobile") // 31/03/2010 [FP]
                ResponseSearchDesignerMobile();
            else if (tipoRis=="SearchLineMobile") // 31/03/2010 [FP]
                ResponseSearchLineMobile();
            else if (tipoRis=="SearchColorMobile") // 31/03/2010 [FP]
                ResponseSearchColorMobile();
            else if (tipoRis=="SearchPriceMobile") // 31/03/2010 [FP]
                ResponseSearchPriceMobile();
            else if (tipoRis=="AddToMyBagMobile")   // 17/03/2010 [FP]
                ResponseAddToMyBag(false);
            else if (tipoRis=="ChkOutMyBagMobile")   // 17/03/2010 [FP]
                ResponseAddToMyBag(true);
            else if (tipoRis=="VisMyBagMobile") // 18/03/2010 [FP] - carrello
                ResponseVisBagMobile();
	        else if (tipoRis=="ApplPromoMobile")
                ResponseApplPromo(false);
	        else if (tipoRis=="BuyApplPromoMobile")
                ResponseApplPromo(true);
            else if (tipoRis=="GetUserMobile")
            {
                if (isLoggedIn == 0)
                    ResponseSignIn();
                else
                    ResponseUserMobile();
            }
            else if (tipoRis=="GetSignInMobile")
                ResponseUserMobile();
            else if (tipoRis=="OrdersHistoryMobile")    // 03/06/2010 [FP]
                ResponseOrdersMobile(-1);
            else if (tipoRis=="OrderDetailsMobile")     // 03/06/2010 [FP]
                ResponseOrdersHistoryDetails();           
			// 05/07/2010 [FP] – BackOffice Nuovo Ordine in nome e per conto di un Cliente
            else if (tipoRis=="GetDataUser")
                ResponseGetDataUser();
            // 05/07/2010 [FP] – BackOffice Nuovo Ordine in nome e per conto di un Cliente
            else if (tipoRis=="CreatePayAdd")
                ResponseCreatePayAdd();
//            else if (tipoRis=="ConfirmMyBagMobile")
//                ConfirmOrderResponse(false);
// 08/03/2010 [FP] - non è usata newSessCurrAndShip          
//            if (tipoRis!="ContactUs")
//            {  
//                if (newSessCurrAndShip)
//                    newSessCurrAndShip=false;            
//            }
        }
        
        startAjax = false;

	}
}


