/***************************/
function CheckAdInstallation(url,userID,password,mode){
   var url="checkAdInstallation.pl?nocache="+Date()+"&url="+escape(url)+"&userID="+userID+"&password="+password+"&mode="+mode;
   httpRequest("GET",url,true);
}


/***************************/
function CheckCodeInstallation(url,alias,db,n,user,site){
   var url="check_code.pl?nocache="+Date()+"&url="+escape(url)+"&alias="+alias+"&db="+db+"&n="+n+"&user="+user+"&site="+site;
   httpRequest("GET",url,true);
}


/***************************/
function CheckUserIdEligibleForAd(userID){
   if (! userID){
      return;
   }
   var url="ajax.pl?nocache="+Date()+"&action=CheckUserIdEligibleForAd&user="+userID;
   httpRequest("GET",url,true);
}


/***************************/
function GetHTML(url){
   httpRequest("GET",'www.web-stat.com/faq.pl',true);
}




/***************************/
function CheckAlpha(object,var_name){
   if (object.value && (! object.value.match(/^\w+$/))){
      alert (var_name+" can only contain letters, numbers or underscores");
      object.focus(); 
   }
}


/***************************/
function CheckURL(object,var_name){
//   if (object.value && object.value != "http://" && (! object.value.match(/(http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/))){
//      alert (object.value+" is not a valid URL");
//      object.focus(); 
//   }
}

/***************************/
function CheckEmail(object){
   var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
   var address = object.value;
   if(address && reg.test(address) == false) {
      alert ("The email address you entered is invalid. An email address should be in the format xxx@xxx.xx Please double-check.");
      object.focus(); 
   }
}


/***************************/
function CheckUserID(userID){
   if (! userID){
      return;
   }
   var url="ajax.pl?nocache="+Date()+"&action=CheckUserID&user="+userID;
   httpRequest("GET",url,true);
}



/***************************/
function CheckUserIDExists(userID){
   if (! userID){
      return;
   }
   var url="ajax.pl?nocache="+Date()+"&action=CheckUserIDExists&user="+userID;
   httpRequest("GET",url,true);
}


/***************************/
function CheckPassword(password,userID){

  if (! password || ! userID){
     return;
  }

   var url="ajax.pl?nocache="+Date()+"&action=CheckPassword&user="+userID+"&password="+password;
   httpRequest("GET",url,true);
}


/***************************/
function RemoveReportFromFavs(report,userID){
   var url="ajax.pl?nocache="+Date()+"&action=RemoveReportFromFavs&user="+userID+"&report="+report;
   httpRequest("GET",url,true);
}


/***************************/
function AddReportToFavs(report,userID){
   var url="ajax.pl?test=2&nocache="+Date()+"&action=AddReportToFavs&user="+userID+"&report="+report;
   httpRequest("GET",url,true);
}








/***************************************
   Wrapper function for constructing a Request object.
   Parameters:
   reqType: The HTTP request type such as GET or POST.
   url: The URL of the server program.
   asynch: Whether to send the request asynchronously or not.

/***************************************/
function httpRequest(reqType,url,asynch){

    //Mozilla-based browsers
    if(window.XMLHttpRequest){
        request = new XMLHttpRequest();
    } else if (window.ActiveXObject){
        request=new ActiveXObject("Msxml2.XMLHTTP");
        if (! request){
            request=new ActiveXObject("Microsoft.XMLHTTP");
        }
     }
    //the request could still be null if neither ActiveXObject
    //initializations succeeded
    if(request){
       initReq(reqType,url,asynch);
    }  else {
        alert("Your browser does not permit the use of all of this application's features!");}
}



/*********************************/
function initReq(reqType,url,bool){
    try{
        /* Specify the function that will handle the HTTP response */
        request.onreadystatechange=handleResponse;
        request.open(reqType,url,bool);
        request.send(null);
    } catch (err) {
        alert("The application cannot contact the server at the moment. Please try again in a few seconds. Send caused the prob.");
    }
}



/************************/
function handleResponse(){
   var statusMsg="";
   try{
      if(request.readyState == 4){
         if(request.status == 200){
            // here we get different responses, depending on what called this function

            try { 
               var response = request.responseText.split("::");
            } catch(e) { 
               alert('1 '+e);
               return;
            } 

            var CallingFunction = response[0];


            if (CallingFunction == "CheckCodeInstallation"){

               document.getElementById('submit_button1').style.display='inline'; 
               document.getElementById('spinner1').style.display='none';
               document.getElementById('all_ok1').style.display='none';
               document.getElementById('response_short1').innerHTML = '';
               document.getElementById('response1').innerHTML = '';

               try {
               document.getElementById('submit_button2').style.display='inline'; 
               document.getElementById('spinner2').style.display='none';
               document.getElementById('all_ok2').style.display='none';
               document.getElementById('response_short2').innerHTML = '';
               document.getElementById('response2').innerHTML = '';

               document.getElementById('submit_button3').style.display='inline'; 
               document.getElementById('spinner3').style.display='none';
               document.getElementById('all_ok3').style.display='none';
               document.getElementById('response_short3').innerHTML = '';
               document.getElementById('response3').innerHTML = '';
               } catch (err)   {}


               if (response[1] == "no_occurrence"){
                  alert (response[4]);  
                  document.getElementById('response_short'+response[2]).innerHTML="<span style=\"font-weight:bold; color:#FF0000\">"+response[3]+"</span>";
                  document.getElementById('response'+response[2]).innerHTML="<div style=\"border:3px dashed #FF0000; padding:10px;\"><span style=\"font-weight:bold; color:#FF0000\">"+response[4]+"</span><p>"+response[5]+"</p></div>"; 

                  return;
               }

               else if (response[1] == "empty_url"){
                  alert (response[4]);  
                  document.getElementById('response_short'+response[2]).innerHTML="<span style=\"font-weight:bold; color:#FF0000\">"+response[3]+"</span>";
                  document.getElementById('response'+response[2]).innerHTML="<div style=\"border:3px dashed #FF0000; padding:10px;\"><span style=\"font-weight:bold; color:#FF0000\">"+response[4]+"</span></div>"; 

                  return;
               }

               else if (response[1] == "invalid_url"){
                  alert (response[4]);  
                  document.getElementById('response_short'+response[2]).innerHTML="<span style=\"font-weight:bold; color:#FF0000\">"+response[3]+"</span>";
                  document.getElementById('response'+response[2]).innerHTML="<div style=\"border:3px dashed #FF0000; padding:10px;\"><span style=\"font-weight:bold; color:#FF0000\">"+response[4]+"</span></div>"; 

                  return;
               }

               else if (response[1] == "timeout"){
                  alert (response[4]); 
                  document.getElementById('response_short'+response[2]).innerHTML="<span style=\"font-weight:bold; color:#FF0000\">"+response[3]+"</span>";
                  document.getElementById('response'+response[2]).innerHTML="<div style=\"border:3px dashed #FF0000; padding:10px;\"><span style=\"font-weight:bold; color:#FF0000\">"+response[4]+"</span></div>"; 

                  return;
               }
               else if (response[1] == "no_url"){
                  alert (response[4]+"\n\n"+response[5]);  
                  document.getElementById('response_short'+response[2]).innerHTML="<span style=\"font-weight:bold; color:#FF0000\">"+response[3]+"</span>";
                  document.getElementById('response'+response[2]).innerHTML="<div style=\"border:3px dashed #FF0000; padding:10px;\"><span style=\"font-weight:bold; color:#FF0000\">"+response[4]+"</span><p>"+response[5]+"</p></div>"; 

                  return;
               }
               else if (response[1] == "no_match"){
                  alert (response[4]);  
                  document.getElementById('response_short'+response[2]).innerHTML="<span style=\"font-weight:bold; color:#FF0000\">"+response[3]+"</span>";
                  document.getElementById('response'+response[2]).innerHTML="<div style=\"border:3px dashed #FF0000; padding:10px;\"><span style=\"font-weight:bold; color:#FF0000\">"+response[4]+"</span><p>"+response[5]+"</p></div>"; 

                  return;
               }

               else {
                  document.getElementById('response_short'+response[1]).innerHTML="<span style=\"color:#04C01A; font-weight:bold;\">Code OK</span>";
                  document.getElementById('all_ok'+response[1]).style.display='block';

                  return;
               }

            }


            else if (CallingFunction == "CheckAdInstallation"){

               document.getElementById('submit_button').style.display='inline'; 
               document.getElementById('spinner').style.display='none';

               if (response[1] == "no_user"){
                  alert (response[2]+" : il n'existe aucun compte avec cet identifiant. Veuillez verifier votre saisie.\n\nSi vous avez oublie vos identifiants, veuillez utiliser le lien 'recuperer identifiants' sur cette page."); 
                  document.getElementById('response_short').innerHTML="<span class=\"emphasize\">Erreur (voir ci-dessous)</span>";
                  document.getElementById('response').innerHTML="<span class=\"emphasize\">Erreur - verifiez votre identifiant</span>"; 
                  return;
               }


               if (response[1] == "wrong_password"){
                  alert ("le mot de passe utilise est incorrect."); 
                  document.getElementById('response_short').innerHTML="<span class=\"emphasize\">Erreur (voir ci-dessous)</span>";
                  document.getElementById('response').innerHTML="<span class=\"emphasize\">Erreur - le mot de passe utilise est incorrect</span>"; 
                  return;
               }
               if (response[1] == "already_free"){
                  alert (response[2]+" : ce compte est deja gratuit."); 
                  document.getElementById('response_short').innerHTML="<span class=\"emphasize\">Erreur (voir ci-dessous)</span>"; 
                  document.getElementById('response').innerHTML="<span class=\"emphasize\">Erreur - compte deja gratuit</span>"; 
                  return;
               }
               if (response[1] == "not_eligible"){
                  alert (response[2]+" : ce compte n'est pas eligible (essais gratuits seulement SVP).");  
                  document.getElementById('response_short').innerHTML="<span class=\"emphasize\">Erreur (voir ci-dessous)</span>";
                  document.getElementById('response').innerHTML="<span class=\"emphasize\">Erreur - compte non eligible</span>"; 
                  return;
               }

               if (response[1] == "invalid_url"){
                  alert (response[3]);  
                  document.getElementById('response_short').innerHTML="<span class=\"emphasize\">"+response[2]+"</span>";
                  document.getElementById('response').innerHTML="<span class=\"emphasize\">"+response[3]+"</span>"; 

                  return;
               }

               if (response[1] == "query_string"){
                  alert ("Erreur : veuillez utiliser une URL sans query string");  
                  document.getElementById('response_short').innerHTML="<span class=\"emphasize\">Erreur (voir ci-dessous)</span>";
                  document.getElementById('response').innerHTML="<span class=\"emphasize\">Erreur - veuillez utiliser une URL sans query string (?)</span>"; 
                  return;
               }
               if (response[1] == "myspace"){
                  alert ("Error : non compatible avec Myspace");  
                  document.getElementById('response_short').innerHTML="<span class=\"emphasize\">Erreur (voir ci-dessous)</span>";
                  document.getElementById('response').innerHTML="<span class=\"emphasize\">Erreur - malheureusement Myspace ne vous permet pas de recopier la vignette 'telle quelle' et en consequence notre validateur ne peut pas verifier votre installation</span>"; 
                  return;
               }
               if (response[1] == "timeout"){
                  alert ("Erreur : delai depasse. Nous n'avons pas obtenu de reponse de votre serveur. Veuillez verifier votre URL et valider a nouveau.");  
                  document.getElementById('response_short').innerHTML="<span class=\"emphasize\">Erreur (voir ci-dessous)</span>";
                  document.getElementById('response').innerHTML="<span class=\"emphasize\">Erreur - delai depasset</span>"; 
                  return;
               }
               if (response[1] == "no_url"){
                  alert ("Erreur : votre serveur a renvoye une erreur. Veuillez verifier l'URL et valider a nouveau. Voici le detail de l'erreur :\n\n"+response[2]);  
                  document.getElementById('response_short').innerHTML="<span class=\"emphasize\">Erreur (voir ci-dessous)</span>";
                  document.getElementById('response').innerHTML="<span class=\"emphasize\">Erreur - serveur a renvoye "+response[2]+"</span>"; 
                  return;
               }
               if (response[1] == "no_match"){
                  alert ("Erreur : la vignette publicitaire n'a pas ete trouvee sur l'URL sepcifiee ou bien le code n'etait pas exactement identique au code que nous vous avons fourni. Veuillez verifier votre installation et essayer a nouveau."); 
                  document.getElementById('response_short').innerHTML="<span class=\"emphasize\">Erreur (voir ci-dessous)</span>"; 
                  document.getElementById('response').innerHTML="<p class=\"emphasize\">Erreur : la vignette publicitaire n'a pas ete trouvee sur l'URL sepcifiee ou bien le code n'etait pas exactement identique au code ci-dessus.</p><p>Veuillez vous rendre sur votre URL et afficher le code source (faites un clic droit sur une partie texte - non graphique - de votre page puis cliquez sur 'afficher source') et assurez vous que le code que nous vous avons fourni n'a pas ete modifie. Si vous avez besoin d'aide, dites le nous en utilisant le lien 'contact' tout en bas de la page."; 
                  return;
               }
               if (response[1] == "url_already_used"){
                  alert ("Erreur : il y a deja une publicite sur cette URL pour le compte '"+response[2]+"'. Vous ne pouvez obtenir qu'un seul compte gratuit par site."); 
                  document.getElementById('response_short').innerHTML="<span class=\"emphasize\">Erreur (voir ci-dessous)</span>"; 
                  document.getElementById('response').innerHTML="<span class=\"emphasize\">Erreur - URL deja utilisee pour le compte '"+response[2]+"'</span>"; 
                  return;
               }

               document.getElementById('response_short').innerHTML="<span style=\"color:#04C01A; font-weight:bold;\">Code valide (voir ci-dessous)</span>";

               document.getElementById('response').innerHTML="<p style=\"color:#04C01A; font-weight:bold;\">OK - la vignette publicitaire a ete trouvee sur "+response[1]+" et votre compte est maintenant gratuit.</p><p>Notez que chaque nuit nous verifions que la publicite est toujours sur votre page. Si nous ne la trouvons pas nous vous envoyons deux messages d'alerte. Apres cela votre compte reviendra automatiquement dans l'etat 'essai gratuit expire'</p>";

            }


            else if (CallingFunction == "CheckUserID"){
               if (response[1] != ""){
                  alert (response[2]+" : cet identifiant est deja utilise. Veuillez choisir un identifiant different");  
                  // document.form1.user.focus(); 
               }
               return;
            }

            else if (CallingFunction == "CheckUserIDExists"){
               if (response[1] == ""){
                  alert (response[2]+" : il n'existe aucun compte avec cet identifiant. Veuillez verifier votre saisie.\n\nSi vous avez oublie vos identifiants vous pouvez les recuperer en utilisant le lien 'oublie identifiant' sur la page de login/connexion.");  
                 // document.form1.existing_userID.focus(); 
               }
               return;
            }

            else if (CallingFunction == "CheckUserIdEligibleForAd"){
               if (response[1] == ""){
                  alert (response[2]+" : il n'existe aucun compte avec cet identifiant. Veuillez verifier votre saisie.\n\nSi vous avez oublie vos identifiants vous pouvez les recuperer en utilisant le lien 'oublie identifiant' sur la page de login/connexion."); 
                 // document.form1.existing_userID.focus(); 
               }
               if (response[1] == "x"){
                  alert (response[2]+" : ce compte n'est pas eligible (essais gratuits seulement SVP).");  
               }
               return;
            }

            else if (CallingFunction == "CheckPassword"){
               if (response[1] != "Password OK"){
                  alert (response[1]);  
                  // document.form1.existing_password.focus(); 
               }
               return;
            }

            else if (CallingFunction == "RemoveReportFromFavs"){
               //   alert ("done"+response[1]+":"+response[2]+":"+response[3]); 
               return; 
            }

            else if (CallingFunction == "AddReportToFavs"){
               alert (response[1]);  
               return;
            }


             else {

               alert ("unknown function call ("+CallingFunction +")");  
               return;

            }
            
            // end of functions list
         } 
         else {
            //alert("A problem occurred with communicating between the XMLHttpRequest object and the server program. ");
         }
      }//end outer if

   } catch (err)   {alert("It does not appear that the server is available for this application. Please try again very soon. Error: "+err.message); }

}



