/*
 * videoServers.js
 *
 * a set of funcstions and globals that manages which the server on which certain data is available
 *
 * MASTER COPY ON MOVIES3.LOVINGHONORS.COM:/USR/LOCAL/APACHE/HTDOCS/FUNERALHOMES/CGI_HTML/videoServers.js
 *   ALL OTHERS SERVERS MUST BE A COPY OF THIS FILE
 *
 */


function vServer(name,ip0,ip1,ip2,ip3,mask0,mask1,mask2,mask3,availCode)
{
  this.name = name;
  this.ip = new Array(ip0,ip1,ip2,ip3);
  this.mask = new Array(mask0,mask1,mask2,mask3);
  this.availCode = availCode;
}



var videoOnServersCode = 0;
var picsOnServerCode = 0;
var vServers = new Array();
var globalPicsPath = "";
var slideData = new Array();


var basePublicLoginServer = 0;


//vServers[0] = new vServer("movies.lovinghonors.com",206,28,50,202,255,255,255,255,1);
//vServers[1] = new vServer("movies1.lovinghonors.com",68,208,154,160,255,255,255,224,2);
//vServers[2] = new vServer("movies2.lovinghonors.com",142,179,222,136,255,255,255,248,4);

//vServers[0] = new vServer("movies.lovinghonors.com",206,28,50,202,255,255,255,255,1);
vServers[0] = new vServer("movies3.lovinghonors.com",65,173,90,73,255,255,255,255,8);
vServers[1] = new vServer("movies1.lovinghonors.com",68,208,154,160,255,255,255,224,2);
//vServers[2] = new vServer("movies2.lovinghonors.com",142,179,222,136,255,255,255,248,4);
vServers[2] = new vServer("movies2.lovinghonors.com",206,28,50,200,255,255,255,248,4);
//vServers[3] = new vServer("movies3.lovinghonors.com",142,179,222,136,255,255,255,248,8);


function setVideoOnServerCode(s){
  videoOnServersCode = s;
}


function setPicsOnServerCode(s){
  picsOnServersCode = s;
}


function chooseInitialLoginServer(vType,vidAvail,picAvail,remoteIP)
{
  var i;

  if (vType=='#' || (picAvail==0 && vidAvail==0)){
    return(vServers[whichMovieServer(remoteIP)].name);
  }
  for (i=0;i<vServers.length;i++){
    if (vServers[i].availCode == vidAvail) return(vServers[i].name);
  }
  for (i=0;i<vServers.length;i++){
    if (vServers[i].availCode == picAvail) return(vServers[i].name);
  }
//  i = Math.floor(vServers.length * Math.random());
//  if (i == vServers.length) i--;
  i = basePublicLoginServer;
  return(vServers[i].name);

}


function getVideoUploadServer(serverMask)
{
  var i;
  for (i=0;i<vServers.length;i++){
    if (vServers[i].availCode == serverMask) return("http://" + vServers[i].name);
  }
  return("");
}

function setSlideData(lineNum,picName,textContent)
{
  this.lineNum = lineNum;
  this.picName = picName;
  this.textContent = textContent;
  if (picName.length > 0) this.img = new Image();
//alert(getCompletePicsPath());
  this.img.src = getCompletePicsPath() + picName;
}


function sortSlideData(a,b)
{
  if (a.lineNum < b.lineNum) return(-1);
  if (a.lineNum > b.lineNum) return(1);
  return(0);
}


function choosePicsServer(agencyNum)
{
  var i;
  var j = 0;
  var servers = new Array();
  var t;


  for (i=0;i<vServers.length;i++){
    if ((picsOnServersCode & vServers[i].availCode) != 0) servers[j++] = vServers[i].name;
  }
  if (servers.length == 0) return("");
  i = Math.round(Math.random() * servers.length);
  if (i == servers.length) i--;
  t = "http://" + servers[i] + "/"; // + getPartialPath(agencyNum) + "/videoTribute/";
  return(t);
}



function chooseDownloadServer(agencyNum)
{
  var i;
  var j = 0;
  var servers = new Array();
  var t;


  for (i=0;i<vServers.length;i++){
    if ((videoOnServersCode & vServers[i].availCode) != 0) servers[j++] = vServers[i].name;
  }
  if (servers.length == 0) return("");
  i = Math.round(Math.random() * servers.length);
  if (i == servers.length) i--;
  t = "http://" + servers[i] + "/" + getPartialPath(agencyNum) + "/videoTribute/";
  return(t);
}


function getPartialPath(agencyNum)
{
  switch(agencyNum.toLowerCase().slice(0,1)){
    case '0':
    case '1':
    case '2':
    case '3':
    case '4':
    case '5':
    case '6':
    case '7':
    case '8':
    case '9':
    case 'a':
    case 'b':
    case 'c':
    case 'd':
    case 'e':
      return("a-e/" + agencyNum);
    case 'f':
    case 'g':
    case 'h':
    case 'i':
    case 'j':
      return("f-j/" + agencyNum);
    case 'k':
    case 'l':
    case 'm':
    case 'n':
    case 'o':
      return("k-o/" + agencyNum);
    case 'p':
    case 'q':
    case 'r':
    case 's':
    case 't':
      return("p-t/" + agencyNum);
    default:
      return("u-z/" + agencyNum);
  }
}




function checkVDGLogin(tf)
{
  var i = whichMovieServer(tf.ip.value);
  var j;

  if (tf.demandedServer.value > 0){
    for (j=0;j<vServers.length;j++){
      if (tf.demandedServer.value == vServers[j].availCode) break;
    }
    i = j;
  }
//alert(i);
//i=0;

  tf.suggestedServer.value = "" + vServers[i].availCode;
  tf.action = "http://" + vServers[i].name + tf.action;
//alert(tf.suggestedServer.value);
alert(tf.action);
//  return(false);
  return(true);
}



function setCompletePicsPath(agencyNum,obitNum)
{
  globalPicsPath = choosePicsServer(agencyNum) + getPartialPath(agencyNum) + "/videoTribute/" + obitNum + "/";
}

function getCompletePicsPath()
{
  return(globalPicsPath);
}





function viewVideo(connection,agencyNum,obitNum)
{
  var h;

  h = chooseDownloadServer(agencyNum) + obitNum + "/" + obitNum + connection + ".wmv";
  window.location = h;
  return(false);
}




function ipInRange(serverIP,serverMask,remoteIP)
{

//alert("ipInRange():\nserverIP: " + serverIP + "\nremoteIP: " + remoteIP + "\nserverMask: " + serverMask);

  var i = remoteIP - serverIP;
//alert(i);
  if (i < 0) return(false);
//alert("serverMask ^ 255): " + (serverMask ^ 255));
  i = (serverMask ^ 255) >= i;
  return(i);
}



function whichMovieServer(remoteIP)
{
  var i;
  var rIP = remoteIP.split(".");
  var vs = vServers;
  var b0,b1,b2,b3;

//if (remoteIP == "142.179.222.140") return(1);

//return(0);

//alert("removeIP: " + remoteIP + "\nrIP[0]: " + rIP[0] + "\nrIP[1]: " + rIP[1] + "\nrIP[2]: " + rIP[2] + "\nrIP[3]: " + rIP[3]);
  for (i=0;i<vs.length;i++) {
    if (ipInRange(vs[i].ip[0],vs[i].mask[0],rIP[0]) && ipInRange(vs[i].ip[1],vs[i].mask[1],rIP[1]) && ipInRange(vs[i].ip[2],vs[i].mask[2],rIP[2]) && ipInRange(vs[i].ip[3],vs[i].mask[3],rIP[3])) break;
  }
//alert("whichMovieServer: serverIndex: " + i);
  if (i < vs.length) return(i);
//  i = Math.floor(vs.length * Math.random());
//  if (i == vs.length) i--;
//  return(i);
return(basePublicLoginServer);
}

