﻿//*********************************************
//*   Original Script Created by Lupe Barba   *
//*       gbarba@flourbluffschools.net        *
//*       Modified on 6/10/09 For FBISD       *
//*      Do Not Copy With Out Permission      *
//*********************************************



// Row-by-row format for multiple list options
//
// Use the following format to include this script on your webpage within the <BODY>:
//     <script language="JavaScript">
//         var db = new Array;
//         <%
//            i = 0
//            do while i < max
//               response.write "db[" & i & "] = '" & db(i) & "';"
//               i = i + 1
//            loop
//         %>
//         security = "MEMBER";  // REPLACE WITH DESIRED SECURITY LEVEL (MEMBER OR PUBLIC)
//         listtype = "NAME";    // REPLACE WITH DESIRED LIST TYPE (NAME OR CAMPUS)
//         loRange = "";         // REPLACE WITH DESIRED LOW RANGE
//         hiRange = "";         // REPLACE WITH DESIRED HIGH RANGE
//         printable = false;    // REPLACE WITH true IF THIS IS TO BE A PRINTER-FRIENDLY PAGE
//     </script>
//     <script language="JavaScript" src="include/RowBuilder.js"></script>
//
// Parameters passed from calling module: listtype, security, loRange, hiRange, printable

var bgColorCountry, bgColorCity, bgColorName, myFormattedName, myUnformattedName, myGlobe, myHOsuffix, mySpecialty, myMailTo;
var security, listtype, loRange, hiRange, printable;


// ********************* OLD CODE **************************************************************************
// Database index keys follow:
// var iAppStat = 0;            //application status (not yet a member)
// var iFM = 1;                 //founding member
// var iAA = 2;                 //signed agency agreement
// var iClientProfileURL = 3;   //client profile URL
// var iRating = 4;             //1=white star; 2=blue star; 3=green star
// var iVotes = 5;              //accumulated survey votes
// var iSkype = 6;              //has Skype account ("yes")
// var iPangaea = 7;            //has Pangaea account ("yes")
// var iSpecialty = 8;          //T=tradeshow; P=project; H=household; C=courier; V=vehicles; S=slowpayer
// var iName = 9;
// var iProfileURL = 10;
// var iPricingURL = 11;
// var iBankingURL = 12;
// var iCampus = 11;
// var iRegion = 12;
// var iHO = 15;                //head office
// var iCity = 16;
// var iMaxRep = 17;
// var iContact = 18;
// var iAddr1 = 19;
// var iAddr2 = 20;
// var iAddr3 = 21;
// var iAddr4 = 22;
// var iPhone = 13;
// var iFax = 14;
// var iEmail = 15;
// ********************* END OLD CODE **********************************************************************


// Database index keys follow:
var iName = 0;
var iCampus = 1;
var iRegion = 2;
var iPhone = 3;
var iFax = 4;
var iEmail = 5;



// Campus ordinal values
var oCampus = new Array();
oCampus[0] = "Athletics";
oCampus[1] = "Administration";	//   ***********************  DO NOT USE *****************************
oCampus[21] = "Early Childhood Center";
oCampus[3] = "Elementary";
oCampus[4] = "High School";
oCampus[5] = "Intermediate";
oCampus[6] = "IT";
oCampus[7] = "Junior High";
oCampus[8] = "Maintenance";
oCampus[9] = "Nutrition";
oCampus[10] = "Primary";
oCampus[11] = "Print Shop";
oCampus[12] = "Public Information Office";
oCampus[13] = "SDGC";
oCampus[14] = "Special Education";
oCampus[15] = "Transportation";
oCampus[16] = "Unlisted";
oCampus[17] = "UPHS Program";
oCampus[18] = "Central Office";
oCampus[19] = "Performing Arts";
oCampus[22] = "District Security";
oCampus[23] = "Curriculum";


var pathProfURL = 'http://www.globalinknetwork.com/member_profiles/';
var numtest = /[0-9]/;
var alphaAnchor = " ";
var starCode = "wbg";
var myString = new String;
var myData = new Array;
var myIndex = new Array;



//
// SortBy() fourth sort parameter added 5/05/2008
// Third and fourth sort parameters removed 6/10/2009
//
function SortBy(first, second, loRange, hiRange)
{
// ============================================================
// Build a sort key and use it to access db with sort pointers.   
// ============================================================
   myIndex[0] = '#0';
   for (var i = 1; i < db.length; i++)
   {
      myData = ParseToArray(i);
	if (first == iCampus)
      {
         for (var ii = 0; ii < oCampus.length; ii++)
         {
            if (myData[first] == oCampus[ii])    // convert campus to ordinal value defined by iCampus array (table)
            {
               myData[first] = ii;
            }
         }
         if (!numtest.test(myData[first]))
         {
            myData[first] = 99;                  // default sort to end if no campus found
         }
      }
      myIndex[i] = myData[first] + "  " + myData[second] + "  #" + i;
   }
   myIndex.sort();
// ============================================================
// Reduce sorted index to elements between loRange and hiRange.
// ============================================================
   if (loRange > "")
   { 
      for (i = 1; i < myIndex.length; i++)
      {
         if (myIndex[i].substring(0,loRange.length) < loRange)
         {
            var throw_away = myIndex.splice(i,1);
            i = i - 1;
         } 
      }
   }
   if (hiRange > "")
   { 
      for (i = 1; i < myIndex.length; i++)
      {
         if (myIndex[i].substring(0,hiRange.length) > hiRange)
         {
            var throw_away = myIndex.splice(i,1);
            i = i - 1;
         } 
      }
   }
}



function ParseToArray(indx)
{
// ================================================
// FIX DELIMITERS AND PARSE ROW OF DATA TO AN ARRAY
// ================================================
   myString = db[indx];                        // get a row
   myString = myString + ',,,,,,,,,,,,,,,';    // trailing commas eliminate undefined fields
   myString = myString.replace(/,/g,'~');      // isolate commas
   myString = myString.replace(/~"~/g,',"~');  // retrieve trailing commas
   myString = myString.replace(/~ /g,', ');    // retrieve embedded commas
   myString = myString.replace(/"/g,'');       // remove double quotes
   myString = myString.replace(/`/g,"'");      // replace accent with single quotes
   return myString.split('~');                 // unstring into an array
}




// ======================================
// WRITE A FORMATTED ROW: MEMBERS BY NAME
// ======================================
function BuildRowMembersByName()
{
// document.write(RowBreak);
   document.write('<tr>');
   TD_is_Name();
   TD_is_Phone();
   TD_is_Email();
   TD_is_Campus();
   document.write('</tr>');
}




// ========================================
// WRITE A FORMATTED ROW: MEMBERS BY CAMPUS
// ========================================
function BuildRowMembersByCampus()
{
// document.write(RowBreak);
   document.write('<tr>');
   TD_is_Name();
   TD_is_Phone();
   TD_is_Email();
   TD_is_Campus();
   document.write('</tr>');
}




// ========================================
// WRITE A FORMATTED ROW: MEMBERS BY REGION
// ========================================
function BuildRowMembersByRegion()
{
//   document.write(RowBreak);
   document.write('<tr>');
   TD_is_Campus();
   TD_is_Name();
   TD_is_Phone();
   TD_is_Email();
   document.write('</tr>');
}




// =================================
// GENERIC DIRECTORY FORMAT: REGION 
// =================================
function TD_is_Region()   // this used strictly for testing...we never actual print the region in a row
{
   document.write('<td valign="top" align="center">' + myData[iRegion] + '</td>');
}


// =================================
// GENERIC DIRECTORY FORMAT: CAMPUS
// =================================
function TD_is_Campus()
{
   document.write('<td valign="top" align="center">' + myData[iCampus] + '</td>');
}


//************************** old code ***************************************
//***************************************************************************
//function TD_is_City()
//{
// ==============================
// GENERIC DIRECTORY FORMAT: CITY
// ==============================
//   document.write('<td valign="top" ' + bgColorCity + '><p align="center">');
//   if (listtype == "CITY" && myData[iCity].charAt(0) > alphaAnchor)
//   {
//      alphaAnchor = myData[iCity].charAt(0);
//      document.write('<a name="goto' + alphaAnchor + '"></a>');
//   } 
//   document.write('<font size="2" face="Tahoma" color="#000080"><b>' + myData[iCity] + '</b></font>');
//   document.write('<font face="Tahoma" color="#000080" size="1"> ' + myData[iMaxRep] + '</font></td>');
//}
//************************** end old code ***********************************
//***************************************************************************


// ==============================
// GENERIC DIRECTORY FORMAT: EMAIL
// ==============================
function TD_is_Email()
{
   document.write('<td align="center" valign="top" ' + bgColorCity + '>');
   document.write(myData[iEmail]);
}


//************************** old code ***************************************
//function TD_is_Rating()
//{
// ======================================================
// GENERIC DIRECTORY FORMAT: RATING (STAR) AND VOTE COUNT
// ======================================================
//   if (security == "MEMBER")
//   {
//      document.write('<td valign="top" align="center">' + myData[iRating] + '</td>');
//   }
//}



//************************** old code ***************************************
//function TD_is_FM()
//{
// ==================================================
// GENERIC DIRECTORY FORMAT: FOUNDING MEMBER INSIGNIA
// ==================================================
//   document.write('<td valign="top" align="center">' + myGlobe + '</td>');
//}


// ==================================================
// GENERIC DIRECTORY FORMAT: PHONE NUMBER
// ==================================================
function TD_is_Phone()
{
   document.write('<td valign="top" align="center">' + (myData[iPhone]) + '</td>');
}


// ==============================
// GENERIC DIRECTORY FORMAT: NAME
// ==============================
function TD_is_Name()
{
   document.write('<td valign="top"' + bgColorName + '>');
   if (listtype == "NAME" && myUnformattedName.charAt(0) > alphaAnchor)
   {
      alphaAnchor = myUnformattedName.charAt(0);
      document.write('<a name="goto' + alphaAnchor + '"></a>');
   } 
   document.write(myData[iName] + '');
//   if (security == "MEMBER" || security == "CLIENT")    ***********************************************  Adds Address Info
//   {
//      document.write(myData[iAddr1]);
//      document.write(myData[iPhone]);
//      document.write(myData[iFax]);
//      document.write(myData[iEmail]);
//   }
//   if ( security == "MEMBER" && ( myData[iPricingURL] != "" || myData[iBankingURL] != "" || myData[iSkype] != "" || myData[iPangaea] != "" || myData[iSpecialty] != "") && printable != true )
//   {
//      document.write('<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" width="100%" bgcolor="#F4F4F4" bordercolor="#C0C0C0">');
//      document.write('  <tr>');
//      document.write('    <td width="25%" align="center">');
//      document.write('       <font color="#0066CC" size="2"><b>' + myData[iPricingURL] + '</b></font>');
//      document.write('    </td>');
//      document.write('    <td width="25%" align="center">');
//      document.write('       <font color="#0066CC" size="2"><b>' + myData[iBankingURL] + '</b></font>');
//      document.write('    </td>');
//      document.write('    <td width="25%" align="center">');
//      document.write(mySpecialty);
//      document.write('    </td>');
//      document.write('    <td width="25%" align="center">');
//      document.write(myData[iSkype]);
//      document.write(myData[iPangaea]);
//      document.write('    </td>');
//      document.write('  </tr>');
//      document.write('</table>');
//   }
   document.write('</td>');
}


// ===========================
// MAIN SCRIPT STARTS HERE!!!
// ===========================



// ***************************** OLD CODE **********************************************
// SortBy() fourth sort parameter added 5/05/2008 
// iName in Region sort is the only significant fourth sort parameter
//
// ==========================
// SPECIFY LIST TYPE AND SORT
// ==========================
//   if (listtype == "NAME")
//   {
//      SortBy(iName,iCampus,iCity,iFM,loRange,hiRange);
//   }
//   if (listtype == "CITY")
//   {
//      SortBy(iCity,iCampus,iName,iFM,loRange,hiRange);
//   }
//   if (listtype == "REGION")
//   {
//      SortBy(iRegion,iCampus,iCity,iName,loRange,hiRange);
//   }
// ***************************** END OLD CODE ******************************************


// SortBy() fourth sort parameter added 5/05/2008 
// iName in Region sort is the only significant fourth sort parameter
// Third and fourth sort parameters removed 6/10/2009
//
// ==========================
// SPECIFY LIST TYPE AND SORT
// ==========================
   if (listtype == "NAME")
   {
      SortBy(iName,iCampus,loRange,hiRange);
   }
   if (listtype == "CAMPUS")
   {
      SortBy(iCampus,iName,loRange,hiRange);
   }
      if (listtype == "REGION")
   {
      SortBy(iRegion,iName,loRange,hiRange);
   }



// ===============================================
// LOOP THROUGH ENTIRE ARRAY, SKIPPING HEADING ROW
// ===============================================
   for (var i = 1; i < myIndex.length; i++)
   {




// ===========
// Apply Rules
// ===========

// =================================
// Get previous row and current row.
// =================================
      var i1 = myIndex[i-1].substr(myIndex[i-1].lastIndexOf("#") + 1);
      var i2 = myIndex[i].substr(myIndex[i].lastIndexOf("#") + 1);
      myPrev = ParseToArray(i1);
      myData = ParseToArray(i2);

//************************** old code ***************************************
// =================================================================================
// If this is a founding member, display an image. Remove Comment Marks to activate
// =================================================================================
//      myGlobe = '';
//      if (myData[iFM] == "F")
//      {
//         myGlobe = '<p align="center"><img border="0" src="image/FM2.jpg" width="32" height="20">';
//      }
//
// =================================================================================
// If this is the head office, indicate that.  Remove Comment Marks to activate
// =================================================================================
//      myHOsuffix = '';
//      if (myData[iHO] > "")
//      {
//         myHOsuffix = " - Head Office";
//      }


// =================================================================================
// If person has website link to it.  
// =================================================================================
//      myFormattedName = myData[iName];     //prepare to format
      myUnformattedName = myData[iName];   //preserve original
//      if ((security == "MEMBER" && myData[iProfileURL] != "") || (security == "CLIENT" && myData[iProfileURL] != "" && myData[iClientProfileURL] == ""))
//      {
//         myFormattedName = '<a target="_blank" href="' + pathProfURL + myData[iProfileURL] + '_pro.html">' + myData[iName] + '</a>' + myHOsuffix;
//      } else {
//         if (security == "CLIENT" && myData[iClientProfileURL] != "")
//         {
//            myFormattedName = '<a target="_blank" href="' + pathProfURL + myData[iClientProfileURL] + '_pro_CL.html">' + myData[iName] + '</a>' + myHOsuffix;
//         } else {
//            myFormattedName = myData[iName] + myHOsuffix;
//         }
//      }
//      myData[iName] = myFormattedName;


//************************** old code ***************************************
// =================================================================================
// If this company has pricing info, link to it.  Remove Comment Marks to activate
// =================================================================================
//      if (security == "MEMBER" && myData[iPricingURL])
//      {
//         myData[iPricingURL] = '<a target="_blank" href="' + pathProfURL + myData[iPricingURL] + '_pricing.html"><div style="color: #0066CC; font-size: 7pt; padding: 0 5 0 5">Pricing</div></a>';
//      }
//
// ==========================================
// If this company has bank info, link to it.
// ==========================================
//      if (security == "MEMBER" && myData[iBankingURL])
//      {
//         myData[iBankingURL] = '<a target="_blank" href="' + pathProfURL + myData[iBankingURL] + '_bank.html"><div style="color: #0066CC; font-size: 7pt; padding: 0 5 0 5">Banking/Payment</div></a>';
//      }
//
// ==============================================================
// If this company has Skype info, link to the Skype member page.
// ==============================================================
//      if (security == "MEMBER" && myData[iSkype])
//      {
//         myData[iSkype] = '<a target="_blank" href="Skype_Members_print.asp"><img border="0" src="image/skype.jpg"></a>';
//      }
//
// ================================================================
// If this company has Pangaea info, link to the Skype member page.
// ================================================================
//      if (security == "MEMBER" && myData[iPangaea])
//      {
//         myData[iPangaea] = '<a target="_blank" href="Skype_Members_print.asp"><img border="0" src="image/pangaea.jpg"></a>';
//      }
//
// =================================================
// If this company has specialties, display an icon.
// =================================================
//      mySpecialty = '';
//      if (security == "MEMBER")
//      {
//         if (myData[iSpecialty].indexOf("T") != -1)
//         {
//            mySpecialty = mySpecialty + '<img border="0" src="image/icons/Trade-Shows.jpg" alt="Trade Shows and Exhibitions">';
//         }
//         if (myData[iSpecialty].indexOf("P") != -1)
//         {
//            mySpecialty = mySpecialty + '<img border="0" src="image/icons/Project.jpg" alt="Project Forwarding">';
//         }
//         if (myData[iSpecialty].indexOf("H") != -1)
//         {
//            mySpecialty = mySpecialty + '<img border="0" src="image/icons/household.jpg" alt="Household Goods Moving">';
//         }
//         if (myData[iSpecialty].indexOf("C") != -1)
//         {
//            mySpecialty = mySpecialty + '<img border="0" src="image/icons/Courier.jpg" alt="Courier Services">';
//         }
//         if (myData[iSpecialty].indexOf("V") != -1)
//         {
//            mySpecialty = mySpecialty + '<img border="0" src="image/icons/Vehicles.jpg" alt="Vehicle Transportation">';
//         }
//         if (myData[iSpecialty].indexOf("S") != -1)
//         {
//            mySpecialty = mySpecialty + '<img border="0" src="image/icons/dollar-sign.jpg" alt="Slow Payer">';
//         }
//      }
//
// ==============================================================
// If this company has survey info, show rating.
// ==============================================================
//      if (myData[iRating] > "0" && myData[iRating] < "4")
//      {
//         myData[iRating] = starCode.charAt(myData[iRating] - 1);
//         myData[iRating] = '<img border="0" src="image/star-' + myData[iRating] + '.jpg"><br><span style="font-size: xx-small">' + myData[iVotes] + '</span>';
//      }
//
// =====================================
// Concatenate and format address lines.
// =====================================
//      if (myData[iAddr2] != "") 
//      {
//         myData[iAddr1] = myData[iAddr1] + '<br>' + myData[iAddr2];
//      }
//      if (myData[iAddr3] != "") 
//      {
//         myData[iAddr1] = myData[iAddr1] + '<br>' + myData[iAddr3];
//      }
//      if (myData[iAddr4] != "") 
//      {
//         myData[iAddr1] = myData[iAddr1] + '<br>' + myData[iAddr4];
//      }
//      if (myData[iAddr1] != "") 
//      {
//         myData[iAddr1] = '<br>' + myData[iAddr1];
//      }


// ======================================
// Format optional phone/fax/email lines.
// ======================================
      if (myData[iPhone] != "")
      {
         myData[iPhone] = myData[iPhone];
      }
//      if (myData[iFax] != "")
//      {
//         myData[iFax] = '<br>Fax: +' + myData[iFax];
//      }
      if (myData[iEmail] != "")
      {
         myData[iEmail] = '<a href="mailto:' + myData[iEmail] + '" style="text-decoration: underline; text-underline: single">' + myData[iEmail] + '</a>';
      }



//************************** old code ***************************************
// ============================================================================================
// If application status is "received" or "approved", reduce COMPANY information to name alone.
// ============================================================================================
//      if (myData[iAppStat] == "R")
//      {
//         myData[iAppStat] = "(Application Received)"
//      }
//      if (myData[iAppStat] == "A")
//      {
//         myData[iAppStat] = "(Application Approved)"
//      }
//      if (myData[iAppStat] > " ")
//      {
//         myData[iName] = '<span style="color: #C0C0C0">' + myUnformattedName + '</span><span style="color: #C0C0C0; font-weight:700"><font size="1"> ' + myData[iAppStat] + '</font></span>';
//         myData[iAddr1] = "";
//         myData[iAddr2] = "";
//         myData[iAddr3] = "";
//         myData[iAddr4] = "";
//         myData[iPricingURL] = "";
//         myData[iBankingURL] = "";
//         myData[iSkype] = ""; 
//         myData[iPangaea] = ""; 
//         myData[iSpecialty] = ""; 
//         myData[iPhone] = "";
//         myData[iFax] = "";
//         myData[iEmail] = "";
//         myData[iHO] = "";
//      }
//
// =========================================
// Suppress duplicate Country and City data.
// =========================================
//      myData[iMaxRep] = '(' + myData[iMaxRep] + ')'; 
//      bgColorCity = 'bgcolor="#DEECF3" ';
//      bgColorCountry = 'bgcolor="#E5E5E5" ';
// =================================================
// If same as previous country, leave country blank.
// =================================================
//      if (myData[iCountry] == myPrev[iCountry])
//      {
//         RowBreak = '';
//         myData[iCountry] = '';
//         bgColorCountry = '';
// ============================================================
// If same country AND same as previous city, leave city blank.
// ============================================================
//         if (myData[iCity] == myPrev[iCity])
//         {
//            myData[iCity] = '';
//            myData[iMaxRep] = '';
//            bgColorCity = '';
//         }   
//      }
//      else 
//      {
//         RowBreak = '<tr><td height="10"></td><td height="10"></td><td height="10"></td><td height="10"></td></tr>';
//      }
//      if (i == 1)
//      {
//         RowBreak = '';
//      }


//************************** old code ***************************************
// =================================
// Miscellaneous format adjustments.
// =================================
//      if (security == "MEMBER")
//      {
//         bgColorCity = '';
//      }
//      if (listtype == "NAME")
//      {
//         myData[iMaxRep] = '';
//      }
//      bgColorName = '';
//
//      if ((security == "MEMBER" || security == "CLIENT") && myData[iAA] == "X")
//      {
//         bgColorName = 'bgcolor="#EAF4FF" ';
//      } else {
//        if ((security == "MEMBER" || security == "CLIENT") && myData[iAA] == "B")
//        {
//           bgColorName = 'bgcolor="#FFDFDF" ';
//        } else {
//           bgColorName = '';
//        }
//      }



// ===================================
// Output a row in the desired format.
// ===================================
      if (listtype == "NAME")
      {
         BuildRowMembersByName();
      }
      if (listtype == "CAMPUS")
      {
         BuildRowMembersByCampus();
      }
      if (listtype == "REGION")
      {
         BuildRowMembersByRegion();
      }

   }
// ================
// END OF MAIN LOOP
// ================


