var emptyTags = new Object();
emptyTags['IMG'] = "IMG";
emptyTags['BR'] = "BR";
emptyTags['HR'] = "HR";
emptyTags['BASE'] = "BASE";
emptyTags['BASEFONT'] = "BASEFONT";
emptyTags['LINK'] = "LINK";
emptyTags['PARAM'] = "PARAM";
emptyTags['INPUT'] = "INPUT";

var exportAttributes = new Object();
var att = new Array(
'href', 'src', 'style','height', 'width', 'id', 'class', 'target', 'name', 'background',
'bgcolor', 'alink', 'vlink', 'link', 'value', 'type','align', 'valign',
'border', 'hspace', 'vspace', 'type' ,'text'
);


for(var i = 0; i < att.length; i++) {
    exportAttributes[att[i]] = true;
    exportAttributes[att[i].toUpperCase()] = true;
}

var DOCUMENT_CONTENT_STRING = "";
/*
var Header = 
'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML><HEAD>' + "\n"
 + '<style type = "text/css">#content, #index, body { font-size: 11pt; }' + "\n"
 + ' .textfont { font-size: 11pt; color: white; }'  + "\n"
 + '#content, #index { position:absolute; font-style:normal; } </style>'+ "\n"
 + '<Title>ReReading the News</Title>' + "\n"
 +  '<script language="javascript">function getFile(url) { open(url, "newsWin"); }</script>'+ "\n"
 + ' </HEAD>'+ "\n"
 + '<body bgcolor="black" text="white" link="white" vlink="white" alink="white">'
 + "\n";
*/
function exportDocument(n) {

  var attrStr = getAttributes(n);    
  var element = n.nodeName;
  // DOCUMENT_CONTENT_STRING = Header;
  DOCUMENT_CONTENT_STRING += "<" + element + " " + attrStr + ">";

  var children = n.childNodes;              
     for(var i=0; i < children.length; i++) {  
      if(n.nodeType == 1) {
       if(emptyTags[children[i].nodeName])
          getEmptyTag(children[i]);    
       else  getClosedTag(children[i]);
      }
      else if (n.nodeType == 3) getTextNode(n);
     }

  DOCUMENT_CONTENT_STRING += "</" + element + ">\n";

}


function getTextNode(n) {
    DOCUMENT_CONTENT_STRING += n.data;

     var children = n.childNodes;              
     for(var i=0; i < children.length; i++) {  
      if(n.nodeType == 1) {
       if(emptyTags[children[i].nodeName])
         getEmptyTag(children[i]);    
       else getClosedTag(children[i]);
      }
      else if (n.nodeType == 3) getTextNode(n);
     }

}

function getStyles(n,attrStr) {
if(attrStr && attrStr.match(/style/)) return null;

var styles = "";
styles += n.style.cssText;
styles = '  style="' + styles + '"';
return styles;
}

function getClosedTag(n) {
   
  if(n.nodeType == 1) {
    var attrStr = getAttributes(n);    
    var style = getStyles(n,attrStr);
    if(style) attrStr += style;       
    var element = n.nodeName;
    DOCUMENT_CONTENT_STRING += "<" + element + " " + attrStr + ">";
  }
  else if (n.nodeType == 3) getTextNode(n);

     var children = n.childNodes;              
     for(var i=0; i < children.length; i++) {  
      if(n.nodeType == 1) {
       if(emptyTags[children[i].nodeName])
         getEmptyTag(children[i]);    
       else getClosedTag(children[i]);
      }
      else if (n.nodeType == 3) getTextNode(n);
     }
     if(element)
      DOCUMENT_CONTENT_STRING += "</" + element+ ">";
}

function getEmptyTag(n) {
  if(n.nodeType == 1) {
    var attrStr = getAttributes(n);    
    var element = n.nodeName;
    DOCUMENT_CONTENT_STRING += "<" + element + " " + attrStr + ">";
  }

    var children = n.childNodes;              
     for(var i=0; i < children.length; i++) {  
      if(n.nodeType == 1) {
       if(emptyTags[children[i].nodeName])
         getEmptyTag(children[i]);    
       else getClosedTag(children[i]);
      }
      else if (n.nodeType == 3) getTextNode(n);

     }

}



function getAttributes(n) {
var str = "\n ";
var nattr = n.attributes;
if(nattr.length == 0) return "";
var len = att.length; //array of useful attributes
if(n.nodeName == 'SCRIPT') len--; //IE screws up SCRIPT when accessing 'text', which is not
                                  // one of its attributes

	for(var i=0; i < len; i++) {   
             var value = n.getAttribute(att[i]);
             if(value) {                      
               if(typeof value == "object") continue;
    
                str += " " + att[i] + "=\"" + value +"\""; 
             }
             }

         

  return str + "\n";
}

