// fill EXIF / IPTC array with values
function makeArray(imageNumber, url, image, width, height, file, 
	aperture, shutter, iso, meteringMode, exposureCompensation, 
	lens, focalLength, subjectDistance, flash, flashCompensation, EFguideNumber, 
	exposureMode, focusPoint, aebExpCompensation, aebShotNumber, focusMode, driveMode, 
	whiteBalance, saturation, contrast, sharpness, quality, digitalZoom, 
	selfTimer, dateTime, caption, imageNumber, seqNumber, fileSize, 
	IPTC_objectName, IPTC_category, IPTC_specialInstructions, IPTC_dateCreated, IPTC_timeCreated, 
	IPTC_byline, IPTC_city, IPTC_sublocation, IPTC_state, IPTC_country, 
	IPTC_headline, IPTC_source, IPTC_caption, IPTC_countryCode, IPTC_origTransRef, tagged) {
	
	if(lens            == "0,0")		lens       	 = ""
	if(focalLength	   == "0")		focalLength	 = ""
	if(subjectDistance == "0")		subjectDistance  = ""
	if(selfTimer 	   == "0")		selfTimer	 = ""
	if(dateTime == "    :  :     :  :  ")	dateTime   	 = ""

	this.imageNumber	= imageNumber
	this.url		= url
	this.url2		= "2" + url
	this.url3		= "3" + url
	this.image		= image
	this.width		= width
	this.height		= height
	this.file		= file
	this.tagged		= (tagged)		? tagged		: sortAtLast_i
	this.aperture		= (aperture)		? aperture		: sortAtLast_i
	this.shutter		= (shutter)		? shutter		: sortAtLast_i
	this.iso		= (iso)			? iso			: sortAtLast_i
	this.ev			= calcEV(aperture, shutter, iso)
	this.meteringMode	= (meteringMode)	? meteringMode		: sortAtLast_s
	this.exposureCompensation=(exposureCompensation)? exposureCompensation	: sortAtLast_s
	this.lens		= (lens)		? lens			: sortAtLast_i
	this.focalLength	= (focalLength)		? focalLength		: sortAtLast_i
	this.subjectDistance	= (subjectDistance)	? subjectDistance	: sortAtLast_i
	this.flash		= (flash)		? flash			: sortAtLast_s
	this.flashCompensation	= (flashCompensation)	? flashCompensation	: sortAtLast_s
	this.EFguideNumber	= (EFguideNumber)	? EFguideNumber		: sortAtLast_s
	this.exposureMode	= (exposureMode)	? exposureMode		: sortAtLast_s
	this.focusPoint		= (focusPoint)		? focusPoint		: sortAtLast_s
	this.aebExpCompensation	= (aebExpCompensation)	? aebExpCompensation	: sortAtLast_s
	this.aebShotNumber	= (aebShotNumber)	? aebShotNumber		: sortAtLast_s
	this.focusMode		= (focusMode)	 	? focusMode		: sortAtLast_s
	this.driveMode		= (driveMode)	 	? driveMode		: sortAtLast_s
	this.whiteBalance	= (whiteBalance) 	? whiteBalance		: sortAtLast_s
	this.saturation		= (saturation)	 	? saturation		: sortAtLast_s
	this.contrast		= (contrast)	 	? contrast		: sortAtLast_s
	this.sharpness		= (sharpness)	 	? sharpness		: sortAtLast_s
	this.quality		= (quality)	 	? quality		: sortAtLast_s
	this.digitalZoom	= (digitalZoom)	 	? digitalZoom		: sortAtLast_s
	this.selfTimer		= (selfTimer)	 	? selfTimer		: sortAtLast_i
	this.dateTime		= (dateTime)	 	? dateTime		: sortAtLast_s
	this.caption		= (caption)	 	? caption		: sortAtLast_s
	this.imageNumber	= (imageNumber)	 	? imageNumber		: sortAtLast_s
	this.seqNumber		= (seqNumber)	 	? seqNumber		: sortAtLast_s
	this.fileSize		= (fileSize)	 	? fileSize		: sortAtLast_i
	this.IPTC_objectName	= (IPTC_objectName)	? IPTC_objectName	: sortAtLast_s
	this.IPTC_category	= (IPTC_category)	? IPTC_category		: sortAtLast_s
	this.IPTC_specialInstructions = (IPTC_specialInstructions) ? IPTC_specialInstructions : sortAtLast_s
	this.IPTC_dateCreated	= (IPTC_dateCreated)	? IPTC_dateCreated	: sortAtLast_s
	this.IPTC_timeCreated	= (IPTC_timeCreated)	? IPTC_timeCreated	: sortAtLast_s
	this.IPTC_byline	= (IPTC_byline)		? IPTC_byline		: sortAtLast_s
	this.IPTC_city		= (IPTC_city)		? IPTC_city		: sortAtLast_s
	this.IPTC_sublocation	= (IPTC_sublocation)	? IPTC_sublocation	: sortAtLast_s
	this.IPTC_state		= (IPTC_state)		? IPTC_state		: sortAtLast_s
	this.IPTC_country	= (IPTC_country)	? IPTC_country		: sortAtLast_s
	this.IPTC_headline	= (IPTC_headline)	? IPTC_headline		: sortAtLast_s
	this.IPTC_source	= (IPTC_source)		? IPTC_source		: sortAtLast_s
	this.IPTC_caption	= (IPTC_caption)	? IPTC_caption		: sortAtLast_s
	this.IPTC_countryCode	= (IPTC_countryCode)	? IPTC_countryCode	: sortAtLast_s
	this.IPTC_origTransRef	= (IPTC_origTransRef)	? IPTC_origTransRef	: sortAtLast_s
}

// read from parsed arguments which columns should be shown and set check boxes
function check_settings() {
	if(parsed == "") return
	
	for(i=0; i<document.settings.length - elementsAfterCheckboxes; i++) {
		name = document.settings.elements[i].name
		// read the parsed setting, then set the checkbox
		if(getParm(parsed,name) == "on")
			document.settings.elements[i].checked = true
		else 	document.settings.elements[i].checked = false
	}
}

// read from checked boxes which columns should be shown
function count_columns() {
	numberOfElements = 0
	for(i=0; i<document.settings.length - elementsAfterCheckboxes; i++)
		if(document.settings.elements[i].checked == true) numberOfElements++
	return numberOfElements - 1
}

// sort field by parsed argument
function sort_table() {
	if(parsed == "") return
	
	// sort the table by EXIF values
	if(sortBy_val == "BB")			{imgdata.sort(sort_BB)			; idx=0} i=1
	if(sortBy_val == "file")		{imgdata.sort(sort_file)		; idx=i} i++
	if(sortBy_val == "tagged")		{imgdata.sort(sort_tagged)	 	; idx=i} i++
	i++	// add 1 for the EXIF text line 
	if(sortBy_val == "aperture")		{imgdata.sort(sort_aperture)		; idx=i} i++
	if(sortBy_val == "shutter")		{imgdata.sort(sort_shutter)		; idx=i} i++
	if(sortBy_val == "iso")			{imgdata.sort(sort_iso)	 		; idx=i} i++
	if(sortBy_val == "ev")			{imgdata.sort(sort_ev)	 		; idx=i} i++
	if(sortBy_val == "meteringMode")	{imgdata.sort(sort_meteringMode)	; idx=i} i++
	if(sortBy_val == "exposureCompensation"){imgdata.sort(sort_exposureCompensation); idx=i} i++
	if(sortBy_val == "lens")		{imgdata.sort(sort_lens)		; idx=i} i++
	if(sortBy_val == "focalLength")		{imgdata.sort(sort_focalLength)		; idx=i} i++
	if(sortBy_val == "subjectDistance")	{imgdata.sort(sort_subjectDistance)	; idx=i} i++
	if(sortBy_val == "flash")		{imgdata.sort(sort_flash)		; idx=i} i++
	if(sortBy_val == "flashCompensation")	{imgdata.sort(sort_flashCompensation)	; idx=i} i++
	if(sortBy_val == "EFguideNumber")	{imgdata.sort(sort_EFguideNumber)	; idx=i} i++
	if(sortBy_val == "exposureMode")	{imgdata.sort(sort_exposureMode)	; idx=i} i++
	if(sortBy_val == "focusPoint")		{imgdata.sort(sort_focusPoint)		; idx=i} i++
	if(sortBy_val == "aebExpCompensation")	{imgdata.sort(sort_aebExpCompensation)	; idx=i} i++
	if(sortBy_val == "aebShotNumber")	{imgdata.sort(sort_aebShotNumber)	; idx=i} i++
	if(sortBy_val == "focusMode")		{imgdata.sort(sort_focusMode)		; idx=i} i++
	if(sortBy_val == "driveMode")		{imgdata.sort(sort_driveMode)		; idx=i} i++
	if(sortBy_val == "whiteBalance")	{imgdata.sort(sort_whiteBalance)	; idx=i} i++
	if(sortBy_val == "saturation")		{imgdata.sort(sort_saturation)		; idx=i} i++
	if(sortBy_val == "contrast")		{imgdata.sort(sort_contrast)		; idx=i} i++
	if(sortBy_val == "sharpness")		{imgdata.sort(sort_sharpness)		; idx=i} i++
	if(sortBy_val == "quality")		{imgdata.sort(sort_quality)		; idx=i} i++
	if(sortBy_val == "digitalZoom")		{imgdata.sort(sort_digitalZoom)		; idx=i} i++
	if(sortBy_val == "selfTimer")		{imgdata.sort(sort_selfTimer)		; idx=i} i++
	if(sortBy_val == "dateTime")		{imgdata.sort(sort_dateTime)		; idx=i} i++
	if(sortBy_val == "caption")		{imgdata.sort(sort_caption)		; idx=i} i++
	if(sortBy_val == "imageNumber")		{imgdata.sort(sort_imageNumber)		; idx=i} i++
	if(sortBy_val == "seqNumber")		{imgdata.sort(sort_seqNumber)		; idx=i} i++
	if(sortBy_val == "fileSize")		{imgdata.sort(sort_fileSize)		; idx=i} i++
	i++	// add 1 for the IPTC text line 
	// sort the table by IPTC values
	if(sortBy_val == "IPTC_objectName")	{imgdata.sort(sort_IPTC_objectName)	; idx=i} i++
	if(sortBy_val == "IPTC_caption")	{imgdata.sort(sort_IPTC_caption)	; idx=i} i++
	if(sortBy_val == "IPTC_headline")	{imgdata.sort(sort_IPTC_headline)	; idx=i} i++
	if(sortBy_val == "IPTC_category")	{imgdata.sort(sort_IPTC_category)	; idx=i} i++
	if(sortBy_val == "IPTC_specialInstructions") {imgdata.sort(sort_IPTC_specialInstructions) ; idx=i} i++
	if(sortBy_val == "IPTC_sublocation")	{imgdata.sort(sort_IPTC_sublocation)	; idx=i} i++
	if(sortBy_val == "IPTC_city")		{imgdata.sort(sort_IPTC_city)		; idx=i} i++
	if(sortBy_val == "IPTC_state")		{imgdata.sort(sort_IPTC_state)		; idx=i} i++
	if(sortBy_val == "IPTC_country")	{imgdata.sort(sort_IPTC_country)	; idx=i} i++
	if(sortBy_val == "IPTC_countryCode")	{imgdata.sort(sort_IPTC_countryCode)	; idx=i} i++
	if(sortBy_val == "IPTC_dateCreated")	{imgdata.sort(sort_IPTC_dateCreated)	; idx=i} i++
	if(sortBy_val == "IPTC_timeCreated")	{imgdata.sort(sort_IPTC_timeCreated)	; idx=i} i++
	if(sortBy_val == "IPTC_byline")		{imgdata.sort(sort_IPTC_byline)		; idx=i} i++
	if(sortBy_val == "IPTC_source")		{imgdata.sort(sort_IPTC_source)		; idx=i} i++
	if(sortBy_val == "IPTC_origTransRef")	{imgdata.sort(sort_IPTC_origTransRef)	; idx=i} i++
	// set the selection according to the parsed value
	document.settings.sortBy.selectedIndex = idx
	// set the sort order and scale selection
	if(sortOrder < 0) document.settings.sortOrder.selectedIndex = 1
	if(scale != "m")  document.settings.scale.selectedIndex     = 1
	// set the repeatHeader selection
	if(repeatHeader  < 0)	idx=0; i=1
	if(repeatHeader == 0)	idx=i; i++
	if(repeatHeader == 5)	idx=i; i++
	if(repeatHeader == 10)	idx=i; i++
	if(repeatHeader == 20)	idx=i; i++
	if(repeatHeader == 50)	idx=i; i++
	if(repeatHeader == 100)	idx=i; i++
	document.settings.repeatHeader.selectedIndex = idx

}

// print the selected columns
function print_table() {

    onMouseOver = "this.style.backgroundColor='#cccccc'"
    onMouseOut  = "this.style.backgroundColor='#ffffff'"
    tr  = '<tr onMouseOver="' + onMouseOver +'"; onMouseOut="' + onMouseOut +'" bgcolor="#ffffff">'
    td  = '<td align="center" class="lil">'
    td2 = '<td align="center" rowspan="' + ((document.settings.file.checked) ? 2 : 1) + '">'
    td3 = '<td align="left"   class="lil" colspan="' + count_columns() + '">'
    
    for(i=0; i<imgdata.length; i++) {

	if(repeatHeader==0 && i==0) 		 print_tableheader()
	if(repeatHeader >0 && i%repeatHeader==0) print_tableheader()

	imgsize = 'width="' + imgdata[i].width + '" height="' + imgdata[i].height + '"'
	imgtext = '"' + imgdata[i].file + '\nClick to see a larger version."'
	img = '<img src="' + imgdata[i].image + '" ' + imgsize + ' border="0" alt=' + imgtext + ' title=' + imgtext + '>'
	pop = "javascript:popup('" + imgdata[i].url + "'," + imgdata[i].imageNumber + ")"
	thumb = td2 + '<a href="' + pop + '">' + img + '</a></td>'
	url2 = "('" + imgdata[i].url2 + "'," + imgdata[i].imageNumber + ")"
	url3 = "('" + imgdata[i].url3 + "'," + imgdata[i].imageNumber + ")"
	exifpop = 'full <a href="javascript:exifpopup' + url2 + '">EXIF</a>'
	iptcpop = '   / <a href="javascript:iptcpopup' + url3 + '">IPTC</a>'

	// print thumbnail
	document.writeln(tr + thumb)
	
	// print checkbox for tagged images (in BB)
	if(document.settings.tagged.checked) {
	   if(imgdata[i].tagged==1) {isChecked = "checked"; bgcol = "col8"}
	   else			    {isChecked = ""	  ; bgcol = ""    }
	   alertmsg = "'You cannot change tags in this version.'"
	   outp = '<INPUT type="checkbox" ' + isChecked + '>'
	   // [...] ' onClick="this.checked=!(this.checked); alert(' + alertmsg + ')">'
	   print_td(td, bgcol, highlight("tagged", outp))
	}
	
	// print EXIF columns
	if(document.settings.aperture.checked) {
	   if(imgdata[i].aperture!=sortAtLast_i) outp = "f/" + imgdata[i].aperture
	   else					 outp = "--"
	   print_td(td, "col1", highlight("aperture", outp))
	}
	if(document.settings.shutter.checked) {
	   if(imgdata[i].shutter!=sortAtLast_i) outp = imgdata[i].shutter + '"'
	   else					outp = "--"
	   print_td(td, "col1", highlight("shutter", outp))
	}
	if(document.settings.iso.checked) {
	   if(imgdata[i].iso!=sortAtLast_i) outp = "ISO " + imgdata[i].iso
	   else				    outp = "--"
	   print_td(td, "col1", highlight("iso", outp))
	}
	if(document.settings.ev.checked) {
	   if(! isNaN(imgdata[i].ev)) outp = "EV " + Math.round(imgdata[i].ev * 10) / 10
	   else			      outp = "--"
	   print_td(td, "col1", highlight("ev", outp))
	}
	if(document.settings.meteringMode.checked) {
	   if(imgdata[i].meteringMode!=sortAtLast_s) outp = imgdata[i].meteringMode + " metering"
	   else					     outp = "--"
	   print_td(td, "col1", highlight("meteringMode", outp))
	}
	if(document.settings.exposureCompensation.checked) {
	   if(imgdata[i].exposureCompensation!=sortAtLast_s) outp = imgdata[i].exposureCompensation
	   else					             outp = "0"
	   print_td(td, "col1", highlight("exposureCompensation", outp))
	}
	// constructing Lens/Foc. Length
	outp = ""	
	if(document.settings.lens.checked) {
	   if(imgdata[i].lens!=sortAtLast_i) { outp = imgdata[i].lens.replace(/,0 to /, "-")
	   				       outp = outp.replace(/,0/, "mm") }
	   else				       outp = "--"
	}
	if(document.settings.lens.checked && document.settings.focalLength.checked) {
	   // only if zoom lens
	   if(imgdata[i].lens.search(/ to /) > 0) outp+= " @&nbsp;"
	}
	if(document.settings.focalLength.checked) {
	   // only if zoom lens or focalLength without lens
	   if(imgdata[i].lens.search(/ to /) > 0 || ! document.settings.lens.checked) {
	   	if(imgdata[i].focalLength!=sortAtLast_i) outp+= imgdata[i].focalLength + "mm"
	   	else					 outp+= "--" 
	   }
	}
	if(document.settings.lens.checked || document.settings.focalLength.checked) {
	   if(sortBy_val == "lens" || sortBy_val == "focalLength")
	   	outp = '<font color="darkgreen">' + outp + "</font>"
	   print_td(td, "col5", outp)
	}
	// end Lens / Foc. Length
	if(document.settings.subjectDistance.checked) {
	   if(imgdata[i].subjectDistance!=sortAtLast_i) {
	   		// convert meter to feet
	   		if(scale == "ft.") { meter = imgdata[i].subjectDistance.replace(/,/, ".")
	   				     feet  = meter * 3.2808
	   				     imgdata[i].subjectDistance = Math.round(feet * 100) / 100
	   				   }
	   		outp = imgdata[i].subjectDistance + scale
	   }
	   else		outp = "--"
	   print_td(td, "col5", highlight("subjectDistance", outp))
	}
	if(document.settings.flash.checked) {
	   if(imgdata[i].flash!=sortAtLast_s) outp = imgdata[i].flash
	   else				      outp = "--"
	   print_td(td, "col1", highlight("flash", outp))
	}
	if(document.settings.flashCompensation.checked) {
	   if(imgdata[i].flashCompensation!=sortAtLast_s) outp = imgdata[i].flashCompensation
	   else					     outp = "--"
	   print_td(td, "col1", highlight("flashCompensation", outp))
	}
	if(document.settings.EFguideNumber.checked) {
	   if(imgdata[i].EFguideNumber!=sortAtLast_i) outp = "GN " + imgdata[i].EFguideNumber
	   else					      outp = "--"
	   print_td(td, "col1", highlight("EFguideNumber", outp))
	}
	if(document.settings.exposureMode.checked) {
	   if(imgdata[i].exposureMode!=sortAtLast_s) outp = imgdata[i].exposureMode
	   else					     outp = "--"
	   print_td(td, "col3", highlight("exposureMode", outp))
	}
	if(document.settings.focusPoint.checked) {
	   if(imgdata[i].focusPoint!=sortAtLast_s) outp = imgdata[i].focusPoint
	   else					   outp = "none"
	   print_td(td, "col3", highlight("focusPoint", outp))
	}
	if(document.settings.aebExpCompensation.checked) {
	   if(imgdata[i].aebExpCompensation!=sortAtLast_s) outp = "AEB " + imgdata[i].aebExpCompensation
	   else						   outp = "--"
	   print_td(td, "col3", highlight("aebExpCompensation", outp))
	}
	if(document.settings.aebShotNumber.checked) {
	   if(imgdata[i].aebShotNumber!=sortAtLast_s) outp = "AEB# " + imgdata[i].aebShotNumber
	   else					      outp = "--"
	   print_td(td, "col3", highlight("aebShotNumber", outp))
	}
	if(document.settings.focusMode.checked) {
	   if(imgdata[i].focusMode!=sortAtLast_s) outp = imgdata[i].focusMode		//.replace(/Manual Focus/, "MF")
	   else					  outp = "--"
	   print_td(td, "col3", highlight("focusMode", outp))
	}
	if(document.settings.driveMode.checked) {
	   if(imgdata[i].driveMode!=sortAtLast_s) outp = imgdata[i].driveMode.replace(/ shooting/, "")
	   else					  outp = "--"
	   outp = outp.replace(/ frame/, "")
	   print_td(td, "col3", highlight("driveMode", outp))
	}
	if(document.settings.whiteBalance.checked) {
	   if(imgdata[i].whiteBalance!=sortAtLast_s) outp = imgdata[i].whiteBalance + " WB"
	   else					     outp = "--"
	   print_td(td, "col3", highlight("whiteBalance", outp))
	}
	if(document.settings.saturation.checked) {
	   if(imgdata[i].saturation!=sortAtLast_s) outp = imgdata[i].saturation + " sat."
	   else					   outp = "--"
	   print_td(td, "col3", highlight("saturation", outp))
	}
	if(document.settings.contrast.checked) {
	   if(imgdata[i].contrast!=sortAtLast_s) outp = imgdata[i].contrast + " contr."
	   else					 outp = "--"
	   print_td(td, "col3", highlight("contrast", outp))
	}
	if(document.settings.sharpness.checked) {
	   if(imgdata[i].sharpness!=sortAtLast_s) outp = imgdata[i].sharpness + " sharp."
	   else					  outp = "--"
	   print_td(td, "col3", highlight("sharpness", outp))
	}
	if(document.settings.quality.checked) {
	   if(imgdata[i].quality!=sortAtLast_s) outp = imgdata[i].quality
	   else					outp = "--"
	   print_td(td, "col3", highlight("quality", outp))
	}
	if(document.settings.digitalZoom.checked) {
	   if(imgdata[i].digitalZoom!=sortAtLast_s) outp = imgdata[i].digitalZoom + " zoom"
	   else					    outp = "--"
	   print_td(td, "col3", highlight("digitalZoom", outp))
	}
	if(document.settings.selfTimer.checked) {
	   if(imgdata[i].selfTimer!=sortAtLast_i) outp = imgdata[i].selfTimer + '"'
	   else					  outp = "no"
	   print_td(td, "col3", highlight("selfTimer", outp))
	}
	if(document.settings.dateTime.checked) {
	   if(imgdata[i].dateTime!=sortAtLast_s) outp = imgdata[i].dateTime
	   else				         outp = "--"
	   print_td(td, "col3", highlight("dateTime", outp))
	}
	if(document.settings.caption.checked) {
	   if(imgdata[i].caption!=sortAtLast_s) outp = '<TABLE><tr><td align="left" class="lil">' + imgdata[i].caption + '</td></tr></table>'
	   else					outp = "--"
	   print_td(td, "col3", highlight("caption", outp))
	}
	if(document.settings.imageNumber.checked) {
	   if(imgdata[i].imageNumber!=sortAtLast_s) outp = imgdata[i].imageNumber
	   else					    outp = "--"
	   print_td(td, "col3", highlight("imageNumber", outp))
	}
	if(document.settings.seqNumber.checked) {
	   if(imgdata[i].seqNumber!=sortAtLast_s) outp = imgdata[i].seqNumber
	   else					  outp = "--"
	   print_td(td, "col3", highlight("seqNumber", outp))
	}
	if(document.settings.fileSize.checked)
	   print_td(td, "col3", highlight("fileSize", formatDef(imgdata[i].fileSize)))
	
	// print IPTC columns
	if(document.settings.IPTC_objectName.checked)
	   print_td(td, "col6", highlight("IPTC_objectName",	formatDef(imgdata[i].IPTC_objectName)))
	if(document.settings.IPTC_caption.checked)
	   print_td(td, "col6", highlight("IPTC_caption",	formatDef(imgdata[i].IPTC_caption)))
	if(document.settings.IPTC_headline.checked)
	   print_td(td, "col6", highlight("IPTC_headline",	formatDef(imgdata[i].IPTC_headline)))
	if(document.settings.IPTC_category.checked)
	   print_td(td, "col6", highlight("IPTC_category",	formatDef(imgdata[i].IPTC_category)))
	if(document.settings.IPTC_specialInstructions.checked)
	   print_td(td, "col6", highlight("IPTC_specialInstructions", formatDef(imgdata[i].IPTC_specialInstructions)))
	if(document.settings.IPTC_sublocation.checked)
	   print_td(td, "col6", highlight("IPTC_sublocation",	formatDef(imgdata[i].IPTC_sublocation)))
	if(document.settings.IPTC_city.checked)
	   print_td(td, "col6", highlight("IPTC_city",		formatDef(imgdata[i].IPTC_city)))
	if(document.settings.IPTC_state.checked)
	   print_td(td, "col6", highlight("IPTC_state",		formatDef(imgdata[i].IPTC_state)))
	if(document.settings.IPTC_country.checked)
	   print_td(td, "col6", highlight("IPTC_country",	formatDef(imgdata[i].IPTC_country)))
	if(document.settings.IPTC_countryCode.checked)
	   print_td(td, "col6", highlight("IPTC_countryCode",	formatDef(imgdata[i].IPTC_countryCode)))
	if(document.settings.IPTC_dateCreated.checked)
	   print_td(td, "col6", highlight("IPTC_dateCreated",	formatDef(imgdata[i].IPTC_dateCreated)))
	if(document.settings.IPTC_timeCreated.checked)
	   print_td(td, "col6", highlight("IPTC_timeCreated",	formatDef(imgdata[i].IPTC_timeCreated)))
	if(document.settings.IPTC_byline.checked)
	   print_td(td, "col6", highlight("IPTC_byline",	formatDef(imgdata[i].IPTC_byline)))
	if(document.settings.IPTC_source.checked)
	   print_td(td, "col6", highlight("IPTC_source",	formatDef(imgdata[i].IPTC_source)))
	if(document.settings.IPTC_origTransRef.checked)
	   print_td(td, "col6", highlight("IPTC_origTransRef",	formatDef(imgdata[i].IPTC_origTransRef)))

	// print file name and links to full EXIF / IPTC data
	if(document.settings.file.checked) {
	   document.writeln("</tr><tr>")
	   outp = highlight("file", imgdata[i].file)
	   document.writeln(td3 + outp)
	   document.writeln("&nbsp;&nbsp;&nbsp;" + exifpop + iptcpop + "</td>")
	}
	
	document.writeln("</tr>")
    }
}

// print header for the selected columns
function print_tableheader() {

	// <a href="javascript:document.settings.submit()"><img 
	//   src="down.gif" alt="sort" title="sort" border="0"></a>

	th = '<td align="center" class="head"><b>'
	document.writeln("<tr><td></td>")

	// print EXIF header
	if(document.settings.tagged.checked)
	   print_td(th, "", highlight("tagged", "Tag"))
	if(document.settings.aperture.checked)
	   print_td(th, "", highlight("aperture", "Aperture"))
	if(document.settings.shutter.checked)
	   print_td(th, "", highlight("shutter", "Shutter"))
	if(document.settings.iso.checked)
	   print_td(th, "", highlight("iso", "ISO"))
	if(document.settings.ev.checked)
	   print_td(th, "", highlight("ev", "Exp. Val."))   
	if(document.settings.meteringMode.checked)
	   print_td(th, "", highlight("meteringMode", "Metering Mode"))
	if(document.settings.exposureCompensation.checked)
	   print_td(th, "", highlight("exposureCompensation", "Exp. Comp."))
	// constructing Lens/Foc. Length
	if(document.settings.lens.checked || document.settings.focalLength.checked)
	   document.writeln(th)
	if(document.settings.lens.checked)
	   document.writeln(highlight("lens", "Lens"))
	if(document.settings.lens.checked && document.settings.focalLength.checked)
	   document.writeln(" +<br>")
	if(document.settings.focalLength.checked)
	   document.writeln(highlight("focalLength", "Focal Length"))
	if(document.settings.lens.checked || document.settings.focalLength.checked)
	   document.writeln("</td>")
	// end Lens/Foc. Length

	if(document.settings.subjectDistance.checked)
	   print_td(th, "", highlight("subjectDistance", "Distance"))
	if(document.settings.flash.checked)
	   print_td(th, "", highlight("flash", "Flash"))
	if(document.settings.flashCompensation.checked)
	   print_td(th, "", highlight("flashCompensation", "Flash Comp."))
	if(document.settings.EFguideNumber.checked)
	   print_td(th, "", highlight("EFguideNumber", "Flash GN"))
	if(document.settings.exposureMode.checked)
	   print_td(th, "", highlight("exposureMode", "Exposure Mode"))
	if(document.settings.focusPoint.checked)
	   print_td(th, "", highlight("focusPoint", "Focus Point"))
	if(document.settings.aebExpCompensation.checked)
	   print_td(th, "", highlight("aebExpCompensation", "AEB Exp. Comp."))
	if(document.settings.aebShotNumber.checked)
	   print_td(th, "", highlight("aebShotNumber", "AEB Shot#"))
	if(document.settings.focusMode.checked)
	   print_td(th, "", highlight("focusMode", "Focus Mode"))
	if(document.settings.driveMode.checked)
	   print_td(th, "", highlight("driveMode", "Drive Mode"))
	if(document.settings.whiteBalance.checked)
	   print_td(th, "", highlight("whiteBalance", "White Balance"))
	if(document.settings.saturation.checked)
	   print_td(th, "", highlight("saturation", "Saturation"))
	if(document.settings.contrast.checked)
	   print_td(th, "", highlight("contrast", "Contrast"))
	if(document.settings.sharpness.checked)
	   print_td(th, "", highlight("sharpness", "Sharpness"))
	if(document.settings.quality.checked)
	   print_td(th, "", highlight("quality", "Quality"))
	if(document.settings.digitalZoom.checked)
	   print_td(th, "", highlight("digitalZoom", "Digital Zoom"))
	if(document.settings.selfTimer.checked)
	   print_td(th, "", highlight("selfTimer", "Self Timer"))
	if(document.settings.dateTime.checked)
	   print_td(th, "", highlight("dateTime", "Date Time"))
	if(document.settings.caption.checked)
	   print_td(th, "", highlight("caption", "Caption"))
	if(document.settings.imageNumber.checked)
	   print_td(th, "", highlight("imageNumber", "Image No."))
	if(document.settings.seqNumber.checked)
	   print_td(th, "", highlight("seqNumber", "Seq. No."))
	if(document.settings.fileSize.checked)
	   print_td(th, "", highlight("fileSize", "Size"))
	   
	// print IPTC header
	if(document.settings.IPTC_objectName.checked)
	   print_td(th, "", highlight("IPTC_objectName", "Object Name"))
	if(document.settings.IPTC_caption.checked)
	   print_td(th, "", highlight("IPTC_caption", "Caption"))
	if(document.settings.IPTC_headline.checked)
	   print_td(th, "", highlight("IPTC_headline", "Headline"))
	if(document.settings.IPTC_category.checked)
	   print_td(th, "", highlight("IPTC_category", "Category"))
	if(document.settings.IPTC_specialInstructions.checked)
	   print_td(th, "", highlight("IPTC_specialInstructions", "Special Instructions"))
	if(document.settings.IPTC_sublocation.checked)
	   print_td(th, "", highlight("IPTC_sublocation", "Sublocation"))
	if(document.settings.IPTC_city.checked)
	   print_td(th, "", highlight("IPTC_city", "City"))
	if(document.settings.IPTC_state.checked)
	   print_td(th, "", highlight("IPTC_state", "State"))
	if(document.settings.IPTC_country.checked)
	   print_td(th, "", highlight("IPTC_country", "Country"))
	if(document.settings.IPTC_countryCode.checked)
	   print_td(th, "", highlight("IPTC_countryCode", "Country Code"))
	if(document.settings.IPTC_dateCreated.checked)
	   print_td(th, "", highlight("IPTC_dateCreated", "Date Created"))
	if(document.settings.IPTC_timeCreated.checked)
	   print_td(th, "", highlight("IPTC_timeCreated", "Time Created"))
	if(document.settings.IPTC_byline.checked)
	   print_td(th, "", highlight("IPTC_byline.", "Byline"))
	if(document.settings.IPTC_source.checked)
	   print_td(th, "", highlight("IPTC_source", "Source"))
	if(document.settings.IPTC_origTransRef.checked)
	   print_td(th, "", highlight("IPTC_origTransRef", "Orig. Trans. Reference"))
	   
	document.writeln("</tr>")
}

// functions for default formatting 
function formatDef (str) {
	str.replace(/ - /, "<br>")
	if(str == sortAtLast_s) str = "&nbsp;"
	return  str
}
function highlight (col, str) {
	if(sortBy_val == col)
		str = '<font color="darkgreen">' + str + "</font>"
	return  str
}
function print_td (td, col, str) {
	bgcol=' background="' + col + '.gif">'
	if(col) td = td.replace(/>/, bgcol)
	document.writeln(td + str + "</td>")
}


