•
•
•
•
What is DaniWeb IT Discussion Community?
You're currently browsing the JavaScript / DHTML / AJAX section within the Web Development category of DaniWeb, a massive community of 456,418 software developers, web developers, Internet marketers, and tech gurus who are all enthusiastic about making contacts, networking, and learning from each other. In fact, there are 2,597 IT professionals currently interacting right now! Registration is free, only takes a minute and lets you enjoy all of the interactive features of the site.
Please support our JavaScript / DHTML / AJAX advertiser: Lunarpages Web Hosting
Views: 5351 | Replies: 1
![]() |
•
•
Join Date: Jan 2007
Posts: 5
Reputation:
Rep Power: 0
Solved Threads: 0
Hello all,
I am new to javascript and cross-browsing. I have a XSLT generated HTML document which works fine ini IE and opera but have problems with firefox. I tried to debug with firebug but i have no idea what should i do next to fix the problem. I would greatly appreciate if anybody help me figuring this out. Here is my html document:
<html xmlns
leepXML="http://www.SleepXML.org">
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>SleepXML.com</title>
<STYLE type="text/css">
.infotable
{
font: Icon;
border: 1px Solid ThreeDShadow;
background: Window;
color: WindowText;
MARGIN-LEFT: 10px;
}
.issuetable
{
font: Icon;
border: none;
MARGIN-LEFT: 10px;
}
.records
{
color:gray;
}
b.entities
{
margin-left:10px;
text-align:right;
color:blue;
font-weight:normal;
}
.issuetitle
{
background: ButtonFace
border: 1px Solid ThreeDShadow;
cursor: default;
}
.header
{
background: ButtonFace
cursor: default;
}
.content
{
padding: 2px 5px;
}
.expandable
{
CURSOR: hand;
}
.collapsed
{
DISPLAY: none;
}
H2 {
color: black;
font-size: 12pt;
font-weight:bold;
cursor: default;
}
small
{
color:red;
}
.divstyle {
padding: 10px 10px 10px 10px;
border: 1px Solid ThreeDShadow
border-color: ButtonHighlight ButtonShadow
ButtonShadow ButtonHighlight;
margin: 2px auto 1px auto;
}
CAPTION.MYTABLE {
}
TABLE.MYTABLE {
Font: Icon;
border: 1px Solid ThreeDShadow;
background: Window;
color: WindowText;
width: 90%
}
TH.MYTABLE {
background: ButtonFace
cursor: default;
}
TR.MYTABLE {
}
TD.MYTABLE {
padding: 2px 5px;
}
.tabset_tabs {
margin:0px;
padding:0px;
list-style-type:none;
position:relative;
z-index:2;
white-space:wrap;
}
.tabset_tabs li {
margin:0px;
padding:0px;
display:inline;
}
.tabset_tabs a {
color:black;
background-color:ButtonFace ! important;
border-color: ButtonShadow ButtonHighlight
ButtonHighlight ButtonShadow;
text-decoration:none;
padding:0em 0.6em;
}
.tabset_tabs a:hover {
color:black! important;
background-color:white ! important;
}
.tabset_tabs a.active {
color:black ! important;
background-color:white ! important;
border-color: ButtonShadow ButtonHighlight
ButtonHighlight ButtonShadow;
border-left-width:1px;
cursor:default;
padding-top:1px;
padding-bottom:1px;
}
.tabset_tabs li.firstchild a {
border-left-width:1px ;
}
.tabset_content {
background: #f4f4f4;
z-index:2;
padding:0.5em 1em;
display:none;
}
.tabset_label { display:none; }
.tabset_content_active { display:block; }
@media aural{
.tabset_content,
.tabset_label { display:block; }
}
</STYLE>
<script language="javascript" type="text/javascript">
//***collapsible rows
function outliner() {
oMe = window.event.srcElement;
//get child element
var child = document.all[event.srcElement.getAttribute("child",false)];
//if child element exists, expand or collapse it.
if (null != child)
child.className = child.className == "collapsed" ? "expanded" : "collapsed";
}
function changepic() {
uMe = window.event.srcElement;
var check = uMe.src.toLowerCase();
if (check.lastIndexOf("expand.gif") != -1)
{
uMe.src = "collapse.gif";
}
else
{
uMe.src = "expand.gif";
}
}
//*** addclasskillclass.js
//*** This code is copyright 2002-2004 by Gavin Kistner and Refinery; www.refinery.com
//*** It is covered under the license viewable at http://phrogz.net/JS/_ReuseLicense.txt
//*** Reuse or modification is free provided you abide by the terms of that license.
//*** (Including the first two lines above in your source code satisfies the conditions.)
//***Adds a new class to an object, preserving existing classes
function AddClass(obj,cName){ KillClass(obj,cName); return obj && (obj.className+=(obj.className.length>0?' ':'')+cName); }
//***Removes a particular class from an object, preserving other existing classes.
function KillClass(obj,cName){ return obj && (obj.className=obj.className.replace(new RegExp("^"+cName+"\\b\\s*|\\s*\\b"+cName+"\\b",'g'),'')); }
//***Returns true if the object has the class assigned, false otherwise.
function HasClass(obj,cName){ return (!obj || !obj.className)?false
new RegExp("\\b"+cName+"\\b")).test(obj.className) }
//*** attachment.js
//***Cross browser attach event function. For 'evt' pass a string value with the leading "on" omitted
//***e.g. AttachEvent(window,'load',MyFunctionNameWithoutParenthesis,false);
function AttachEvent(obj,evt,fnc,useCapture){
if (!useCapture) useCapture=false;
if (obj.addEventListener){
obj.addEventListener(evt,fnc,useCapture);
return true;
} else if (obj.attachEvent) return obj.attachEvent("on"+evt,fnc);
else{
MyAttachEvent(obj,evt,fnc);
obj['on'+evt]=function(){ MyFireEvent(obj,evt) };
}
}
//The following are for browsers like NS4 or IE5Mac which don't support either
//attachEvent or addEventListener
function MyAttachEvent(obj,evt,fnc){
if (!obj.myEvents) obj.myEvents={};
if (!obj.myEvents[evt]) obj.myEvents[evt]=[];
var evts = obj.myEvents[evt];
evts[evts.length]=fnc;
}
function MyFireEvent(obj,evt){
if (!obj || !obj.myEvents || !obj.myEvents[evt]) return;
var evts = obj.myEvents[evt];
for (var i=0,len=evts.length;i<len;i++) evts[i]();
}
//*** addcss.js
// Add a new stylesheet to the document;
// url [optional] A url to an external stylesheet to use
// idx [optional] The index in document.styleSheets to insert the new sheet before
function AddStyleSheet(url,idx){
var css,before=null,head=document.getElementsByTagName("head")[0];
if (document.createElement){
if (url){
css = document.createElement('link');
css.rel = 'stylesheet';
css.href = url;
} else css = document.createElement('style');
css.media = 'all';
css.type = 'text/css';
if (idx>=0){
for (var i=0,ct=0,len=head.childNodes.length;i<len;i++){
var el = head.childNodes[i];
if (!el.tagName) continue;
var tagName = el.tagName.toLowerCase();
if (ct==idx){
before = el;
break;
}
if (tagName=='style' || tagName=='link' && (el.rel && el.rel.toLowerCase()=='stylesheet' || el.type && el.type.toLowerCase()=='text/css') ) ct++;
}
}
head.insertBefore(css,before);
return document.styleSheets[before?idx:document.styleSheets.length-1];
} else return alert("I can't create a new stylesheet for you. Sorry.");
}
// e.g. var newBlankSheetAfterAllOthers = AddStyleSheet();
// e.g. var newBlankSheetBeforeAllOthers = AddStyleSheet(null,0);
// e.g. var externalSheetAfterOthers = AddStyleSheet('http://phrogz.net/JS/Classes/docs.css');
// e.g. var externalSheetBeforeOthers = AddStyleSheet('http://phrogz.net/JS/Classes/docs.css',0);
// Cross-browser method for inserting a new rule into an existing stylesheet.
// ss - The stylesheet to stick the new rule in
// selector - The string value to use for the rule selector
// styles - The string styles to use with the rule
function AddRule(ss,selector,styles){
if (!ss) return false;
if (ss.insertRule) return ss.insertRule(selector+' {'+styles+'}',ss.cssRules.length);
if (ss.addRule){
ss.addRule(selector,styles);
return true;
}
return false;
}
// e.g. AddRule( document.styleSheets[0] , 'a:link' , 'color:blue; text-decoration:underline' );
// e.g. AddRule( AddStyleSheet() , 'hr' , 'display:none' );
//*** tabtastic.js
//*** Tabtastic -- see http://phrogz.net/JS/Tabstatic/index.html
//*** Version 1.0 20040430 Initial release.
//*** 1.0.2 20040501 IE5Mac, IE6Win compat.
//*** 1.0.3 20040501 Removed IE5Mac/Opera7 compat. (see http://phrogz.net/JS/Tabstatic/index.html#notes)
//*** 1.0.4 20040521 Added scroll-back hack to prevent scrolling down to page anchor. Then commented out
AttachEvent(window,'load',function(){
var tocTag='ul',tocClass='tabset_tabs',tabTag='a',contentClass='tabset_content';
function FindEl(tagName,evt){
if (!evt && window.event) evt=event;
if (!evt) return DebugOut("Can't find an event to handle in DLTabSet:
etTab",0);
var el=evt.currentTarget || evt.srcElement;
while (el && (!el.tagName || el.tagName.toLowerCase()!=tagName)) el=el.parentNode;
return el;
}
function SetTabActive(tab){
if (tab.tabTOC.activeTab){
if (tab.tabTOC.activeTab==tab) return;
KillClass(tab.tabTOC.activeTab,'active');
if (tab.tabTOC.activeTab.tabContent) KillClass(tab.tabTOC.activeTab.tabContent,'tabset_content_active');
//if (tab.tabTOC.activeTab.tabContent) tab.tabTOC.activeTab.tabContent.style.display='';
if (tab.tabTOC.activeTab.prevTab) KillClass(tab.tabTOC.activeTab.previousTab,'preActive');
if (tab.tabTOC.activeTab.nextTab) KillClass(tab.tabTOC.activeTab.nextTab,'postActive');
}
AddClass(tab.tabTOC.activeTab=tab,'active');
if (tab.tabContent) AddClass(tab.tabContent,'tabset_content_active');
//if (tab.tabContent) tab.tabContent.style.display='block';
if (tab.prevTab) AddClass(tab.prevTab,'preActive');
if (tab.nextTab) AddClass(tab.nextTab,'postActive');
}
function SetTabFromAnchor(evt){
setTimeout('document.body.scrollTop='+document.body.scrollTop,1);
SetTabActive(FindEl('a',evt).semanticTab);
}
function Init(){
window.everyTabThereIsById = {};
var anchorMatch = /#([a-z][\w.:-]*)$/i,match;
var activeTabs = [];
var tocs = document.getElementsByTagName(tocTag);
for (var i=0,len=tocs.length;i<len;i++){
var toc = tocs[i];
if (!HasClass(toc,tocClass)) continue;
var lastTab;
var tabs = toc.getElementsByTagName(tabTag);
for (var j=0,len2=tabs.length;j<len2;j++){
var tab = tabs[j];
if (!tab.href || !(match=anchorMatch.exec(tab.href))) continue;
if (lastTab){
tab.prevTab=lastTab;
lastTab.nextTab=tab;
}
tab.tabTOC=toc;
everyTabThereIsById[tab.tabID=match[1]]=tab;
tab.tabContent = document.getElementById(tab.tabID);
if (HasClass(tab,'active')) activeTabs[activeTabs.length]=tab;
lastTab=tab;
}
AddClass(toc.getElementsByTagName('li')[0],'firstchild');
}
for (var i=0,len=activeTabs.length;i<len;i++){
SetTabActive(activeTabs[i]);
}
for (var i=0,len=document.links.length;i<len;i++){
var a = document.links[i];
if (!(match=anchorMatch.exec(a.href))) continue;
if (a.semanticTab = everyTabThereIsById[match[1]]) AttachEvent(a,'click',SetTabFromAnchor,false);
}
if ((match=anchorMatch.exec(location.href)) && (a=everyTabThereIsById[match[1]])) SetTabActive(a);
//Comment out the next line and include the file directly if you need IE5Mac or Opera7 support.
//AddStyleSheet('tabtastic.css',0);
}
Init();
},false);
//***collapsible rows
function outliner() {
oMe = window.event.srcElement;
//get child element
var child = document.all[event.srcElement.getAttribute("child",false)];
//if child element exists, expand or collapse it.
if (null != child)
child.className = child.className == "collapsed" ? "expanded" : "collapsed";
}
function changepic() {
uMe = window.event.srcElement;
var check = uMe.src.toLowerCase();
if (check.lastIndexOf("expand.gif") != -1)
{
uMe.src = "collapse.gif";
}
else
{
uMe.src = "expand.gif";
}
}
//*** SORTABLE ROWS
var ts_version = "1.26";
var ts_browser_agt = navigator.userAgent.toLowerCase();
var ts_browser_is_ie = ((ts_browser_agt.indexOf("msie") != -1) && (ts_browser_agt.indexOf("opera") == -1));
var ml_tsort = {
///////////////////////////////////////////////////
// configurable constants, modify as needed!
sort_col_title : "Click to Sort!", // the popup text for the sorting link in the header columns
sort_col_asc_title : "Sorted ascending", // the popup text for the sorting link in the header column after the column's sorted in ascending order
sort_col_desc_title : "Sorted Descending ", // the popup text for the sorting link in the header column after the column's sorted in ascending order
sort_col_class : "abc", // whichever class you want the heading to be
sort_col_style : "text-decoration:none; font-weight:bold; color:black", // whichever style you want the link to look like
sort_col_class_post_sort : "def", // whichever class you want the heading for the column that's just sorted
sort_col_style_post_sort : "text-decoration:none; font-weight:bold; color:black", // whichever style you want the link to look like when the column for the link was sorted
sort_col_mouseover : "this.style.color='blue'", // what style the link should use onmouseover?
use_ctrl_alt_click : false, // allow ctrl-alt-click anywhere in table to activate sorting?
sort_only_sortable : true, // make all tables sortable by default or just make the tables with "sortable" class sortable?
//////////////////////////////////////////////////
// speed related constants, modify as needed!
table_content_might_change : false, // table content could be changed by other JS on-the-fly? if so, some speed improvements cannot be used.
preserve_style : " ", // (row, cell) preserves style for row or cell e.g., row is useful when the table highlights rows alternatively. cell is much slower while no preservation's the fastest by far!
tell_me_time_consumption : false, // give stats about time consumed during sorting and table update/redrawing.
//////////////////////////////////////////////////////////
// anything below this line, modify at your own risk!
smallest_int : -2147483648000, // date parse is in milliseconds, hence the 000
set_vars : function(event)
{
var e = (event)? event : window.event;
var element = (event)? ((event.target)? event.target : event.srcElement) : window.event.srcElement;
var clicked_td = ml_tsort.getParent(element,'TD') || ml_tsort.getParent(element,'TH');
var table = ml_tsort.getParent(element,'TABLE');
if(!table || table.rows.length < 1 || !clicked_td) return;
var column = clicked_td.cellIndex;
if (e.altKey && e.ctrlKey && ml_tsort.use_ctrl_alt_click) ml_tsort.resortTable(table.rows[0].cells[column]);
},
makeSortable: function(table)
{
if (table.rows && table.rows.length > 0) {
var rowidx = table.getAttribute("ts_linkrow") || 0;
var firstRow = table.rows[rowidx];
}
if (!firstRow) return;
var sortCell;
// We have a first row: assume it's the header (it works for <thead> too),
// and make its contents clickable links
for (var i=0;i<firstRow.cells.length;i++) {
var cell = firstRow.cells[i];
if(cell.getAttribute("ts_nosort")) continue;
var txt = cell.innerHTML;
if(cell.getAttribute("sortdir")) sortCell = cell;
cell.innerHTML = '<a style="'+this.sort_col_style+'" onMouseOver="this.oldstyle=this.style.cssText;'+this.sort_col_mouseover+'" onMouseOut="this.style.cssText=this.oldstyle;" class="'+this.sort_col_class+'" href="#" title="'+this.sort_col_title+'" onclick="javascript:ml_tsort.resortTable(this.parentNode);return false">'+txt+'</a>';
}
if(sortCell) this.resortTable(sortCell);
},
sortables_init : function()
{
// Find all tables with class sortable and make them sortable
if (!document.getElementsByTagName) return;
var tbls = document.getElementsByTagName("table");
for (var ti=0;ti<tbls.length;ti++) {
thisTbl = tbls[ti];
if(!ml_tsort.sort_only_sortable || thisTbl.className.match(/sortable/i))
ml_tsort.makeSortable(thisTbl);
}
},
getParent : function(el, pTagName)
{
if (el == null) return null;
else if (el.nodeType == 1 && el.tagName.toLowerCase() == pTagName.toLowerCase()) // Gecko bug, supposed to be uppercase
return el;
else
return this.getParent(el.parentNode, pTagName);
},
getInnerText : function(el)
{
if (typeof el == "string") return el;
if (typeof el == "undefined") { return el };
if (el.innerText) return el.innerText; //Not needed but it is faster
var str = "";
var cs = el.childNodes;
var l = cs.length;
for (var i = 0; i < l; i++) {
switch (cs[i].nodeType) {
case 1: //ELEMENT_NODE
str += this.getInnerText(cs[i]);
break;
case 3: //TEXT_NODE
str += cs[i].nodeValue;
break;
}
}
return str;
},
match_date_format : function(value, format)
{
var v = this.getInnerText(value.cells[this.sort_column_index]);
this.set_date_array(format);
if(format == 'M/D/Y' && !isNaN(Date.parse(v)))
return true;
else if(!isNaN(this.convert_date(v))) return true;
this.set_date_array(format.replace(/\//g, '-'));
if(!isNaN(this.convert_date(v))) return true;
this.set_date_array(format.replace(/\//g, '.'));
if(!isNaN(this.convert_date(v))) return true;
this.set_date_array(format.replace(/\//g, ' '));
if(!isNaN(this.convert_date(v))) return true;
return false;
},
resortTable : function(td)
{
if(td == null) return;
var column = td.cellIndex;
var table = this.getParent(td,'TABLE');
this.sort_column_index = column;
if(table == null || table.rows.length <= 2) return;
// now let's do a lot just to save a little time, if possible at all.
var lastSortCell = table.getAttribute("ts_sortcell") || 0;
lastSortCell--; // the processing is used for IE, which treats no attribute as 0, while FF treats 0 as still true.
var lastSortDir;
if(td.getAttribute("ts_forcesort"))
lastSortDir = (td.getAttribute("ts_forcesort") == 'desc')? 'asc' : 'desc';
else
lastSortDir = (table == this.last_sorted_table && column == lastSortCell)? table.getAttribute("ts_sortdir") : ((td.getAttribute("sortdir") == 'desc')? 'asc' : 'desc');
var newRows = new Array();
var headcount = 1;
for (var i=0,j=1;j<table.rows.length;j++)
{
var t = table.rows[j].parentNode.tagName.toLowerCase();
if(t == 'tbody' && table.rows[j].cells.length >= column + 1) newRows[i++] = table.rows[j];
else if(t == 'thead') headcount++;
}
if(newRows.length == 0) return;
var time2 = new Date();
// check if we really need to sort
if(!td.getAttribute("ts_forcesort") && !this.table_content_might_change && table == this.last_sorted_table && column == lastSortCell)
newRows.reverse();
else
{
// Work out a type for the column
var sortfn, type = td.getAttribute("ts_type");
this.replace_pattern = '';
var itm, i;
for(i = 0; i < newRows.length; i++)
{
itm = this.getInnerText(newRows[i].cells[column]);
if(itm.match(/\S/)) break;
}
if(i == newRows.length) return;
itm = ml_trim(itm);
if(!type)
{
sortfn = this.sort_caseinsensitive;
if (this.match_date_format(newRows[i], 'M/D/Y')) sortfn = this.sort_date;
else if (itm.match(/^[¥£€$]/)) sortfn = this.sort_currency;
else if (itm.match(/^\d{1,3}(\.\d{1,3}){3}$/)) sortfn = this.sort_ip;
else if (itm.match(/^[+-]?\s*[0-9]+(?:\.[0-9]+)?(?:\s*[eE]\s*[+-]?\s*\d+)?$/))
sortfn = this.sort_numeric;
}
else if(type == 'date' && this.match_date_format(newRows[i], 'M/D/Y')) sortfn = this.sort_date;
else if(type == 'euro_date' && this.match_date_format(newRows[i], 'D/M/Y')) sortfn = this.sort_date;
else if(type == 'other_date' && this.match_date_format(newRows[i], td.getAttribute("ts_date_format"))) sortfn = this.sort_date;
else if(type == 'number') sortfn = this.sort_numeric;
else if(type == 'ip') sortfn = this.sort_ip;
else if(type == 'money') sortfn = this.sort_currency;
// else if(type == 'custom') sortfn = function(aa,bb) { a = this.getInnerText(aa.cells[this.sort_column_index]); b = this.getInnerText(bb.cells[this.sort_column_index]); eval(td.getAttribute("ts_sortfn")) }; // the coding here is shorter but interestingly it's also slower
else if(type == 'custom') { this.custom_code = td.getAttribute("ts_sortfn"); sortfn = this.custom_sortfn }
else { alert("unsupported sorting type or data not matching indicated type!"); return; }
table.setAttribute("ts_sortcell", column+1);
newRows.sort(sortfn);
if (lastSortDir == 'asc') newRows.reverse();
}
// set style of heading
var rowidx = table.getAttribute("ts_linkrow") || 0;
if(lastSortCell > -1 && table.rows[rowidx].cells[lastSortCell].firstChild.style)
{
table.rows[rowidx].cells[lastSortCell].firstChild.oldstyle = this.sort_col_style;
table.rows[rowidx].cells[lastSortCell].firstChild.style.cssText = this.sort_col_style;
table.rows[rowidx].cells[lastSortCell].firstChild.className = this.sort_col_class;
}
if(table.rows[rowidx].cells[column].firstChild.style)
{
table.rows[rowidx].cells[column].firstChild.oldstyle = this.sort_col_style_post_sort;
table.rows[rowidx].cells[column].firstChild.style.cssText = this.sort_col_style_post_sort;
table.rows[rowidx].cells[column].firstChild.className = this.sort_col_class_post_sort;
}
if (lastSortDir == 'desc') table.setAttribute('ts_sortdir','asc');
else table.setAttribute('ts_sortdir','desc');
// has to use tagName otherwise IE complains
if(lastSortCell > -1 && table.rows[rowidx].cells[lastSortCell].firstChild.tagName) table.rows[rowidx].cells[lastSortCell].firstChild.title = this.sort_col_title;
if(table.rows[rowidx].cells[column].firstChild.tagName) table.rows[rowidx].cells[column].firstChild.title = ((lastSortDir == 'desc')? this.sort_col_asc_title : this.sort_col_desc_title);
this.last_sorted_table = table;
var time3 = new Date();
var ps = table.getAttribute("preserve_style") || this.preserve_style;
if(ps == 'row' && !ts_browser_is_ie)
{
var tmp = new Array(newRows.length);
for (var i = 0; i < newRows.length; i++) tmp[i] = newRows[i].innerHTML;
for (var i = 0; i < newRows.length; i++) table.rows[i+headcount].innerHTML = tmp[i];
}
else if(ps == 'cell' || (ps == 'row' && ts_browser_is_ie))
{
var tmp = new Array(newRows.length);
for (var i = 0; i < newRows.length; i++)
for (var j = 0; j < newRows[i].cells.length; j++)
{
if(!tmp[i]) tmp[i] = new Array(newRows[i].cells.length);
tmp[i][j] = newRows[i].cells[j].innerHTML;
}
for (var i = 0; i < newRows.length; i++)
for (var j = 0; j < newRows[i].cells.length; j++)
table.rows[i+headcount].cells[j].innerHTML = tmp[i][j];
}
else
{
for (var i=0;i<newRows.length;i++)// We appendChild rows that already exist to the tbody, so it moves them rather than creating new ones
table.tBodies[0].appendChild(newRows[i]);
}
var time4 = new Date();
if(this.tell_me_time_consumption)
{
alert('it took ' + this.diff_time(time3, time2) + ' seconds to do sorting!');
alert('it took ' + this.diff_time(time4, time3) + ' seconds to do redrawing!');
}
return false;
},
diff_time : function(time2, time1)
{
return (time2.getTime() - time1.getTime())/1000;
},
// Mingyi Note: it seems ridiculous to do so much processing for
// customizable date conversion, should try to find a zbetter way
// of doing it.
set_date_array : function(f)
{
var tmp = [['D', f.indexOf('D')], ['M', f.indexOf('M')], ['Y', f.indexOf('Y')]];
tmp.sort(function(a,b){ return a[1] - b[1]});
this.date_order_array = new Array(3);
for(var i = 0; i < 3; i++) this.date_order_array[tmp[i][0]] = '$' + (i + 2);
this.replace_pattern = f.replace(/[DMY]([^DMY]+)[DMY]([^DMY]+)[DMY]/, '^(.*?)(\\d+)\\$1(\\d+)\\$2(\\d+)(.*)$');
},
process_year : function(y)
{
var tmp = parseInt(y);
if(tmp < 32) return '20' + y;
else if(tmp < 100) return '19' + y;
else return y;
},
// convert to MM/DD/YYYY (or M/D/YYYY) format
convert_date : function(a)
{
var re = 'RegExp.$1+RegExp.'+this.date_order_array['M']+'+\'/\'+RegExp.'+this.date_order_array['D']+'+\'/\'+this.process_year(RegExp.'+this.date_order_array['Y']+')+RegExp.$5';
var code = 'if(a.match(/'+this.replace_pattern+'/)) (' + re + ')';
return Date.parse(eval(code));
},
sort_date : function(a,b)
{
var atext = ml_tsort.getInnerText(a.cells[ml_tsort.sort_column_index]);
var btext = ml_tsort.getInnerText(b.cells[ml_tsort.sort_column_index]);
var aa, bb;
// basically I have to do the conversion due to the potential usage of double digit years
if(atext && atext.match(/\S/))
{
aa = ml_tsort.convert_date(atext);
if(isNaN(aa)) aa = Date.parse(atext);
if(isNaN(aa)) aa = 0;
}
else aa = ml_tsort.smallest_int;
if(btext && btext.match(/\S/))
{
bb = ml_tsort.convert_date(btext);
if(isNaN(bb)) bb = Date.parse(btext);
if(isNaN(bb)) bb = 0;
}
else bb = ml_tsort.smallest_int;
return aa - bb;
},
// assume no scientific number in currency (if assumption incorrect, just use
// same code for this.sort_numeric will do)
sort_currency : function(a,b)
{
return ml_tsort.sort_num(ml_tsort.getInnerText(a.cells[ml_tsort.sort_column_index]).replace(/[^-0-9.+]/g,''),
ml_tsort.getInnerText(b.cells[ml_tsort.sort_column_index]).replace(/[^-0-9.+]/g,''));
},
// let's allow scientific notation but also be strict on number format
sort_num : function(a, b)
{
var aa, bb;
if(a && a.match(/\S/))
{
if(!isNaN(a)) aa = a;
else if(a && a.match(/^[^0-9.+-]*([+-]?\s*[0-9]+(?:\.[0-9]+)?(?:\s*[eE]\s*[+-]?\s*\d+)?)/))
aa = parseFloat(RegExp.$1.replace(/\s+/g, ''));
else aa = 0;
}
else aa = ml_tsort.smallest_int;
if(b && b.match(/\S/))
{
if(!isNaN(b)) bb = b;
else if(b && b.match(/^[^0-9.+-]*([+-]?\s*[0-9]+(?:\.[0-9]+)?(?:\s*[eE]\s*[+-]?\s*\d+)?)/))
bb = parseFloat(RegExp.$1.replace(/\s+/g, ''));
else bb = 0;
}
else bb = ml_tsort.smallest_int;
return aa - bb;
},
sort_numeric : function(a,b)
{
return ml_tsort.sort_num(ml_tsort.getInnerText(a.cells[ml_tsort.sort_column_index]),
ml_tsort.getInnerText(b.cells[ml_tsort.sort_column_index]));
},
sort_ip : function(a,b)
{
var aa = ml_tsort.getInnerText(a.cells[ml_tsort.sort_column_index]).split('.');
var bb = ml_tsort.getInnerText(b.cells[ml_tsort.sort_column_index]).split('.');
return ml_tsort.sort_num(aa[0], bb[0]) || ml_tsort.sort_num(aa[1], bb[1]) ||
ml_tsort.sort_num(aa[2], bb[2]) || ml_tsort.sort_num(aa[3], bb[3]);
},
sort_caseinsensitive : function(a,b)
{
var aa = ml_tsort.getInnerText(a.cells[ml_tsort.sort_column_index]).toLowerCase();
var bb = ml_tsort.getInnerText(b.cells[ml_tsort.sort_column_index]).toLowerCase();
if (aa==bb) return 0;
if (aa<bb) return -1;
return 1;
},
custom_sortfn : function(aa,bb)
{
var a = ml_tsort.getInnerText(aa.cells[ml_tsort.sort_column_index]);
var b = ml_tsort.getInnerText(bb.cells[ml_tsort.sort_column_index]);
return eval(ml_tsort.custom_code);
}
};
function ml_trim(text)
{
if(!text) return text;
var tmp = text.replace(/^\s+/, '');
return tmp.replace(/\s+$/, '');
}
function ts_addEvent(elm, evType, fn, useCapture)
// addEvent and removeEvent
// cross-browser event handling for IE5+, NS6 and Mozilla
// By Scott Andrew
{
if (elm.addEventListener){
elm.addEventListener(evType, fn, useCapture);
return true;
} else if (elm.attachEvent){
var r = elm.attachEvent("on"+evType, fn);
return r;
} else {
alert("Handler could not be removed");
}
}
ts_addEvent(document, "click", ml_tsort.set_vars);
ts_addEvent(window, "load", ml_tsort.sortables_init);
</script>
</HEAD>
<body style="font-family: Verdana, Helvetica, Arial, Sans-Serif; font: Message-Box" onclick="outliner()">
<center>
<h2>List of Sleep Studies</h2>
</center><b class="entities">Entities : 1,
Instances : 1</b><table id="idDBData118696280" cellpadding="2" cellspacing="0" width="98%" class="infotable" bgcolor="#f4f4f4">
<caption class="issuetitle" style="font-weight: bold">NARMC Sleep Disorders Clinic Intake Form</caption>
<thead style="font-weight:bold;">
<tr>
<th class="header" width="1%"/>
<td class="header" style="border: 1px Solid ThreeDShadow; border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight;"> Last Name:</td>
<td class="header" style="border: 1px Solid ThreeDShadow; border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight;"> First Name:</td>
<td class="header" style="border: 1px Solid ThreeDShadow; border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight;"> Age:</td>
<td class="header" style="border: 1px Solid ThreeDShadow; border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight;"> Gender:</td>
</tr>
</thead>
<tbody>
<tr>
<td class="content"><A HREF="javascript:" onClick="javascript:document.images['idDBData118696280'].click()"><IMG border="0" alt="expand/collapse" class="expandable" height="11" onclick="changepic()" src="expand.gif" width="9" name="idDBData118696280" child="srcidDBData118696280"></A></td>
<td class="content">Clinton</td>
<td class="content">Harry</td>
<td class="content">32 Years</td>
<td class="content">M</td>
</tr>
<tbody>
<tr class="collapsed" bgcolor="#ffffff" id="srcidDBData118696280">
<td colspan="5">
<table width="95%" rules="cols" class="issuetable">
<tr>
<td class="issuetitle"><font color="#09155F" face="verdana" size="2"></font><ul class="tabset_tabs">
<li><a href="#GeneralidDBData118696280" class="active">General</a></li>
<li><a href="#PhysicianidDBData118696280">Physician</a></li>
<li><a href="#Sleep_HistoryidDBData118696280">Sleep History</a></li>
<li><a href="#Sleep_BehavioridDBData118696280">Sleep Behavior</a></li>
<li><a href="#Med_HistidDBData118696280">Med Hist</a></li>
<li><a href="#Ref_PhysicianidDBData118696280">Ref Physician</a></li>
<li><a href="#BreathidDBData118696280">Breath</a></li>
<li><a href="#NarcolepsyidDBData118696280">Narcolepsy</a></li>
<li><a href="#DisordersidDBData118696280">Disorders</a></li>
</ul>
<div ID="GeneralidDBData118696280" class="tabset_content">
<h2 class="tabset_label">General</h2><i><center><b>General Information Patient Data</b></center>
</i><div class="divstyle">Patient Name:<br> Last Name:<input type="text" value="Clinton"><small><i>Req</i></small><br> First Name:<input type="text" value="Harry"><br> MI:<input type="text" value=""><br></div>
<div class="divstyle"> Personal Information:<br> Age:<input type="text" value="32 Years"><br> Gender:<input type="radio" name="idField118698552" value="true" checked>M<input type="radio" name="idField118698552" value="true">F<br> Birthday:<input type="text" value=""><br></div>
<div class="divstyle">Why is there <b>air</b>?<br><select name="select-Why is there <b>air</b>?"><option value="To Breathe." name="option-To Breathe.">To Breathe.</option>
<option value="To Fill Basketballs." name="option-To Fill Basketballs.">To Fill Basketballs.</option>
<option value="Other" name="option-Other">Other</option>
</select></div>
<div class="divstyle"> Contact Information:<br> Home Phone:<input type="text" value=""><br> Work Phone:<input type="text" value=""><br> E-Mail:<input type="text" value=""><br></div>
<div class="divstyle"> Address:<br> Street:<input type="text" value=""><br> City:<input type="text" value=""><br> State:<input type="text" value=""><br> Zip<input type="text" value=""><br></div>
<div class="divstyle">Marital Status:<br><select name="select-Marital Status:"><option value="Single" name="option-Single">Single</option>
<option value="Married" name="option-Married">Married</option>
<option value="Divorced" name="option-Divorced">Divorced</option>
<option value="Widow(er)" name="option-Widow(er)">Widow(er)</option>
</select></div>
<div class="divstyle"> Physical Description:<br> Height:<input type="text" value=""><br> Body Frame:<input type="radio" name="idField122062440" value="true">Small<input type="radio" name="idField122062440" value="true" checked>Medium<input type="radio" name="idField122062440" value="true">Large<br> Weight (Lbs):<input type="text" value=""><br></div>
<div class="divstyle">Race:<br><select name="select-Race:"><option value="African-American" name="option-African-American">African-American</option>
<option value="Asian" name="option-Asian">Asian</option>
<option value="Caucasian" name="option-Caucasian">Caucasian</option>
<option value="Hispanic" name="option-Hispanic">Hispanic</option>
<option value="Native American" name="option-Native American">Native American</option>
</select></div>
<div class="divstyle">Please give a brief description of your clinical complaint and its duration, especially as it relates to sleep:<br><textarea name="Please give a brief description of your clinical complaint and its duration, especially as it relates to sleep:" cols="85" rows="5"></textarea></div>
<div class="divstyle">Please describe any events which occur while falling asleep, during sleep or while waking up that you consider unusual:<br><textarea name="Please describe any events which occur while falling asleep, during sleep or while waking up that you consider unusual:" cols="85" rows="5"></textarea></div>
<div class="divstyle">Which of the following games do u play?. Select all that apply:<br><input type="checkbox" name="input-Which of the following games do u play?. Select all that apply:" value="true">Football<br><input type="checkbox" name="input-Which of the following games do u play?. Select all that apply:" value="true" checked>Soccer<br><input type="checkbox" name="input-Which of the following games do u play?. Select all that apply:" value="true" checked>Basketball<br><input type="checkbox" name="input-Which of the following games do u play?. Select all that apply:" value="true">Tennis<br><input type="checkbox" name="input-Which of the following games do u play?. Select all that apply:" value="true" checked>Cricket<br></div>
</div>
<div ID="PhysicianidDBData118696280" class="tabset_content">
<h2 class="tabset_label">Physician</h2><i><center><b>Patients Physician</b></center>
</i><div class="divstyle">
<table class="MYTABLE">
<caption class="issuetiele">Doctor</caption>
<tr class="header">
<td style="border: 1px Solid ThreeDShadow; border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight;">Name:</td>
</tr>
<tr class="MYTABLE">
<td style="text-align:center;">Newname</td>
</tr>
</table>
</div>
</div>
<div ID="Sleep_HistoryidDBData118696280" class="tabset_content">
<h2 class="tabset_label">Sleep History</h2><i><center><b>Sleep History</b></center>
</i><div class="divstyle">Do you feel you suffer from insomnia?<br>
Yes<input type="radio" name="idField122067168Do you feel you suffer from insomnia?" value="true">
No<input type="radio" name="idField122067168Do you feel you suffer from insomnia?" value="false" checked></div>
<div class="divstyle">Do you feel that you get too little sleep at night?<br>
Yes<input type="radio" name="idField122067440Do you feel that you get too little sleep at night?" value="true">
No<input type="radio" name="idField122067440Do you feel that you get too little sleep at night?" value="false" checked></div>
<div class="divstyle">Do you feel you get much sleep at night?<br>
Yes<input type="radio" name="idField122067712Do you feel you get much sleep at night?" value="true" checked>
No<input type="radio" name="idField122067712Do you feel you get much sleep at night?" value="false"></div>
<div class="divstyle">Weekday Bedtime<br> (hh:mm)<input type="text" value=""><br> Please select:<input type="radio" name="idField122068536" value="true" checked>am<input type="radio" name="idField122068536" value="true">pm<br></div>
<div class="divstyle">Weekend Bedtime<br> (hh:mm)<input type="text" value=""><br> Please select:<input type="radio" name="idField118031848" value="true" checked>am<input type="radio" name="idField118031848" value="true">pm<br></div>
<div class="divstyle">Weekday Wakeup<br> (hh:mm)<input type="text" value=""><br> Please select:<input type="radio" name="idField118032976" value="true" checked>am<input type="radio" name="idField118032976" value="true">pm<br></div>
<div class="divstyle">Weekend Wakeup<br> (hh:mm)<input type="text" value=""><br> Please select:<input type="radio" name="idField118034104" value="true" checked>am<input type="radio" name="idField118034104" value="true">pm<br></div>
<div class="divstyle">How long does it usually take to fall asleep (mins) ?<input type="text" value=""></div>
<div class="divstyle">How long are you awake in the morning before you actually get out of bed (mins) ?<input type="text" value=""></div>
</div>
<div ID="Sleep_BehavioridDBData118696280" class="tabset_content">
<h2 class="tabset_label">Sleep Behavior</h2><i><center><b>Sleep Behavior</b></center>
</i><div class="divstyle">Do your legs or arms bother you when resting or falling asleep?<br>
Yes<input type="radio" name="idField118035472" value="true">
No<input type="radio" name="idField118035472" value="false" checked><br> Please Describe:<br><textarea name=" Please Describe:" cols="85" rows="5"></textarea><br></div>
<div class="divstyle">Do you have unusual movements (Leg Jerks, Head Movements, etc.) during sleep?<br>
Yes<input type="radio" name="idField118036064" value="true">
No<input type="radio" name="idField118036064" value="false"><br> Please Describe:<br><textarea name=" Please Describe:" cols="85" rows="5"></textarea><br></div>
<div class="divstyle">Do you have any unusual sleep behavior (sleep walking, sleep talking, etc.) ?<br>
Yes<input type="radio" name="idField118036656" value="true">
No<input type="radio" name="idField118036656" value="false"><br> Please Describe:<br><textarea name=" Please Describe:" cols="85" rows="5"></textarea><br></div>
<div class="divstyle">Do you experience dreams?<br><input type="radio" name="idField118037192" value="true">Yes<br><input type="radio" name="idField118037192" value="true">No<br><input type="radio" name="idField118037192" value="true">Sometimes<br></div>
<div class="divstyle">Have you noticed a change in your dreams (i.e. increased, decreased, more action packed, etc.) ?<br>
Yes<input type="radio" name="idField118037936" value="true">
No<input type="radio" name="idField118037936" value="false"><br> Please Describe:<br><textarea name=" Please Describe:" cols="85" rows="5"></textarea><br></div>
<div class="divstyle">Do you experience nightmares?<br>
Yes<input type="radio" name="idField117303960" value="true">
No<input type="radio" name="idField117303960" value="false"><br> Please Describe:<br><textarea name=" Please Describe:" cols="85" rows="5"></textarea><br></div>
</div>
<div ID="Med_HistidDBData118696280" class="tabset_content">
<h2 class
I am new to javascript and cross-browsing. I have a XSLT generated HTML document which works fine ini IE and opera but have problems with firefox. I tried to debug with firebug but i have no idea what should i do next to fix the problem. I would greatly appreciate if anybody help me figuring this out. Here is my html document:
<html xmlns
leepXML="http://www.SleepXML.org"><HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>SleepXML.com</title>
<STYLE type="text/css">
.infotable
{
font: Icon;
border: 1px Solid ThreeDShadow;
background: Window;
color: WindowText;
MARGIN-LEFT: 10px;
}
.issuetable
{
font: Icon;
border: none;
MARGIN-LEFT: 10px;
}
.records
{
color:gray;
}
b.entities
{
margin-left:10px;
text-align:right;
color:blue;
font-weight:normal;
}
.issuetitle
{
background: ButtonFace
border: 1px Solid ThreeDShadow;
cursor: default;
}
.header
{
background: ButtonFace
cursor: default;
}
.content
{
padding: 2px 5px;
}
.expandable
{
CURSOR: hand;
}
.collapsed
{
DISPLAY: none;
}
H2 {
color: black;
font-size: 12pt;
font-weight:bold;
cursor: default;
}
small
{
color:red;
}
.divstyle {
padding: 10px 10px 10px 10px;
border: 1px Solid ThreeDShadow
border-color: ButtonHighlight ButtonShadow
ButtonShadow ButtonHighlight;
margin: 2px auto 1px auto;
}
CAPTION.MYTABLE {
}
TABLE.MYTABLE {
Font: Icon;
border: 1px Solid ThreeDShadow;
background: Window;
color: WindowText;
width: 90%
}
TH.MYTABLE {
background: ButtonFace
cursor: default;
}
TR.MYTABLE {
}
TD.MYTABLE {
padding: 2px 5px;
}
.tabset_tabs {
margin:0px;
padding:0px;
list-style-type:none;
position:relative;
z-index:2;
white-space:wrap;
}
.tabset_tabs li {
margin:0px;
padding:0px;
display:inline;
}
.tabset_tabs a {
color:black;
background-color:ButtonFace ! important;
border-color: ButtonShadow ButtonHighlight
ButtonHighlight ButtonShadow;
text-decoration:none;
padding:0em 0.6em;
}
.tabset_tabs a:hover {
color:black! important;
background-color:white ! important;
}
.tabset_tabs a.active {
color:black ! important;
background-color:white ! important;
border-color: ButtonShadow ButtonHighlight
ButtonHighlight ButtonShadow;
border-left-width:1px;
cursor:default;
padding-top:1px;
padding-bottom:1px;
}
.tabset_tabs li.firstchild a {
border-left-width:1px ;
}
.tabset_content {
background: #f4f4f4;
z-index:2;
padding:0.5em 1em;
display:none;
}
.tabset_label { display:none; }
.tabset_content_active { display:block; }
@media aural{
.tabset_content,
.tabset_label { display:block; }
}
</STYLE>
<script language="javascript" type="text/javascript">
//***collapsible rows
function outliner() {
oMe = window.event.srcElement;
//get child element
var child = document.all[event.srcElement.getAttribute("child",false)];
//if child element exists, expand or collapse it.
if (null != child)
child.className = child.className == "collapsed" ? "expanded" : "collapsed";
}
function changepic() {
uMe = window.event.srcElement;
var check = uMe.src.toLowerCase();
if (check.lastIndexOf("expand.gif") != -1)
{
uMe.src = "collapse.gif";
}
else
{
uMe.src = "expand.gif";
}
}
//*** addclasskillclass.js
//*** This code is copyright 2002-2004 by Gavin Kistner and Refinery; www.refinery.com
//*** It is covered under the license viewable at http://phrogz.net/JS/_ReuseLicense.txt
//*** Reuse or modification is free provided you abide by the terms of that license.
//*** (Including the first two lines above in your source code satisfies the conditions.)
//***Adds a new class to an object, preserving existing classes
function AddClass(obj,cName){ KillClass(obj,cName); return obj && (obj.className+=(obj.className.length>0?' ':'')+cName); }
//***Removes a particular class from an object, preserving other existing classes.
function KillClass(obj,cName){ return obj && (obj.className=obj.className.replace(new RegExp("^"+cName+"\\b\\s*|\\s*\\b"+cName+"\\b",'g'),'')); }
//***Returns true if the object has the class assigned, false otherwise.
function HasClass(obj,cName){ return (!obj || !obj.className)?false
new RegExp("\\b"+cName+"\\b")).test(obj.className) }//*** attachment.js
//***Cross browser attach event function. For 'evt' pass a string value with the leading "on" omitted
//***e.g. AttachEvent(window,'load',MyFunctionNameWithoutParenthesis,false);
function AttachEvent(obj,evt,fnc,useCapture){
if (!useCapture) useCapture=false;
if (obj.addEventListener){
obj.addEventListener(evt,fnc,useCapture);
return true;
} else if (obj.attachEvent) return obj.attachEvent("on"+evt,fnc);
else{
MyAttachEvent(obj,evt,fnc);
obj['on'+evt]=function(){ MyFireEvent(obj,evt) };
}
}
//The following are for browsers like NS4 or IE5Mac which don't support either
//attachEvent or addEventListener
function MyAttachEvent(obj,evt,fnc){
if (!obj.myEvents) obj.myEvents={};
if (!obj.myEvents[evt]) obj.myEvents[evt]=[];
var evts = obj.myEvents[evt];
evts[evts.length]=fnc;
}
function MyFireEvent(obj,evt){
if (!obj || !obj.myEvents || !obj.myEvents[evt]) return;
var evts = obj.myEvents[evt];
for (var i=0,len=evts.length;i<len;i++) evts[i]();
}
//*** addcss.js
// Add a new stylesheet to the document;
// url [optional] A url to an external stylesheet to use
// idx [optional] The index in document.styleSheets to insert the new sheet before
function AddStyleSheet(url,idx){
var css,before=null,head=document.getElementsByTagName("head")[0];
if (document.createElement){
if (url){
css = document.createElement('link');
css.rel = 'stylesheet';
css.href = url;
} else css = document.createElement('style');
css.media = 'all';
css.type = 'text/css';
if (idx>=0){
for (var i=0,ct=0,len=head.childNodes.length;i<len;i++){
var el = head.childNodes[i];
if (!el.tagName) continue;
var tagName = el.tagName.toLowerCase();
if (ct==idx){
before = el;
break;
}
if (tagName=='style' || tagName=='link' && (el.rel && el.rel.toLowerCase()=='stylesheet' || el.type && el.type.toLowerCase()=='text/css') ) ct++;
}
}
head.insertBefore(css,before);
return document.styleSheets[before?idx:document.styleSheets.length-1];
} else return alert("I can't create a new stylesheet for you. Sorry.");
}
// e.g. var newBlankSheetAfterAllOthers = AddStyleSheet();
// e.g. var newBlankSheetBeforeAllOthers = AddStyleSheet(null,0);
// e.g. var externalSheetAfterOthers = AddStyleSheet('http://phrogz.net/JS/Classes/docs.css');
// e.g. var externalSheetBeforeOthers = AddStyleSheet('http://phrogz.net/JS/Classes/docs.css',0);
// Cross-browser method for inserting a new rule into an existing stylesheet.
// ss - The stylesheet to stick the new rule in
// selector - The string value to use for the rule selector
// styles - The string styles to use with the rule
function AddRule(ss,selector,styles){
if (!ss) return false;
if (ss.insertRule) return ss.insertRule(selector+' {'+styles+'}',ss.cssRules.length);
if (ss.addRule){
ss.addRule(selector,styles);
return true;
}
return false;
}
// e.g. AddRule( document.styleSheets[0] , 'a:link' , 'color:blue; text-decoration:underline' );
// e.g. AddRule( AddStyleSheet() , 'hr' , 'display:none' );
//*** tabtastic.js
//*** Tabtastic -- see http://phrogz.net/JS/Tabstatic/index.html
//*** Version 1.0 20040430 Initial release.
//*** 1.0.2 20040501 IE5Mac, IE6Win compat.
//*** 1.0.3 20040501 Removed IE5Mac/Opera7 compat. (see http://phrogz.net/JS/Tabstatic/index.html#notes)
//*** 1.0.4 20040521 Added scroll-back hack to prevent scrolling down to page anchor. Then commented out

AttachEvent(window,'load',function(){
var tocTag='ul',tocClass='tabset_tabs',tabTag='a',contentClass='tabset_content';
function FindEl(tagName,evt){
if (!evt && window.event) evt=event;
if (!evt) return DebugOut("Can't find an event to handle in DLTabSet:
etTab",0);var el=evt.currentTarget || evt.srcElement;
while (el && (!el.tagName || el.tagName.toLowerCase()!=tagName)) el=el.parentNode;
return el;
}
function SetTabActive(tab){
if (tab.tabTOC.activeTab){
if (tab.tabTOC.activeTab==tab) return;
KillClass(tab.tabTOC.activeTab,'active');
if (tab.tabTOC.activeTab.tabContent) KillClass(tab.tabTOC.activeTab.tabContent,'tabset_content_active');
//if (tab.tabTOC.activeTab.tabContent) tab.tabTOC.activeTab.tabContent.style.display='';
if (tab.tabTOC.activeTab.prevTab) KillClass(tab.tabTOC.activeTab.previousTab,'preActive');
if (tab.tabTOC.activeTab.nextTab) KillClass(tab.tabTOC.activeTab.nextTab,'postActive');
}
AddClass(tab.tabTOC.activeTab=tab,'active');
if (tab.tabContent) AddClass(tab.tabContent,'tabset_content_active');
//if (tab.tabContent) tab.tabContent.style.display='block';
if (tab.prevTab) AddClass(tab.prevTab,'preActive');
if (tab.nextTab) AddClass(tab.nextTab,'postActive');
}
function SetTabFromAnchor(evt){
setTimeout('document.body.scrollTop='+document.body.scrollTop,1);
SetTabActive(FindEl('a',evt).semanticTab);
}
function Init(){
window.everyTabThereIsById = {};
var anchorMatch = /#([a-z][\w.:-]*)$/i,match;
var activeTabs = [];
var tocs = document.getElementsByTagName(tocTag);
for (var i=0,len=tocs.length;i<len;i++){
var toc = tocs[i];
if (!HasClass(toc,tocClass)) continue;
var lastTab;
var tabs = toc.getElementsByTagName(tabTag);
for (var j=0,len2=tabs.length;j<len2;j++){
var tab = tabs[j];
if (!tab.href || !(match=anchorMatch.exec(tab.href))) continue;
if (lastTab){
tab.prevTab=lastTab;
lastTab.nextTab=tab;
}
tab.tabTOC=toc;
everyTabThereIsById[tab.tabID=match[1]]=tab;
tab.tabContent = document.getElementById(tab.tabID);
if (HasClass(tab,'active')) activeTabs[activeTabs.length]=tab;
lastTab=tab;
}
AddClass(toc.getElementsByTagName('li')[0],'firstchild');
}
for (var i=0,len=activeTabs.length;i<len;i++){
SetTabActive(activeTabs[i]);
}
for (var i=0,len=document.links.length;i<len;i++){
var a = document.links[i];
if (!(match=anchorMatch.exec(a.href))) continue;
if (a.semanticTab = everyTabThereIsById[match[1]]) AttachEvent(a,'click',SetTabFromAnchor,false);
}
if ((match=anchorMatch.exec(location.href)) && (a=everyTabThereIsById[match[1]])) SetTabActive(a);
//Comment out the next line and include the file directly if you need IE5Mac or Opera7 support.
//AddStyleSheet('tabtastic.css',0);
}
Init();
},false);
//***collapsible rows
function outliner() {
oMe = window.event.srcElement;
//get child element
var child = document.all[event.srcElement.getAttribute("child",false)];
//if child element exists, expand or collapse it.
if (null != child)
child.className = child.className == "collapsed" ? "expanded" : "collapsed";
}
function changepic() {
uMe = window.event.srcElement;
var check = uMe.src.toLowerCase();
if (check.lastIndexOf("expand.gif") != -1)
{
uMe.src = "collapse.gif";
}
else
{
uMe.src = "expand.gif";
}
}
//*** SORTABLE ROWS
var ts_version = "1.26";
var ts_browser_agt = navigator.userAgent.toLowerCase();
var ts_browser_is_ie = ((ts_browser_agt.indexOf("msie") != -1) && (ts_browser_agt.indexOf("opera") == -1));
var ml_tsort = {
///////////////////////////////////////////////////
// configurable constants, modify as needed!
sort_col_title : "Click to Sort!", // the popup text for the sorting link in the header columns
sort_col_asc_title : "Sorted ascending", // the popup text for the sorting link in the header column after the column's sorted in ascending order
sort_col_desc_title : "Sorted Descending ", // the popup text for the sorting link in the header column after the column's sorted in ascending order
sort_col_class : "abc", // whichever class you want the heading to be
sort_col_style : "text-decoration:none; font-weight:bold; color:black", // whichever style you want the link to look like
sort_col_class_post_sort : "def", // whichever class you want the heading for the column that's just sorted
sort_col_style_post_sort : "text-decoration:none; font-weight:bold; color:black", // whichever style you want the link to look like when the column for the link was sorted
sort_col_mouseover : "this.style.color='blue'", // what style the link should use onmouseover?
use_ctrl_alt_click : false, // allow ctrl-alt-click anywhere in table to activate sorting?
sort_only_sortable : true, // make all tables sortable by default or just make the tables with "sortable" class sortable?
//////////////////////////////////////////////////
// speed related constants, modify as needed!
table_content_might_change : false, // table content could be changed by other JS on-the-fly? if so, some speed improvements cannot be used.
preserve_style : " ", // (row, cell) preserves style for row or cell e.g., row is useful when the table highlights rows alternatively. cell is much slower while no preservation's the fastest by far!
tell_me_time_consumption : false, // give stats about time consumed during sorting and table update/redrawing.
//////////////////////////////////////////////////////////
// anything below this line, modify at your own risk!

smallest_int : -2147483648000, // date parse is in milliseconds, hence the 000
set_vars : function(event)
{
var e = (event)? event : window.event;
var element = (event)? ((event.target)? event.target : event.srcElement) : window.event.srcElement;
var clicked_td = ml_tsort.getParent(element,'TD') || ml_tsort.getParent(element,'TH');
var table = ml_tsort.getParent(element,'TABLE');
if(!table || table.rows.length < 1 || !clicked_td) return;
var column = clicked_td.cellIndex;
if (e.altKey && e.ctrlKey && ml_tsort.use_ctrl_alt_click) ml_tsort.resortTable(table.rows[0].cells[column]);
},
makeSortable: function(table)
{
if (table.rows && table.rows.length > 0) {
var rowidx = table.getAttribute("ts_linkrow") || 0;
var firstRow = table.rows[rowidx];
}
if (!firstRow) return;
var sortCell;
// We have a first row: assume it's the header (it works for <thead> too),
// and make its contents clickable links
for (var i=0;i<firstRow.cells.length;i++) {
var cell = firstRow.cells[i];
if(cell.getAttribute("ts_nosort")) continue;
var txt = cell.innerHTML;
if(cell.getAttribute("sortdir")) sortCell = cell;
cell.innerHTML = '<a style="'+this.sort_col_style+'" onMouseOver="this.oldstyle=this.style.cssText;'+this.sort_col_mouseover+'" onMouseOut="this.style.cssText=this.oldstyle;" class="'+this.sort_col_class+'" href="#" title="'+this.sort_col_title+'" onclick="javascript:ml_tsort.resortTable(this.parentNode);return false">'+txt+'</a>';
}
if(sortCell) this.resortTable(sortCell);
},
sortables_init : function()
{
// Find all tables with class sortable and make them sortable
if (!document.getElementsByTagName) return;
var tbls = document.getElementsByTagName("table");
for (var ti=0;ti<tbls.length;ti++) {
thisTbl = tbls[ti];
if(!ml_tsort.sort_only_sortable || thisTbl.className.match(/sortable/i))
ml_tsort.makeSortable(thisTbl);
}
},
getParent : function(el, pTagName)
{
if (el == null) return null;
else if (el.nodeType == 1 && el.tagName.toLowerCase() == pTagName.toLowerCase()) // Gecko bug, supposed to be uppercase
return el;
else
return this.getParent(el.parentNode, pTagName);
},
getInnerText : function(el)
{
if (typeof el == "string") return el;
if (typeof el == "undefined") { return el };
if (el.innerText) return el.innerText; //Not needed but it is faster
var str = "";
var cs = el.childNodes;
var l = cs.length;
for (var i = 0; i < l; i++) {
switch (cs[i].nodeType) {
case 1: //ELEMENT_NODE
str += this.getInnerText(cs[i]);
break;
case 3: //TEXT_NODE
str += cs[i].nodeValue;
break;
}
}
return str;
},
match_date_format : function(value, format)
{
var v = this.getInnerText(value.cells[this.sort_column_index]);
this.set_date_array(format);
if(format == 'M/D/Y' && !isNaN(Date.parse(v)))
return true;
else if(!isNaN(this.convert_date(v))) return true;
this.set_date_array(format.replace(/\//g, '-'));
if(!isNaN(this.convert_date(v))) return true;
this.set_date_array(format.replace(/\//g, '.'));
if(!isNaN(this.convert_date(v))) return true;
this.set_date_array(format.replace(/\//g, ' '));
if(!isNaN(this.convert_date(v))) return true;
return false;
},
resortTable : function(td)
{
if(td == null) return;
var column = td.cellIndex;
var table = this.getParent(td,'TABLE');
this.sort_column_index = column;
if(table == null || table.rows.length <= 2) return;
// now let's do a lot just to save a little time, if possible at all.

var lastSortCell = table.getAttribute("ts_sortcell") || 0;
lastSortCell--; // the processing is used for IE, which treats no attribute as 0, while FF treats 0 as still true.
var lastSortDir;
if(td.getAttribute("ts_forcesort"))
lastSortDir = (td.getAttribute("ts_forcesort") == 'desc')? 'asc' : 'desc';
else
lastSortDir = (table == this.last_sorted_table && column == lastSortCell)? table.getAttribute("ts_sortdir") : ((td.getAttribute("sortdir") == 'desc')? 'asc' : 'desc');
var newRows = new Array();
var headcount = 1;
for (var i=0,j=1;j<table.rows.length;j++)
{
var t = table.rows[j].parentNode.tagName.toLowerCase();
if(t == 'tbody' && table.rows[j].cells.length >= column + 1) newRows[i++] = table.rows[j];
else if(t == 'thead') headcount++;
}
if(newRows.length == 0) return;
var time2 = new Date();
// check if we really need to sort
if(!td.getAttribute("ts_forcesort") && !this.table_content_might_change && table == this.last_sorted_table && column == lastSortCell)
newRows.reverse();
else
{
// Work out a type for the column
var sortfn, type = td.getAttribute("ts_type");
this.replace_pattern = '';
var itm, i;
for(i = 0; i < newRows.length; i++)
{
itm = this.getInnerText(newRows[i].cells[column]);
if(itm.match(/\S/)) break;
}
if(i == newRows.length) return;
itm = ml_trim(itm);
if(!type)
{
sortfn = this.sort_caseinsensitive;
if (this.match_date_format(newRows[i], 'M/D/Y')) sortfn = this.sort_date;
else if (itm.match(/^[¥£€$]/)) sortfn = this.sort_currency;
else if (itm.match(/^\d{1,3}(\.\d{1,3}){3}$/)) sortfn = this.sort_ip;
else if (itm.match(/^[+-]?\s*[0-9]+(?:\.[0-9]+)?(?:\s*[eE]\s*[+-]?\s*\d+)?$/))
sortfn = this.sort_numeric;
}
else if(type == 'date' && this.match_date_format(newRows[i], 'M/D/Y')) sortfn = this.sort_date;
else if(type == 'euro_date' && this.match_date_format(newRows[i], 'D/M/Y')) sortfn = this.sort_date;
else if(type == 'other_date' && this.match_date_format(newRows[i], td.getAttribute("ts_date_format"))) sortfn = this.sort_date;
else if(type == 'number') sortfn = this.sort_numeric;
else if(type == 'ip') sortfn = this.sort_ip;
else if(type == 'money') sortfn = this.sort_currency;
// else if(type == 'custom') sortfn = function(aa,bb) { a = this.getInnerText(aa.cells[this.sort_column_index]); b = this.getInnerText(bb.cells[this.sort_column_index]); eval(td.getAttribute("ts_sortfn")) }; // the coding here is shorter but interestingly it's also slower
else if(type == 'custom') { this.custom_code = td.getAttribute("ts_sortfn"); sortfn = this.custom_sortfn }
else { alert("unsupported sorting type or data not matching indicated type!"); return; }
table.setAttribute("ts_sortcell", column+1);
newRows.sort(sortfn);
if (lastSortDir == 'asc') newRows.reverse();
}
// set style of heading
var rowidx = table.getAttribute("ts_linkrow") || 0;
if(lastSortCell > -1 && table.rows[rowidx].cells[lastSortCell].firstChild.style)
{
table.rows[rowidx].cells[lastSortCell].firstChild.oldstyle = this.sort_col_style;
table.rows[rowidx].cells[lastSortCell].firstChild.style.cssText = this.sort_col_style;
table.rows[rowidx].cells[lastSortCell].firstChild.className = this.sort_col_class;
}
if(table.rows[rowidx].cells[column].firstChild.style)
{
table.rows[rowidx].cells[column].firstChild.oldstyle = this.sort_col_style_post_sort;
table.rows[rowidx].cells[column].firstChild.style.cssText = this.sort_col_style_post_sort;
table.rows[rowidx].cells[column].firstChild.className = this.sort_col_class_post_sort;
}
if (lastSortDir == 'desc') table.setAttribute('ts_sortdir','asc');
else table.setAttribute('ts_sortdir','desc');
// has to use tagName otherwise IE complains
if(lastSortCell > -1 && table.rows[rowidx].cells[lastSortCell].firstChild.tagName) table.rows[rowidx].cells[lastSortCell].firstChild.title = this.sort_col_title;
if(table.rows[rowidx].cells[column].firstChild.tagName) table.rows[rowidx].cells[column].firstChild.title = ((lastSortDir == 'desc')? this.sort_col_asc_title : this.sort_col_desc_title);
this.last_sorted_table = table;
var time3 = new Date();
var ps = table.getAttribute("preserve_style") || this.preserve_style;
if(ps == 'row' && !ts_browser_is_ie)
{
var tmp = new Array(newRows.length);
for (var i = 0; i < newRows.length; i++) tmp[i] = newRows[i].innerHTML;
for (var i = 0; i < newRows.length; i++) table.rows[i+headcount].innerHTML = tmp[i];
}
else if(ps == 'cell' || (ps == 'row' && ts_browser_is_ie))
{
var tmp = new Array(newRows.length);
for (var i = 0; i < newRows.length; i++)
for (var j = 0; j < newRows[i].cells.length; j++)
{
if(!tmp[i]) tmp[i] = new Array(newRows[i].cells.length);
tmp[i][j] = newRows[i].cells[j].innerHTML;
}
for (var i = 0; i < newRows.length; i++)
for (var j = 0; j < newRows[i].cells.length; j++)
table.rows[i+headcount].cells[j].innerHTML = tmp[i][j];
}
else
{
for (var i=0;i<newRows.length;i++)// We appendChild rows that already exist to the tbody, so it moves them rather than creating new ones
table.tBodies[0].appendChild(newRows[i]);
}
var time4 = new Date();
if(this.tell_me_time_consumption)
{
alert('it took ' + this.diff_time(time3, time2) + ' seconds to do sorting!');
alert('it took ' + this.diff_time(time4, time3) + ' seconds to do redrawing!');
}
return false;
},
diff_time : function(time2, time1)
{
return (time2.getTime() - time1.getTime())/1000;
},
// Mingyi Note: it seems ridiculous to do so much processing for
// customizable date conversion, should try to find a zbetter way
// of doing it.
set_date_array : function(f)
{
var tmp = [['D', f.indexOf('D')], ['M', f.indexOf('M')], ['Y', f.indexOf('Y')]];
tmp.sort(function(a,b){ return a[1] - b[1]});
this.date_order_array = new Array(3);
for(var i = 0; i < 3; i++) this.date_order_array[tmp[i][0]] = '$' + (i + 2);
this.replace_pattern = f.replace(/[DMY]([^DMY]+)[DMY]([^DMY]+)[DMY]/, '^(.*?)(\\d+)\\$1(\\d+)\\$2(\\d+)(.*)$');
},
process_year : function(y)
{
var tmp = parseInt(y);
if(tmp < 32) return '20' + y;
else if(tmp < 100) return '19' + y;
else return y;
},
// convert to MM/DD/YYYY (or M/D/YYYY) format
convert_date : function(a)
{
var re = 'RegExp.$1+RegExp.'+this.date_order_array['M']+'+\'/\'+RegExp.'+this.date_order_array['D']+'+\'/\'+this.process_year(RegExp.'+this.date_order_array['Y']+')+RegExp.$5';
var code = 'if(a.match(/'+this.replace_pattern+'/)) (' + re + ')';
return Date.parse(eval(code));
},
sort_date : function(a,b)
{
var atext = ml_tsort.getInnerText(a.cells[ml_tsort.sort_column_index]);
var btext = ml_tsort.getInnerText(b.cells[ml_tsort.sort_column_index]);
var aa, bb;
// basically I have to do the conversion due to the potential usage of double digit years
if(atext && atext.match(/\S/))
{
aa = ml_tsort.convert_date(atext);
if(isNaN(aa)) aa = Date.parse(atext);
if(isNaN(aa)) aa = 0;
}
else aa = ml_tsort.smallest_int;
if(btext && btext.match(/\S/))
{
bb = ml_tsort.convert_date(btext);
if(isNaN(bb)) bb = Date.parse(btext);
if(isNaN(bb)) bb = 0;
}
else bb = ml_tsort.smallest_int;
return aa - bb;
},
// assume no scientific number in currency (if assumption incorrect, just use
// same code for this.sort_numeric will do)
sort_currency : function(a,b)
{
return ml_tsort.sort_num(ml_tsort.getInnerText(a.cells[ml_tsort.sort_column_index]).replace(/[^-0-9.+]/g,''),
ml_tsort.getInnerText(b.cells[ml_tsort.sort_column_index]).replace(/[^-0-9.+]/g,''));
},
// let's allow scientific notation but also be strict on number format
sort_num : function(a, b)
{
var aa, bb;
if(a && a.match(/\S/))
{
if(!isNaN(a)) aa = a;
else if(a && a.match(/^[^0-9.+-]*([+-]?\s*[0-9]+(?:\.[0-9]+)?(?:\s*[eE]\s*[+-]?\s*\d+)?)/))
aa = parseFloat(RegExp.$1.replace(/\s+/g, ''));
else aa = 0;
}
else aa = ml_tsort.smallest_int;
if(b && b.match(/\S/))
{
if(!isNaN(b)) bb = b;
else if(b && b.match(/^[^0-9.+-]*([+-]?\s*[0-9]+(?:\.[0-9]+)?(?:\s*[eE]\s*[+-]?\s*\d+)?)/))
bb = parseFloat(RegExp.$1.replace(/\s+/g, ''));
else bb = 0;
}
else bb = ml_tsort.smallest_int;
return aa - bb;
},
sort_numeric : function(a,b)
{
return ml_tsort.sort_num(ml_tsort.getInnerText(a.cells[ml_tsort.sort_column_index]),
ml_tsort.getInnerText(b.cells[ml_tsort.sort_column_index]));
},
sort_ip : function(a,b)
{
var aa = ml_tsort.getInnerText(a.cells[ml_tsort.sort_column_index]).split('.');
var bb = ml_tsort.getInnerText(b.cells[ml_tsort.sort_column_index]).split('.');
return ml_tsort.sort_num(aa[0], bb[0]) || ml_tsort.sort_num(aa[1], bb[1]) ||
ml_tsort.sort_num(aa[2], bb[2]) || ml_tsort.sort_num(aa[3], bb[3]);
},
sort_caseinsensitive : function(a,b)
{
var aa = ml_tsort.getInnerText(a.cells[ml_tsort.sort_column_index]).toLowerCase();
var bb = ml_tsort.getInnerText(b.cells[ml_tsort.sort_column_index]).toLowerCase();
if (aa==bb) return 0;
if (aa<bb) return -1;
return 1;
},
custom_sortfn : function(aa,bb)
{
var a = ml_tsort.getInnerText(aa.cells[ml_tsort.sort_column_index]);
var b = ml_tsort.getInnerText(bb.cells[ml_tsort.sort_column_index]);
return eval(ml_tsort.custom_code);
}
};
function ml_trim(text)
{
if(!text) return text;
var tmp = text.replace(/^\s+/, '');
return tmp.replace(/\s+$/, '');
}
function ts_addEvent(elm, evType, fn, useCapture)
// addEvent and removeEvent
// cross-browser event handling for IE5+, NS6 and Mozilla
// By Scott Andrew
{
if (elm.addEventListener){
elm.addEventListener(evType, fn, useCapture);
return true;
} else if (elm.attachEvent){
var r = elm.attachEvent("on"+evType, fn);
return r;
} else {
alert("Handler could not be removed");
}
}
ts_addEvent(document, "click", ml_tsort.set_vars);
ts_addEvent(window, "load", ml_tsort.sortables_init);
</script>
</HEAD>
<body style="font-family: Verdana, Helvetica, Arial, Sans-Serif; font: Message-Box" onclick="outliner()">
<center>
<h2>List of Sleep Studies</h2>
</center><b class="entities">Entities : 1,
Instances : 1</b><table id="idDBData118696280" cellpadding="2" cellspacing="0" width="98%" class="infotable" bgcolor="#f4f4f4">
<caption class="issuetitle" style="font-weight: bold">NARMC Sleep Disorders Clinic Intake Form</caption>
<thead style="font-weight:bold;">
<tr>
<th class="header" width="1%"/>
<td class="header" style="border: 1px Solid ThreeDShadow; border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight;"> Last Name:</td>
<td class="header" style="border: 1px Solid ThreeDShadow; border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight;"> First Name:</td>
<td class="header" style="border: 1px Solid ThreeDShadow; border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight;"> Age:</td>
<td class="header" style="border: 1px Solid ThreeDShadow; border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight;"> Gender:</td>
</tr>
</thead>
<tbody>
<tr>
<td class="content"><A HREF="javascript:" onClick="javascript:document.images['idDBData118696280'].click()"><IMG border="0" alt="expand/collapse" class="expandable" height="11" onclick="changepic()" src="expand.gif" width="9" name="idDBData118696280" child="srcidDBData118696280"></A></td>
<td class="content">Clinton</td>
<td class="content">Harry</td>
<td class="content">32 Years</td>
<td class="content">M</td>
</tr>
<tbody>
<tr class="collapsed" bgcolor="#ffffff" id="srcidDBData118696280">
<td colspan="5">
<table width="95%" rules="cols" class="issuetable">
<tr>
<td class="issuetitle"><font color="#09155F" face="verdana" size="2"></font><ul class="tabset_tabs">
<li><a href="#GeneralidDBData118696280" class="active">General</a></li>
<li><a href="#PhysicianidDBData118696280">Physician</a></li>
<li><a href="#Sleep_HistoryidDBData118696280">Sleep History</a></li>
<li><a href="#Sleep_BehavioridDBData118696280">Sleep Behavior</a></li>
<li><a href="#Med_HistidDBData118696280">Med Hist</a></li>
<li><a href="#Ref_PhysicianidDBData118696280">Ref Physician</a></li>
<li><a href="#BreathidDBData118696280">Breath</a></li>
<li><a href="#NarcolepsyidDBData118696280">Narcolepsy</a></li>
<li><a href="#DisordersidDBData118696280">Disorders</a></li>
</ul>
<div ID="GeneralidDBData118696280" class="tabset_content">
<h2 class="tabset_label">General</h2><i><center><b>General Information Patient Data</b></center>
</i><div class="divstyle">Patient Name:<br> Last Name:<input type="text" value="Clinton"><small><i>Req</i></small><br> First Name:<input type="text" value="Harry"><br> MI:<input type="text" value=""><br></div>
<div class="divstyle"> Personal Information:<br> Age:<input type="text" value="32 Years"><br> Gender:<input type="radio" name="idField118698552" value="true" checked>M<input type="radio" name="idField118698552" value="true">F<br> Birthday:<input type="text" value=""><br></div>
<div class="divstyle">Why is there <b>air</b>?<br><select name="select-Why is there <b>air</b>?"><option value="To Breathe." name="option-To Breathe.">To Breathe.</option>
<option value="To Fill Basketballs." name="option-To Fill Basketballs.">To Fill Basketballs.</option>
<option value="Other" name="option-Other">Other</option>
</select></div>
<div class="divstyle"> Contact Information:<br> Home Phone:<input type="text" value=""><br> Work Phone:<input type="text" value=""><br> E-Mail:<input type="text" value=""><br></div>
<div class="divstyle"> Address:<br> Street:<input type="text" value=""><br> City:<input type="text" value=""><br> State:<input type="text" value=""><br> Zip<input type="text" value=""><br></div>
<div class="divstyle">Marital Status:<br><select name="select-Marital Status:"><option value="Single" name="option-Single">Single</option>
<option value="Married" name="option-Married">Married</option>
<option value="Divorced" name="option-Divorced">Divorced</option>
<option value="Widow(er)" name="option-Widow(er)">Widow(er)</option>
</select></div>
<div class="divstyle"> Physical Description:<br> Height:<input type="text" value=""><br> Body Frame:<input type="radio" name="idField122062440" value="true">Small<input type="radio" name="idField122062440" value="true" checked>Medium<input type="radio" name="idField122062440" value="true">Large<br> Weight (Lbs):<input type="text" value=""><br></div>
<div class="divstyle">Race:<br><select name="select-Race:"><option value="African-American" name="option-African-American">African-American</option>
<option value="Asian" name="option-Asian">Asian</option>
<option value="Caucasian" name="option-Caucasian">Caucasian</option>
<option value="Hispanic" name="option-Hispanic">Hispanic</option>
<option value="Native American" name="option-Native American">Native American</option>
</select></div>
<div class="divstyle">Please give a brief description of your clinical complaint and its duration, especially as it relates to sleep:<br><textarea name="Please give a brief description of your clinical complaint and its duration, especially as it relates to sleep:" cols="85" rows="5"></textarea></div>
<div class="divstyle">Please describe any events which occur while falling asleep, during sleep or while waking up that you consider unusual:<br><textarea name="Please describe any events which occur while falling asleep, during sleep or while waking up that you consider unusual:" cols="85" rows="5"></textarea></div>
<div class="divstyle">Which of the following games do u play?. Select all that apply:<br><input type="checkbox" name="input-Which of the following games do u play?. Select all that apply:" value="true">Football<br><input type="checkbox" name="input-Which of the following games do u play?. Select all that apply:" value="true" checked>Soccer<br><input type="checkbox" name="input-Which of the following games do u play?. Select all that apply:" value="true" checked>Basketball<br><input type="checkbox" name="input-Which of the following games do u play?. Select all that apply:" value="true">Tennis<br><input type="checkbox" name="input-Which of the following games do u play?. Select all that apply:" value="true" checked>Cricket<br></div>
</div>
<div ID="PhysicianidDBData118696280" class="tabset_content">
<h2 class="tabset_label">Physician</h2><i><center><b>Patients Physician</b></center>
</i><div class="divstyle">
<table class="MYTABLE">
<caption class="issuetiele">Doctor</caption>
<tr class="header">
<td style="border: 1px Solid ThreeDShadow; border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight;">Name:</td>
</tr>
<tr class="MYTABLE">
<td style="text-align:center;">Newname</td>
</tr>
</table>
</div>
</div>
<div ID="Sleep_HistoryidDBData118696280" class="tabset_content">
<h2 class="tabset_label">Sleep History</h2><i><center><b>Sleep History</b></center>
</i><div class="divstyle">Do you feel you suffer from insomnia?<br>
Yes<input type="radio" name="idField122067168Do you feel you suffer from insomnia?" value="true">
No<input type="radio" name="idField122067168Do you feel you suffer from insomnia?" value="false" checked></div>
<div class="divstyle">Do you feel that you get too little sleep at night?<br>
Yes<input type="radio" name="idField122067440Do you feel that you get too little sleep at night?" value="true">
No<input type="radio" name="idField122067440Do you feel that you get too little sleep at night?" value="false" checked></div>
<div class="divstyle">Do you feel you get much sleep at night?<br>
Yes<input type="radio" name="idField122067712Do you feel you get much sleep at night?" value="true" checked>
No<input type="radio" name="idField122067712Do you feel you get much sleep at night?" value="false"></div>
<div class="divstyle">Weekday Bedtime<br> (hh:mm)<input type="text" value=""><br> Please select:<input type="radio" name="idField122068536" value="true" checked>am<input type="radio" name="idField122068536" value="true">pm<br></div>
<div class="divstyle">Weekend Bedtime<br> (hh:mm)<input type="text" value=""><br> Please select:<input type="radio" name="idField118031848" value="true" checked>am<input type="radio" name="idField118031848" value="true">pm<br></div>
<div class="divstyle">Weekday Wakeup<br> (hh:mm)<input type="text" value=""><br> Please select:<input type="radio" name="idField118032976" value="true" checked>am<input type="radio" name="idField118032976" value="true">pm<br></div>
<div class="divstyle">Weekend Wakeup<br> (hh:mm)<input type="text" value=""><br> Please select:<input type="radio" name="idField118034104" value="true" checked>am<input type="radio" name="idField118034104" value="true">pm<br></div>
<div class="divstyle">How long does it usually take to fall asleep (mins) ?<input type="text" value=""></div>
<div class="divstyle">How long are you awake in the morning before you actually get out of bed (mins) ?<input type="text" value=""></div>
</div>
<div ID="Sleep_BehavioridDBData118696280" class="tabset_content">
<h2 class="tabset_label">Sleep Behavior</h2><i><center><b>Sleep Behavior</b></center>
</i><div class="divstyle">Do your legs or arms bother you when resting or falling asleep?<br>
Yes<input type="radio" name="idField118035472" value="true">
No<input type="radio" name="idField118035472" value="false" checked><br> Please Describe:<br><textarea name=" Please Describe:" cols="85" rows="5"></textarea><br></div>
<div class="divstyle">Do you have unusual movements (Leg Jerks, Head Movements, etc.) during sleep?<br>
Yes<input type="radio" name="idField118036064" value="true">
No<input type="radio" name="idField118036064" value="false"><br> Please Describe:<br><textarea name=" Please Describe:" cols="85" rows="5"></textarea><br></div>
<div class="divstyle">Do you have any unusual sleep behavior (sleep walking, sleep talking, etc.) ?<br>
Yes<input type="radio" name="idField118036656" value="true">
No<input type="radio" name="idField118036656" value="false"><br> Please Describe:<br><textarea name=" Please Describe:" cols="85" rows="5"></textarea><br></div>
<div class="divstyle">Do you experience dreams?<br><input type="radio" name="idField118037192" value="true">Yes<br><input type="radio" name="idField118037192" value="true">No<br><input type="radio" name="idField118037192" value="true">Sometimes<br></div>
<div class="divstyle">Have you noticed a change in your dreams (i.e. increased, decreased, more action packed, etc.) ?<br>
Yes<input type="radio" name="idField118037936" value="true">
No<input type="radio" name="idField118037936" value="false"><br> Please Describe:<br><textarea name=" Please Describe:" cols="85" rows="5"></textarea><br></div>
<div class="divstyle">Do you experience nightmares?<br>
Yes<input type="radio" name="idField117303960" value="true">
No<input type="radio" name="idField117303960" value="false"><br> Please Describe:<br><textarea name=" Please Describe:" cols="85" rows="5"></textarea><br></div>
</div>
<div ID="Med_HistidDBData118696280" class="tabset_content">
<h2 class
