// AJAX


// Profile

function replaceTextfieldWithSelect(id, name, values) {
  var tf = document.getElementById(id);
  var tfValue = tf.value;
  var sp = document.createElement('span');
  var innerHTML = '<select id="' + id + '" name="' + name + '">';
  var selected;
  var i;
  for (i=0; i<values.length; ++i) {
    selected = values[i] == tfValue ? ' selected' : '';
    innerHTML += '<option' + selected + '>' + values[i] + '</option>';
  }
  innerHTML += '</select>';
  sp.innerHTML = innerHTML;
  tf.parentNode.replaceChild(sp, tf);
}

function sendChatInvite(el, name) {
  el.onclick = function() { return false };
  if (el.tagName.toLowerCase() == 'input') {
    el.disabled = true;
  } else {
    el.firstChild.title = '';
  }
  ChatInvite(['args__' + name], [onChatInviteReply], 'POST');
  return false;
}

function onChatInviteReply(result) {
  result = result.replace(/<.*?>/, '');
  result = result.replace(/<.*?>/, '');
  alert(result);
}

// Height field

function replaceHeightInCm(id, name) {
  var values = new Array();
  var i;
  values[0] = '---';
  for (i=100; i<=250; ++i) {
    values[values.length] = i;
  }
  replaceTextfieldWithSelect(id, name, values);
}

function replaceHeightInInches(id, name) {
  var values = new Array();
  var i;
  values[0] = '---';
  for (i=Math.round(100/2.54); i<=Math.round(250/2.54); ++i) {
    values[values.length] = Math.floor(i/12) + "'" + (i%12) + '"';
  }
  replaceTextfieldWithSelect(id, name, values);
}

function onCmChange() {
  var cm = this;
  var cmIndex = cm.selectedIndex;
  var inchId = cm.id + 'ininch';
  var inch = document.getElementById(inchId);
  if (cmIndex == 0) {
    inch.selectedIndex = 0;
    return;
  }
  var inchValue = Math.round( (cmIndex + 99) / 2.54 );
  inch.selectedIndex = inchValue - 38;
}

function onInchChange() {
  var inch = this;
  var inchIndex = inch.selectedIndex;
  var cmId = this.id.substr(0, this.id.length - 6);  // 6 = length('ininch')
  var cm = document.getElementById(cmId);
  if (inchIndex == 0) {
    cm.selectedIndex = 0;
    return;
  }
  var cmValue = Math.round( (inchIndex + 38) * 2.54 );
  if (cmValue < 100 ) { cmValue = 100; }
  cm.selectedIndex = cmValue - 99;
}

// Weight field

function replaceWeightInKg(id, name) {
  var values = new Array();
  var i;
  values[0] = '---';
  for (i=30; i <= 500; ++i) {
    values[values.length] = i;
  }
  replaceTextfieldWithSelect(id, name, values);
}

function replaceWeightInLbs(id, name) {
  var values = new Array();
  var i;
  values[0] = '---';
  for (i = Math.round(30/0.4536); i <= Math.round(500/0.4536); ++i) {
    values[values.length] = i;
  }
  replaceTextfieldWithSelect(id, name, values);
}

function onKgChange() {
  var kg = this;
  var kgIndex = kg.selectedIndex;
  var lbsId = this.id + 'inlbs';
  var lbs = document.getElementById(lbsId);
  if (kgIndex == 0) {
    lbs.selectedIndex = 0;
    return;
  }
  var lbsValue = Math.round( (kgIndex + 29) / 0.4536 );
  lbs.selectedIndex = lbsValue - 65;
}

function onLbsChange() {
  var lbs = this;
  var lbsIndex = lbs.selectedIndex;
  var kgId = this.id.substr(0, this.id.length - 5);  // 6 = length('inlbs')
  var kg = document.getElementById(kgId);
  if (lbsIndex == 0) {
    kg.selectedIndex = 0;
    return;
  }
  var kgValue = Math.round( (lbsIndex + 65) * 0.4536 );
  if (kgValue < 30 ) { kgValue = 30; }
  kg.selectedIndex = kgValue - 29;
}

// Age field

function replaceAgeField(id, name) {
  var values = new Array();
  var i;
  values[0] = '---';
  for (i = 18; i <= 100; ++i) {
    values[values.length] = i;
  }
  replaceTextfieldWithSelect(id, name, values);
}

// Toggle visibility

function toggleVisibility(divId) {
  var div = document.getElementById(divId);
  if (div.style.display == 'none') {
    div.style.display = 'block';
  } else {
    div.style.display = 'none';
  }
  return false;
}

// Profile thumbnails

function SwitchThumbnail() {
  var src = this.src;
  src = src.replace("thumbnail", "profile");
  this.profileimage.src = src;
  var desc = this.profileimage.parentNode.getElementsByTagName('i')[0];
  if (desc) {
    desc.textContent = this.alt;
  }
  if (this.abuseLink) {
    var href = this.parentNode.href;
    href = href.replace('photo', 'flagimage');
    var image_id = href.match(/(\d+)$/)[1];
    
    this.abuseLink.href = href;
    this.abuseLink.style.display = 'inline';
    this.abuseForm.style.display = 'none';
    this.abuseForm.image_id.value = image_id;
    this.abuseForm.flag.selectedIndex = 0;
    this.abuseForm.abuseResult.style.display = 'none';
  }
  return false;
}

function InitThumbnails(divName) {
  var tnDiv = document.getElementById(divName).getElementsByTagName('div')[0];
  var profileimage = document.getElementById(divName).getElementsByTagName('img')[0];
  var images = tnDiv.getElementsByTagName("img");
  var abuseLink = FindAbuseLink(tnDiv);
  var abuseForm = FindAbuseForm(tnDiv, abuseLink);
  for (var i=0; i < images.length; ++i) {
    images[i].profileimage = profileimage;
    images[i].onclick = SwitchThumbnail;
    images[i].container = tnDiv;
    images[i].abuseLink = abuseLink;
    images[i].abuseForm = abuseForm;
  }
}

function FindAbuseLink(div) {
  var links = div.parentNode.getElementsByTagName('a');
  for (var i=0; i < links.length; ++i) {
    var a = links[i];
    var href = a.href;
    var match = href.match(/flagimage/);
    if (match)
      return a;
  }
  return null;
}

function FindAbuseForm(div, abuseLink) {
  var abuseForm = div.parentNode.getElementsByTagName('form')[0];
  var abuseResult = abuseForm.nextSibling;
  
  abuseLink.abuseForm = abuseForm;
  abuseLink.onclick = function() {
    this.style.display = 'none';
    this.abuseForm.style.display = 'block';
    return false;
  };
  
  abuseForm.abuseResult = abuseResult;
  abuseForm.onsubmit = function() {
    this.style.display = 'none';
    this.abuseResult.innerHTML = '<img src="/Content/Images/wait">';
    this.abuseResult.style.display = 'block';
    window.abuseResult = this.abuseResult;
    FlagImage(['args__' + this.image_id.value, 'args__' +  this.flag.value], [onAbuseFormResult], 'POST');
    return false;
  };
  return abuseForm;
}

function onAbuseFormResult(message) {
  window.abuseResult.innerHTML = message;
}


// Profile tabs

function InitProfileTabs(tabNames,tabNumber) {
  var container = document.getElementById('profileTabs');
  var tabs = GetProfileTabs();
  var headings = document.createElement('ul');
  var headingsHTML = '';
  if (tabNumber == undefined) { tabNumber = 0; }
  
  headings.id = 'profileHeadings';
  for (var i=0; i<tabs.length; ++i) {
    headingsHTML += '<li><a href="#" onclick="return SetActiveTab('+i+')">'+tabNames[i]+'</a></li>';
  }
  headings.innerHTML = headingsHTML;
  container.parentNode.insertBefore(headings, container);
  container.className = 'profileTabsContainer';
  SetActiveTab(tabNumber);
}

function GetProfileTabs() {
  var container = document.getElementById('profileTabs');
  var divs = container.getElementsByTagName('div');
  var tabs = new Array();
  var i;
  
  for (i=0; i<divs.length; ++i) {
    if (divs[i].className=='profileTab') {
      tabs[tabs.length] = divs[i];
    }
  }
  return tabs;
}

function SetActiveTab(tabNumber) {
  var tabs = GetProfileTabs();
  var headings = document.getElementById('profileHeadings').getElementsByTagName('li');
  for (var i=0; i<tabs.length; ++i) {
    headings[i].className = i==tabNumber ? 'currentTab' : '';
    tabs[i].style.display = i==tabNumber ? 'block' : 'none';
  }
  return false;
}


// editphotos page

function InitVisibilityForms() {
  var formList = document.getElementsByTagName('form');
  var f, fSumbit, fSelect;
  for (var i=0; i<formList.length; ++i) {
    f = formList[i];
    fSelect = f.elements[1];
    if (fSelect.tagName.toLowerCase() != 'select')
      continue;
    fSelect.onchange = OnVisibilityChanged;
    fSumbit = f.elements[2];
    fSumbit.style.display = 'none';
  }
}

function OnVisibilityChanged() {
  this.parentNode.submit();
}


// friends page

function InitRelationshipForms() {
  InitVisibilityForms();
}


// search page

function InitMemberSearchForm() {
  document.getElementById('fid_region').onchange = function() {
    if (this.selectedIndex == -1) return;
    document.getElementById('fid_country').selectedIndex = 0;
  }
  document.getElementById('fid_country').onchange = function() {
    if (this.selectedIndex == -1) return;
    document.getElementById('fid_region').selectedIndex = 0;
  }
}

function InitShowSearchTerms(buttonText) {
  document.getElementById('searchForm').style.display = 'none';
  var showFormA = document.createElement('a');
  showFormA.innerHTML = buttonText;
  showFormA.href = '#';
  showFormA.onclick = function() {
    document.getElementById('searchTerms').style.display = 'none';
    document.getElementById('searchForm').style.display = 'block';
    this.style.display = 'none';
  };
  var searchTerms = document.getElementById('searchTerms');
  searchTerms.parentNode.insertBefore(showFormA, searchTerms.nextSibling);
}


var mailUpdateTimer;
var mailUpdatePending = 0;
var mailUnreadMail = 0;
var mailNumChatters = 0;

function InitUnreadMail(unreadMail) {
  mailUnreadMail = unreadMail;
  mailNumChatters = getInnerText(document.getElementById('numChatters'));
  mailUpdateTimer = window.setInterval(OnMailUpdateTimer, 60000);  // every 60 secs
}

function ForceMailUpdate() {
  eraseCookie('mailtime');
  OnMailUpdateTimer();
}

function OnMailUpdateTimer() {
  var timeNow = new Date().getTime();
  if (readCookie('mailtime') > timeNow - 60000) {
    return;
  }
  createCookie('mailtime', timeNow, 0);
  if (mailUpdatePending) return;
  mailUpdatePending = 1;
  GetUnreadMail(['NO_CACHE'], [ajaxResponse_GetUnreadMail]);
}

function ajaxResponse_GetUnreadMail() {
  var unreadMail = arguments[0];
  if (unreadMail != mailUnreadMail) {
    mailUnreadMail = unreadMail;
    if (unreadMail > 0) {
      document.getElementById('unreadMail').innerHTML = '<strong><img src="/Content/images/mail-unread.png" alt="unread ">'
        + unreadMail + '</strong>';
    } else {
      setInnerText(document.getElementById('unreadMail'), ' ');
    }
  }
  
  var numChatters = arguments[1];
  if (numChatters != mailNumChatters) {
    mailNumChatters = numChatters;
    setInnerText(document.getElementById('numChatters'), numChatters);
  }
  
  mailUpdatePending = 0;
}

function genpif(s) {
  var ls=s.length,i,t=87,r='_tn_',l=ls>=35?ls+5:40;
  for (i=0;i<l;++i) {t+=s.charCodeAt(i*373%ls)*89;r+=String.fromCharCode((t*131)%25+65);t=(t*177)%1783;}
  return r;
}

function makeAfTicker() {
  document.write('<div><div id=blogtickercontainer><table id=blogticker><tr><td>&nbsp;</td></tr></table></div></div>');
  pageBase = "/users";
  imageBase = "/Content/thumbnail";
  addOnLoadEvent( initAfTicker );
}

function initAfTicker() {
  if (isInternetExplorer()) {
    return getMoreCells();
  }
  var div = document.getElementById('blogtickercontainer').parentNode;
  var img = document.createElement('img');
  img.src = '/Content/images/play';
  img.style.position = 'absolute';
  img.style.left = '169px';
  img.style.top = '2px';
  img.onmouseover = startScroll;
  img.onmouseout = stopScroll;
  div.style.position = 'relative';
  div.appendChild(img);
  getMoreCells();
}


