function clearWarnings() {
  document.getElementById('blockTopNotification').style.display='none';
  document.getElementById('postCodeError').style.display='none';
  document.getElementById('emailError').style.display='none';
  document.getElementById('minAgeError').style.display='none';
  document.getElementById('badDateError').style.display='none';
  document.getElementById('generalError').style.display='none';
  document.getElementById('countryError').style.display='none';
  document.getElementById('postCodeRow').className = document.getElementById('postCodeRow').className.replace(/ error/,"");
  document.getElementById('emailRow').className = document.getElementById('postCodeRow').className.replace(/ error/,"");
  document.getElementById('dobRow').className = document.getElementById('dobRow').className.replace(/ error/,"");
  document.getElementById('countryRow').className = document.getElementById('dobRow').className.replace(/ error/,"");
  document.getElementById('aboutMeRow').className = document.getElementById('dobRow').className.replace(/ error/,"");
}

function profileSubmitted(obj) {
  document.getElementById('pleaseWait').style.display='none';
  clearWarnings();
  if (obj.success) {
    if (window.User_Details) {
      window.frames["profile_frame"].location="/blank.html";
      errorOrNote(obj.success,"","Success - your profile was successfully updated. See it <a href='/users/"+User_Details.joostName+"/others/'>as others see it</a>, or go to your <a href='/'>dashboard</a>.");
      if(window.Profile){
        Profile.refresh();
      }
      if (obj.user.confirmRequired) {
        var el=document.getElementById('pin-confirm');
        if (el) {
          el.value="";
        }
        el=document.getElementById('profile_unconfirm');
        if (el) {
          el.style.display="block";
        }
        el=document.getElementById('confirmation_link');
        el.innerHTML="Send email again";
        el.href="#";
        el.onclick=function() { User.sendConfirmationEmail(el); return false; };
      }
    return;
    }
    // happens if there's no user details - shouldn't be possible
    window.location="/";
  } else {
    switch(obj.resultCode){
    case 2014:
      errorOrNote(false,"You haven't changed anything! So we haven't changed anything.","");
      break;
    case 2005:
    case 2009:
    case 2019:
      el=document.getElementById('profile_unconfirm');
      if (el) {
        el.style.display="none";
      }
      document.getElementById('emailError').innerHTML=obj.message;
      document.getElementById('emailError').style.display='block';
      document.getElementById('emailRow').className += " error";
      break;
    case 2020:
      document.getElementById('countryError').style.display='block';
      document.getElementById('countryRow').className += " error";
      break;
    case 2015:
    case 2016:
    case 2021:
      document.getElementById('postCodeError').innerHTML=obj.message;
      document.getElementById('postCodeError').style.display='block';
      document.getElementById('postCodeRow').className += " error";
      break;
    case 2008:
      document.getElementById('minAgeError').style.display='block';
      document.getElementById('dobRow').className += " error";
      break;
    case 2021:
      document.getElementById('badDateError').style.display='block';
      document.getElementById('dobRow').className += " error";
      break;
    case 2013:
    case 2022:
      errorOrNote(false,obj.message,"");
      break;
    default:
      document.getElementById('generalError').style.display='block';
      break;
    }
  }
}

function newslettersSubmitted(obj) {
  document.getElementById('pleaseWait3').style.display='none';
  if (obj.success) {
    if (window.User_Details) {
      window.frames["profile_frame"].location="/blank.html";
      errorOrNote(obj.success,"","Success - your settings have been updated");
      return;
    }
    // happens if there's no user details - shouldn't be possible
    window.location="/";
  } else {
    document.getElementById('newsletterError').style.display='block';
    document.getElementById('newsletterErrorText').innerHTML="There was an error changing your subscriptions. Please try again later.";
  }
}

function emailnotificationSubmitted(obj) {

  document.getElementById('pleaseWait5').style.display='none';
  if (obj.success) {
    if (window.User_Details) {
      window.frames["profile_frame"].location="/blank.html";
      errorOrNote(obj.success,"","Success - your settings have been updated");
      return;
    }
    // happens if there's no user details - shouldn't be possible
    window.location="/";
  } else {
    document.getElementById('emailnotificationsError').style.display='block';
    document.getElementById('emailnotificationsErrorText').innerHTML="There was an error changing your email notification information. Please try again later.";
  }
}

function friendsnotificationSubmitted(obj) {
  document.getElementById('pleaseWait7').style.display='none';
  var errorField = document.getElementById('friendsnotificationsError');
  if (obj.success) {
    errorField.style.display='none';
    if (window.User_Details) {
      window.frames["fnotify_frame"].location="/blank.html";
      errorOrNote(obj.success,"","Success - your settings have been updated");
      return;
    }
    // happens if there's no user details - shouldn't be possible
    window.location="/";
  } else {
    errorField.style.display='block';
    if(obj.message != ""){
    document.getElementById('friendsnotificationsErrorText').innerHTML=obj.message;
    } else {
    document.getElementById('friendsnotificationsErrorText').innerHTML="There was an error changing your friends notification settings. Please try again later.";
    }
  }
}


  function stealthsCBToHidden(frm) {
    document.getElementById('stealthError').style.display='none';
    document.getElementById('stealthErrorText').innerHTML="";
    frm.elements['stealth'].value=frm.elements['stealthCB'].checked;
    frm.elements['showrestrictedprofile'].value=!frm.elements['showrestrictedprofileCB'].checked;
  }

function stealthsSubmitted(obj) {
  document.getElementById('pleaseWait4').style.display='none';
  if (obj.success) {
    window.frames["profile_frame"].location="/blank.html";
    errorOrNote(obj.success,"","Success - your settings have been updated");
    return;
  } else {
    errorOrNote(false,"You haven't changed anything! So we haven't changed anything.","");
  }
}
Mood={
  mood:"",
  joostname: "",
  username: ""
};
Mood.set=function(frm) {
  var prefixElt=frm.elements['moodPrefix'];
  var suffixElt=frm.elements['moodSuffix'];
  this.mood = "";
  var prefix=prefixElt.options[prefixElt.selectedIndex].text;
  var suffix=suffixElt.value;
  //var mood="";
  if(prefix!="" && suffix!=""){
   this.mood=prefix+" "+suffix;
  }else{
   if(prefix!=""){
     this.mood=prefix;
   }
   if(suffix!=""){
     this.mood=suffix;
   } 
  }

  if(this.mood.length > 3000) {
     errorOrNote(false,"Mood description is too long, please try again.","");
     return false;
  }

  if (window.User && User.loggedIn && window.User_Details) {
    this.username = User_Details.userName;
    this.joostname = User_Details.joostName;
  } else {
    // Mood can't be set if you don't have a joost name
    return false;
  }
  frm.elements['mood'].value=this.mood;
  var el=document.getElementById('mood1');
  if (el) {
    el.innerHTML=escapeHTML(this.username + ' ' + this.mood);
  } 
  return true;
};

Mood.updated=function(obj) {
  var moodplacer = document.getElementById("mood1");
  if (obj.success && this.mood != '') {
    moodplacer.innerHTML=escapeHTML(this.username + ' ' + this.mood);
  } else {
    moodplacer.innerHTML= '';
  }
  document.getElementById("mood-with-button").style.display="block";
  document.getElementById("mood").style.display="none";
  errorOrNote(obj.success,"Mood was not updated: "+escapeHTML(obj.message),"Mood updated");
};

Mood.changeButton=function() {
  document.getElementById("mood-with-button").style.display="none";
  document.getElementById("mood").style.display="block";
};

Profile={
  service: "/api/profile/",
  joostName: undefined
};
Profile.refresh = function(){
  if (Profile.joostName!=undefined) {
    jsonRequest(this.service+"get/"+Profile.joostName+"/?json_function=Profile.handleGetResponse");
  }
};

Profile.handleGetResponse = function(obj){
  if (obj.success) {
    Profile.displayResults(obj);
  } else {
    errorOrNote(false,"",obj.message);
  }
};

Profile.displayResults= function(obj){
  var text;
  var joostname=obj.user.joostname;
  var firstname=obj.user.firstname;
  var lastname=obj.user.lastname;
  var age=obj.user.age;
  var gender=obj.user.gender;
  var country=obj.user.country;
  var aboutme=obj.user.aboutme;
  var url1=obj.user.url1;
  var url2=obj.user.url2;
  var profileImage=obj.user.profileImage;

  var name=[];
  if (firstname) {
    name.push(firstname);
  }
  if (lastname) {
    name.push(lastname);
  }
  var pName=byid("profileName");
  var pTitle=byid("profileTitle");
  var pUsername=byid("username");
  if(name.length>0){
    if (pName) {
      pName.innerHTML = escapeHTML(name.join(' '));
    }
    if (pTitle) {
      pTitle.innerHTML = escapeHTML(name.join(' '))+"'s profile";
    }
    if (pUsername) {
      pUsername.innerHTML = '<span>' + escapeHTML(name.join(' ')) + '</span>';
    }
  }else{
    if (pName) {
      pName.innerHTML = joostname;
    }
    if (pTitle) {
      pTitle.innerHTML = joostname+"'s profile";
    }
    if (pUsername) {
      pUsername.innerHTML = '<span>' + joostname + '</span>';
    }
  }
  if(gender || age || country){
    var summary=[];
    if(gender){
      var user_image=document.getElementById("user_image");
      if(user_image && obj.user.showrestrictedprofile!="false"){
        if(gender=="MALE"){
          gender="Male";
        }
        if(gender=="FEMALE"){
          gender="Female";
        }
        if (obj.profileImage) {
          user_image.setAttribute("src",obj.profileImage);
        } else {
          if(gender=="MALE"){
            user_image.setAttribute("src","/static/joost_male_t2.jpg");
          }
          if(gender=="FEMALE"){
            user_image.setAttribute("src","/static/joost_female_t2.jpg");
          }
        }
      }
      summary.push(gender);
    }
    if(age && age>0){
      summary.push(age);
    }
    if(country){
      var x=countriesHash[country];
      if(x){
        country=x.name;
        summary.push(country);
      }
    }

    if(document.getElementById("profileSummary")){
      document.getElementById("profileSummary").innerHTML = summary.join(', ');
    }
  }
  if(aboutme && document.getElementById("profileAboutMe")){
    document.getElementById("profileAboutMe").innerHTML = "<h4>About Me</h4><p>"+escapeHTML(aboutme)+"</p>";
  }else{
    document.getElementById("profileAboutMe").innerHTML = "";
  }

  if(url1.indexOf("http://")!=-1){
    url1="<a href='"+escapeHTML(url1)+"' target='_blank' rel='me'>"+escapeHTML(url1)+"</a>";
  }
  if(url1){
    document.getElementById("profileUrl1").innerHTML = "<h4>Website</h4><p>"+url1+"</p>";
  }else{
    document.getElementById("profileUrl1").innerHTML = "";
  }
  if(url2.indexOf("http://")!=-1){
    url2="<a href='"+escapeHTML(url2)+"' target='_blank' rel='me'>"+escapeHTML(url2)+"</a>";
  }
  if(url2){
    document.getElementById("profileUrl2").innerHTML = "<h4>Blog</h4><p>"+url2+"</p>";
  }else{
    document.getElementById("profileUrl2").innerHTML = "";
  }

};

Profile.requestFriend = function(joostName) {
  jsonRequest("/api/friends/add/"+joostName+"?json_function=Profile.requestFriendCallback");
};
Profile.requestFriendCallback = function(obj) {
  if (Profile.joostName==obj.joostName) {
    // only if this is the page of the user do we need to change the buttons
    // if this is a page of someone's friends and we're adding those friends, then don't change them
    // otherwise MWF-2416
    document.getElementById('addAsFriend').style.display="none";
    document.getElementById('friendsPending').style.display="block";
    document.getElementById('delFriend').style.display="none";
  }
  if (obj.success) {
    errorOrNote(true,"","You have requested <a href='/users/"+obj.joostName+"/'>"+escapeHTML(obj.userName)+"</a> as a friend");
  } else if(obj.resultCode && obj.resultCode==8003){
    errorOrNote(false,"Error adding friend: relationship is suspended","");   
  }else{
    errorOrNote(false,"Error adding friend ("+obj.message+"). Please try again later","");
  }
  if(window.Friends){
    Friends.refreshList();
  }
};

Profile.deleteFriend = function(joostName) {
  jsonRequest("/api/friends/remove/"+joostName+"?json_function=Profile.deleteFriendCallback");
};
Profile.deleteFriendCallback = function(obj) {
  document.getElementById('addAsFriend').style.display="block";
  document.getElementById('delFriend').style.display="none";
  errorOrNote(true,"","Breaking up is easy. You're no longer friends with <a href='/users/"+obj.joostName+"/'>"+escapeHTML(obj.userName)+"</a></p>");
  
  if(window.Friends){
    if (document.getElementById('friendsBigList')){
		Friends.refreshBigList(true,true);
    } else {
        Friends.refreshList();
    }
  }
};

Profile.acceptFriend = function(joostName) {
   jsonRequest("/api/friends/confirm/"+joostName+"?json_function=Profile.acceptFriendCallback");
};

Profile.acceptFriendCallback = function(obj) {
  document.getElementById('addAsFriend').style.display="none";
  document.getElementById('friendsPending').style.display="none";
  document.getElementById('delFriend').style.display="block";
  errorOrNote(true,"","You have accepted <a href='/users/"+obj.joostName+"/'>"+escapeHTML(obj.userName)+"</a> as a friend");

  if(window.Friends){
    if (document.getElementById('friendsBigList')){
		Friends.refreshBigList(true,true);
    } else {
        Friends.refreshList();
    }
  }
};

Profile.refuseFriend = function(joostName) {
  jsonRequest("/api/friends/remove/"+joostName+"?json_function=Profile.refuseFriendCallback");
};

Profile.refuseFriendCallback = function(obj) {
  document.getElementById('addAsFriend').style.display="block";
  document.getElementById('friendsPending').style.display="none";
  document.getElementById('delFriend').style.display="none";
  errorOrNote(true,"","You have refused <a href='/users/"+obj.joostName+"/'>"+escapeHTML(obj.userName)+"</a> as a friend");

  if(window.Friends){
    if (document.getElementById('friendsBigList')){
		Friends.refreshBigList(true,true);
    } else {
        Friends.refreshList();
    }
  }
};

var Subscriptions = {
  markAsWatchedProvider: '/api/subscriptions/removeFromUnseen/%{publicId}/?json_function=%{callback}',
  holdMarked: false
};

Subscriptions.hide=function(publicId) {
  byid('wrap-' + publicId).innerHTML = "";
};

Subscriptions.markAsWatched=function(publicId) {
    var me = Subscriptions;
    if(publicId) {
        me.holdMarked = publicId;
        //me.watchedResponse("success": true);
        jsonRequest(substitute(me.markAsWatchedProvider, { publicId : publicId, callback : 'Subscriptions.watchedResponse'}));	
    }
};

Subscriptions.watchedResponse=function(response) {
    if(response.success) {
        var boxtodo = byid('wrap-'+Subscriptions.holdMarked);
        var linktodo = 'subindic-'+Subscriptions.holdMarked;
        Subscriptions.holdMarked=false;
        if(boxtodo)
            boxtodo.className='brick brickB4 brickBordered';
        removeNode(linktodo);
    }
}

Subscriptions.isok=function(el) {
    if(el) {
        var span=el.getElementsByTagName('span')[0];
        var inn = (span.innerHTML == 'OK') ? 'New Video' : 'OK';
        setHtml(span,inn);
    }
};
