/* my123 JavaScript code (English) */

var formSubmit = true; // variable pour empecher les clicks abusifs sous IE

if(window.RegExp){
  var regexAlpha = /^[A-Za-zÀàÂâÉéÈèÊêËëÎîÏïÔôÖöÙùÛûÇç \-\'\.]+$/;
  var regexNum = /^[0-9]+$/;
  var regexAlphaNum = /^[0-9A-Za-zÀàÂâÉéÈèÊêËëÎîÏïÔôÖöÙùÛûÇç \-\'\.]+$/;
  var regexAddress = /^[0-9]+(\,)? [0-9A-Za-zÀàÂâÉéÈèÊêËëÎîÏïÔôÖöÙùÛûÇç \-\.\,\']+$/;
  var regexPC = /^[A-Za-z][0-9][A-Za-z]( )?[0-9][A-Za-z][0-9]$/;
  var regexPhone = /^[0-9]{10}$/;
  var regexEmailNo = /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/;
  var regexEmailYes = /^.+\@(\[?)[A-Za-z0-9\-\.]+\.([A-Za-z]{2,4}|[0-9]{1,3})(\]?)$/;
  var regexUrl = /^(?:(?:ftp|https?):\/\/)?(?:[a-z0-9](?:[-a-z0-9]*[a-z0-9])?\.)+(?:com|edu|biz|org|gov|int|info|mil|net|name|museum|coop|aero|[a-z][a-z])\b(?:\d+)?(?:\/[^;"'<>()\[\]{}\s\x7f-\xff]*(?:[.,?]+[^;"'<>()\[\]{}\s\x7f-\xff]+)*)?/;
  var regexVIN = /^[0-9A-Za-z]{17}$/;
  var regexYear = /^[1-2][0-9]{3}$/;
  var regexKM = /^[0-9 \,\.]+$/;
  var regexDate = /^[0-9]{4}\/((0[1-9])|(1[0-2]))\/((0[1-9])|((1|2)[0-9])|(3(0|1)))$/;
  /*var regexHour = /^(((0|1)[0-9])|(2[0-3]))$/;*/
  var regexMoney = /^[0-9\.\,]+$/;
  var regexLicence = /^[A-Za-z][0-9]{4}-[0-9]{6}-[0-9]{2}$/;
  var regexPlate = /^[A-Za-z0-9 -]{4,8}$/;
  
  var regexNotEmpty = /^.+$/;
  var regexOnlySpace = /^ +$/;
}

function validateField(field, regex){
  return regex.test(document.getElementById(field).value);
}

function errorField(field) {  
  if (document.layers) {
    fieldstyle = document.layers[field].className;
    document.layers[field].className = fieldstyle + ' field-err';
  }
  else if(document.getElementById){
    fieldstyle = document.getElementById(field).className;
    document.getElementById(field).className = fieldstyle + ' field-err';
  }
}
function okField(field){
  if (document.layers) {
    classname = document.layers[field].className;
    if (classname.search('long') != '-1')
      document.layers[field].className = 'long';
    else if (classname.search('short') != '-1')
      document.layers[field].className = 'short';
    else
      document.layers[field].className = '';
  }
  else if(document.getElementById){
    classname = document.getElementById(field).className;
    if (classname.search('long') != '-1')
      classname = document.getElementById(field).className = 'long';
    else if (classname.search('short') != '-1')
      classname = document.getElementById(field).className = 'short';
    else
      classname = document.getElementById(field).className = '';
  }
}

function my123_validate_login(f) {
  var fn = f.name;
  var ofn = document.forms[fn];
	var erreur = false;
  var nb_err = 0;
  
  if(!formSubmit)
    return false;
  formSubmit = false;
  
  var title_err = '';
  var msgerreur = "<ul>";
  
  if(!validateField('agun2', regexNotEmpty) || validateField('agun2', regexOnlySpace)){
    errorField('agun2');
    msgerreur += "<li><a href=\"#a-agun2\">'Username' : Please write your username</a></li>";
    erreur = true;
    nb_err++;
  }
  else
    okField('agun2');
  
  if(!validateField('agpw2', regexNotEmpty) || validateField('agpw2', regexOnlySpace)){
    errorField('agpw2');
    msgerreur += "<li><a href=\"#a-agpw2\">'Password' : Please write your password</a></li>";
    erreur = true;
    nb_err++;
  }
  else
    okField('agpw2');
  
  msgerreur += "</ul>";
    
  if (nb_err > 1)
    title_err = "The following fields require your attention:";
  else
    title_err = "The following field requires your attention:";

  if(erreur == true) {
		if (document.layers) {
      document.layers.error.document.write(title_err + msgerreur);
      document.layers.error.document.close();
      document.layers['err-msg'].className = 'visible';
    }
    else if(document.getElementById){
      document.getElementById("err-msg").innerHTML = title_err + msgerreur;
      document.getElementById('err-msg').className = 'visible';
    }
    else
      alert(msgerreur);
    formSubmit = true;
		return false;
  }
  else
    document.getElementById(f.id).submit();
}

function my123_validate_register(f) {
  var fn = f.name;
  var ofn = document.forms[fn];
	var erreur = false;
  var nb_err = 0;
  
  if(!formSubmit)
    return false;
  formSubmit = false;
  
  if(document.getElementById('email').value == ''){
    var title_err = '';
  	var msgerreur = "<ul>";
    
    if (!(!validateField('qwe', regexEmailNo) && validateField('qwe', regexEmailYes))){
      errorField('qwe');
      msgerreur += "<li><a href=\"#a-email\">'E-mail' : Please write a valid e-mail address</a></li>";
      erreur = true;
      nb_err++;
    }
    else
      okField('qwe');
    
    if (!validateField('pcode', regexPC) || !validatePC(document.getElementById('pcode'), false, false, true)){
      errorField('pcode');
      msgerreur += "<li><a href=\"#a-pcode\">'Postal code' : Please write or correct your postal code</a></li>";
      erreur = true;
      nb_err++;
    }
    else{
      okField('pcode');
      
      var pc = document.getElementById('pcode').value;
      pc = pc.toUpperCase();
      if(pc.indexOf(' ') == -1)
        pc = pc.substring(0,3) + ' ' + pc.substring(3);
      document.getElementById('pcode').value = pc;
    }
    
    if(!validateField('uname', regexNotEmpty) || validateField('uname', regexOnlySpace)){
      errorField('uname');
      msgerreur += "<li><a href=\"#a-uname\">'Username' : Please write a username</a></li>";
      erreur = true;
      nb_err++;
    }
    else
      okField('uname');
    
    if(!validateField('passw', regexNotEmpty) || validateField('passw', regexOnlySpace)){
      errorField('passw');
      msgerreur += "<li><a href=\"#a-passw\">'Password' : Please write a password</a></li>";
      erreur = true;
      nb_err++;
    }
    else{
      okField('passw');
      
      if (document.getElementById('cpassw').value != document.getElementById('passw').value){
        errorField('cpassw');
        msgerreur += "<li><a href=\"#a-cpassw\">'Re-type password' : Please re-type your password</a></li>";
        erreur = true;
        nb_err++;
      }
      else
        okField('cpassw');
    }
    
    if(!document.getElementById('accept').checked){
      msgerreur += "<li><a href=\"#a-accept\">You must accept our Terms and Conditions to register</a></li>";
      erreur = true;
      nb_err++;
    }
    
    msgerreur += "</ul>";
      
    if (nb_err > 1)
      title_err = "The following fields require your attention:";
    else
      title_err = "The following field requires your attention:";
  }

  if(erreur == true) {
		if (document.layers) {
      document.layers.error.document.write(title_err + msgerreur);
      document.layers.error.document.close();
      document.layers['err-msg2'].className = 'visible';
    }
    else if(document.getElementById){
      document.getElementById("err-msg2").innerHTML = title_err + msgerreur;
      document.getElementById('err-msg2').className = 'visible';
    }
    else
      alert(msgerreur);
    formSubmit = true;
		return false;
  }
  else{
    if(document.getElementById('email').value == '')
      document.getElementById(f.id).submit();
  }
}

function my123_validate_update(f) {
  var fn = f.name;
  var ofn = document.forms[fn];
	var erreur = false;
  var nb_err = 0;
  
  if(!formSubmit)
    return false;
  formSubmit = false;
  
  if(document.getElementById('email').value == ''){
    var title_err = '';
    var msgerreur = "<ul>";
    
    if (!validateField('city', regexAlpha)){
      errorField('city');
      msgerreur += "<li><a href=\"#a-city\">'City' : Please write your city</a></li>";
      erreur = true;
      nb_err++;
    }
    else
      okField('city');
    
    if (!validateField('pcode', regexPC)){
      errorField('pcode');
      msgerreur += "<li><a href=\"#a-pcode\">'Postal code' : Please write your postal code</a></li>";
      erreur = true;
      nb_err++;
    }
    else{
      okField('pcode');
      
      var pc = document.getElementById('pcode').value;
      pc = pc.toUpperCase();
      if(pc.indexOf(' ') == -1)
        pc = pc.substring(0,3) + ' ' + pc.substring(3);
      document.getElementById('pcode').value = pc;
    }
    
    if (!(!validateField('qwe', regexEmailNo) && validateField('qwe', regexEmailYes))){
      errorField('qwe');
      msgerreur += "<li><a href=\"#a-email\">'E-mail' : Please write a valid e-mail address</a></li>";
      erreur = true;
      nb_err++;
    }
    else
      okField('qwe');
    
    if (!validateField('firstname', regexAlpha)){
      errorField('firstname');
      msgerreur += "<li><a href=\"#a-firstname\">'First name' : Please write your first name (letters, space, and hyphen only)</a></li>";
      erreur = true;
      nb_err++;
    }
    else
      okField('firstname');
    
    if (!validateField('lastname', regexAlpha)){
      errorField('lastname');
      msgerreur += "<li><a href=\"#a-lastname\">'Last name' : Please write your last name (letters, space, and hyphen only)</a></li>";
      erreur = true;
      nb_err++;
    }
    else
      okField('lastname');
    
    /*
    if (document.getElementById('country').selectedIndex == 0){
      errorField('country');
      msgerreur += "<li><a href=\"#a-country\">'Country' : Please select your country</a></li>";
      erreur = true;
      nb_err++;
    }
    else
      okField('country');
    
    if (document.getElementById('province').selectedIndex == 0){
      errorField('province');
      msgerreur += "<li><a href=\"#a-province\">'Province' : Please select your province</a></li>";
      erreur = true;
      nb_err++;
    }
    else
      okField('province');
    
    if (document.getElementById('language').selectedIndex == 0){
      errorField('language');
      msgerreur += "<li><a href=\"#a-language\">'Language' : Please select your language</a></li>";
      erreur = true;
      nb_err++;
    }
    else
      okField('language');
    
    if (!(document.getElementById('genderm').checked || document.getElementById('genderf').checked)){
      msgerreur += "<li><a href=\"#a-gender\">'Gender' : Please select your gender</a></li>";
      erreur = true;
      nb_err++;
    }
    */
    
    if(validateField('website', regexNotEmpty) && !validateField('website', regexOnlySpace)){
      if (!validateField('website', regexUrl)){
        errorField('website');
        msgerreur += "<li><a href=\"#a-website\">'Website' : Please write a valid website url</a></li>";
        erreur = true;
        nb_err++;
      }
      else
        okField('website');
    }
    
    msgerreur += "</ul>";
      
    if (nb_err > 1)
      title_err = "The following fields require your attention:";
    else
      title_err = "The following field requires your attention:";
  }

  if(erreur == true) {
		if (document.layers) {
      document.layers.error.document.write(title_err + msgerreur);
      document.layers.error.document.close();
      document.layers['err-msg'].className = 'visible';
    }
    else if(document.getElementById){
      document.getElementById("err-msg").innerHTML = title_err + msgerreur;
      document.getElementById('err-msg').className = 'visible';
    }
    else
      alert(msgerreur);
    formSubmit = true;
		return false;
  }
  else{
    if(document.getElementById('email').value == '')
      document.getElementById(f.id).submit();
  }
}

function my123_history_savechanges(url, f) {
  var cb = { success: my123_history_savechanges_success, failure: my123_history_savechanges_failure };  
  
  YAHOO.util.Connect.resetFormState();
  YAHOO.util.Connect.setForm(f.id);
  YAHOO.util.Connect.asyncRequest("GET", url, cb, null);
  YAHOO.util.Connect.resetFormState();
}

function my123_history_savechanges_success(o) {
  alert("Your history settings have been saved successfully !");
}

function my123_history_savechanges_failure(o) {
  alert("An error occured while trying to save your settings !");
}


function my123_isPublic(rowid, namecheck) 
{
  
  var cb = {
    success: ID_response,         
    failure:ID_noresponse,
    argument: [namecheck,rowid]
  }       
  var url= '/site/support/ajax_my123publicflag.spy?rowid='+ rowid ;
  //YAHOO.util.Connect.setForm(f);          
  YAHOO.util.Connect.asyncRequest('GET', url, cb, null);      
  YAHOO.util.Connect.resetFormState();                 
}

function ID_response(o) 
{ //alert (o.responseText)
  eval('rc = ' + o.responseText);

  //var namecheck = o.argument[0];
  
  var rowid =o.argument[1]

  if (typeof(publicflag)=='undefined') 
    {var namecheck = [o.argument[0]]; }
  else
    {var namecheck = publicflag[rowid];}
    
  if(rc.success)
    {     
     for (i=0; i<namecheck.length;i++)
     {
       var el = document.getElementById("privacyicon-" + namecheck[i]+"-"+rowid);
       
       if (rc.publicflg=='0')
        { el.src = "/site/img/my123/private_small.gif"; }
       else
        { el.src = "/site/img/my123/public_small.gif"; }  
      }       
   
    }
  else
    {
    alert('Failure saving task: ' + rc.errormsg);
    }
}

function ID_noresponse(o)
{
  alert('Failure saving task!');
}

function my123_profilePublic(userid) 
{
  
  var cb = {
    success: profilePublic_response,         
    failure: profilePublic_noresponse,
    argument: [userid]
  }       
  var url= '/site/support/ajax_my123_updatepublicflag.spy?userid='+ userid +'&enable=' + (public_profile ? "0" : "1");         
  YAHOO.util.Connect.asyncRequest('GET', url, cb, null);      
  YAHOO.util.Connect.resetFormState();                 
}

function profilePublic_response(o) 
{ 
  eval('rc = ' + o.responseText);    
  if(rc.success)
    { 
      public_profile = !public_profile;

      var el = document.getElementById("profileflg");
      var el1 = document.getElementById("privacystate");  
      var pflag = document.getElementById("profile-public-flag");
      if (!public_profile) {
        el.src = "/site/img/my123/private_small.gif";
        el1.innerHTML='private';
        if(pflag != null && pflag.nodeName.toLowerCase() == 'img') {
          pflag.src = "/site/img/my123/private.gif";
        }
      }
      else {
        el.src = "/site/img/my123/public_small.gif"; 
        el1.innerHTML='public';
        pflag.src = "/site/img/my123/public.gif";
      }         
    }
  else
    {
    alert('Failure saving task: ' + rc.errormsg);
    }
}

function profilePublic_noresponse(o)
{
  alert('Failure saving task!');
}


function my123_writeComments(rowid) 
{ 
 
  var box=document.getElementById("commentbox_"+rowid);
  box.style.display="";                           
}

function my123_editComments(rowid) 
{   
    var commenttext=document.getElementById("comment_text_"+rowid);               
    var mycomment = document.getElementById("mycomment_"+rowid);
    
    if(commenttext.childNodes.length > 0) {
      var c = commenttext.childNodes[0].nodeName.toLowerCase();
    }
    else {
      var c = commenttext.nodeName.toLowerCase();
    }
    
    if(c != 'textarea') {
      mycomment.value=br2return(commenttext.innerHTML);
      var s = '<textarea name="mycomment" id="mycomment_' + rowid + '">'+ br2return(commenttext.innerHTML) +'</textarea><br /><input type="button" value="Save" onClick="my123_saveComments(\''+rowid+'\');">';
      commenttext.innerHTML = s;
    }
}

function return2br(dataStr) {
        return dataStr.replace(/(\r\n|[\r\n])/g, "<br />");
    }

function br2return(dataStr) {
        return dataStr.replace(/(<br>)/g,"\r\n");
    }
        
                  
function my123_saveComments(rowid) 
{ 
  var mycomment=document.getElementById("mycomment_"+rowid);
  var comments=mycomment.value;

  var cb = {
    success: saveComments_response,         
    failure: saveComments_noresponse,
    argument: [rowid]
  }       
  var url= '/site/support/ajax_my123_savecomment.spy?rowid='+ rowid + '&comments=' + return2br(comments);    
  // need to change the method to POST for comments     
  YAHOO.util.Connect.asyncRequest('GET', url, cb, null);      
    
}

function saveComments_response(o) 
{               
  rowid=o.argument[0]
  eval('rc = ' + o.responseText);    
  if(rc.success)
    {                 
      var no_comments=document.getElementById("no_comments_"+rowid);
      no_comments.style.display="none";
                                       
      //get the new comments, and show it.
      var mycomment=document.getElementById("mycomment_"+rowid);  
      var commenttext=document.getElementById("comment_text_"+rowid);                                      
      commenttext.innerHTML= return2br(mycomment.value);
      
      var with_comments =document.getElementById("with_comments_"+rowid);
      with_comments.style.display="";
      
      var writecomment = document.getElementById("writecomment_"+rowid);
      writecomment.style.display="none";
      var editcomment = document.getElementById("editcomment_"+rowid);
      editcomment.style.display="";                                       
    }
  else
    {
    alert('Failure saving task: ' + rc.errormsg);
    }
}

function saveComments_noresponse(o)
{
  alert('Failure saving task!');
}