//JOADOC   This file contains the function used for  exporting the List Data

//JOADOC   in the CSV format.



//JOADOC   Function Name:  fnStripFinWhiteSpaces()

//JOADOC   Description  :  This function takes an input string and trims

//JOADOC                   the final white spaces, if any.

//JOADOC                   It takes only one parameter, String of value.

//JOADOC                   POtheInput : The string containg data.

//JOADOC   It returns the String without any whitespaces.

function fnStripFinWhiteSpaces(POtheInput)

{

  for (var LICount=POtheInput.length;LICount>0;LICount--)

  {

    if ((POtheInput.substring(LICount-1,LICount) != " "))

    {

      break;

    }

  }

  return(POtheInput.substring(0,LICount));

}



//JOADOC   Function Name:  fnStripIniWhiteSpaces()

//JOADOC   Description  :  This function takes an input string and trims

//JOADOC                   the initial white spaces, if any.

//JOADOC                   It takes only one parameter, String of value.

//JOADOC                   POtheInput : The string containg data.

//JOADOC   It returns the String without any initial whitespaces.

function fnStripIniWhiteSpaces(POtheInput)

{

  for (var LICount=0;LICount<POtheInput.length;LICount++)

  {

    if ((POtheInput.substring(LICount,LICount+1) != " "))

    {

      break;

    }

  }

  return(POtheInput.substring(LICount,POtheInput.length));

}



//JOADOC   Function Name:  fnStripIniWhiteSpaces()

//JOADOC   Description  :  This function takes an input string and trims

//JOADOC                   the initial and final white spaces, if any.

//JOADOC                   It takes only one parameter, String of value.

//JOADOC                   POtheInput : The string containg data.

//JOADOC   It returns the String without any initial and final whitespaces.

function fnStripWhiteSpaces(POtheInput)

{

  var LSIniVal = fnStripIniWhiteSpaces(POtheInput);

  var LSFinVal = fnStripFinWhiteSpaces(LSIniVal);

  var LSVal='';

  for(i = 0 ; i<LSFinVal.length; i++)

  {

    if(LSFinVal.charCodeAt(i)!=160)

    {

      LSVal = LSVal+LSFinVal.charAt(i);

    }

  }

  return LSVal;

}

//JOADOC   Function Name:  fnIsEmpty()

//JOADOC   Description  :  The function returns true if input string is empty, 

//JOADOC                   else returns false.

//JOADOC                   PSStr : The string containg data.

//JOADOC   It returns true or false.



function fnIsEmpty(PSStr)

{   

  return ((PSStr == null) || (PSStr.length == 0))

}



//JOADOC   Function Name:  fnIsWhitespace()

//JOADOC   Description  :  The function returns true if input string contains  

//JOADOC                   any whitespace(defined as a var) or empty, else returns false

//JOADOC                   PSStr : The string containg data.

//JOADOC   It returns true or false.

function fnIsWhitespace (PSStr)

{   

  var LICounter;

  if (fnIsEmpty(PSStr)) return true;

  for (LICounter = 0; LICounter < PSStr.length; LICounter++)

  {

    var LSPositionValue = PSStr.charAt(LICounter);

    if (LSWhitespace.indexOf(LSPositionValue) == -1) 

    {

      return false;

    }

  }

  return true;

}



//JOADOC   Function Name:  printCSV()

//JOADOC   Description  :  This function will make a CSV file

//JOADOC                   tableId : ID of the List Table which needs to be exported.

//JOADOC   It returns nothing.

function printCSV(tableId) 

{

  var fileName, Head1Count=0, Head2Count=0;

  var writeData, fd;

  fileName = prompt("Enter the path to save CSV file:", "C:\\csvs\\");

  if(fileName == null)

  {

    return false;

  }

  if(fnIsEmpty(fileName))

  {

    alert("Path can't be empty");

    return false;

  }

  else

  {

    var folderExist = isFolderExist(fileName);

    if(!folderExist)

    {

      alert("Folder does not exist");

      return;

    }

    today = new Date();

		fileName += "CSV" + today.getYear() + today.getMonth() + today.getDate() + today.getHours() +  today.getMinutes() + today.getSeconds() + today.getTime();

		randomnumber = Math.floor(Math.random()*1000);

		fileName += randomnumber + ".csv";

  }

  tableObj = document.getElementById(tableId);

  // Creating new file on the user's file system using VBScript

  // Function and opening the file 



  createFile(fileName);

  fd = OpenFile(fileName);

  myrow=tableObj.getElementsByTagName("TR");

  writeData = "";

  headRow   = myrow[0];

  myHcell   = headRow.getElementsByTagName("TH");

  for(lh=0; lh <myHcell.length; lh++)

  {

    tempHcell = myHcell[lh];

    myHcelltext=tempHcell.childNodes[0];

    if(myHcelltext.nodeName =='SPAN')

    {

      myHcelltext=tempHcell.childNodes[1];

    }

    if( myHcelltext.data != null)

    {

      data =fnStripWhiteSpaces(myHcelltext.data);

      if(data  != 'Select' && data  != ""  && 

         data  != " "      &&  data != '&nbsp;')

      {

        writeToFile("\"" + myHcelltext.data + "\",", fd);

      }

    }

  } // end Head1 cell for



  for(k=0; k<myrow.length;k++)

  {



    mycel=myrow[k].getElementsByTagName("TD");

    for(l=0; l<mycel.length; l++)

    {

      tempcel = mycel[l];

      myceltext=tempcel.childNodes[0];

      if(myceltext)

      {

        switch(myceltext.nodeName)

        {

          case 'INPUT':

            var node = tempcel.childNodes[0];

            if((node.name == ('chkSelect_'+tableId) || 

                node.name == ('radSelect_'+tableId))&& node.disabled)

            {

              CloseFile(fd);  

              return;

            }

            if(node.type != 'radio' && node.type != 'hidden' && node.type != 'checkbox')

            {

              writeToFile(node.value + ",", fd);

            }

            else if(node.type == 'checkbox'&& node.name.indexOf("chkSelect")==-1)

            {    

              if(node.checked)

              {

                writeToFile("Y" + ",", fd);

              }

              else

              {

                writeToFile("N"+ ",", fd);  

              } 

            }

                

            break; 

          case 'SELECT':

            var cboList = tempcel.childNodes[0].name;

            var n = eval("document.forms[0]." + cboList+"[k-1].selectedIndex")

            writeToFile(eval("document.forms[0]." + cboList+"[k-1].options[n].text") + ",", fd);

            break;

          case '#text':

            if(myceltext.data != null)

            {

              data = fnStripWhiteSpaces(myceltext.data);

              if( data != 'Select' && data != "" && data != " " && 

                  data != '&nbsp;' && escape(myceltext.data) != '%A0')

              {							

                writeToFile("\"" + myceltext.data + "\",", fd);

              }

              else

              {

                writeToFile("\""  + "\",", fd);

              }

            }

            break;

          default:

            break;

        }// end switch

      }

      else

      {

        writeToFile("\""  + "\",", fd);

      }

    } // end cell for

    writeToFile("\n", fd);

  }//end row for

  CloseFile(fd);

}//end function
