//***** JavaScript Functions *****//

/*------------------------------------------------------------------------------------
MODULAR VARIABLES
------------------------------------------------------------------------------------*/

var imgExpand = new Image()
imgExpand.src = "http://www.franklins3.com/fraunkleen/images/misc/expand.gif"

var imgCollapse = new Image()
imgCollapse.src = "http://www.franklins3.com/fraunkleen/images/misc/collapse.gif"

var clrMint   = "#DFE9E1"
var clrWhite  = "#FFFFFF"

var intSort

var browser = navigator.userAgent.toLowerCase();

/*------------------------------------------------------------------------------------
FUNCTION init()
------------------------------------------------------------------------------------*/
function init() {
  var obj = document.getElementById('saveto')

  if (browser.indexOf("msie") != -1) {
    obj.innerHTML = "<a href=\"javascript:window.external.AddFavorite(location.href, document.title);\">Add us to your favorites!</a>"
  }
  else if (browser.indexOf("firefox") != -1) {
    obj.innerHTML = "<a href=\"javascript:window.sidebar.addPanel(document.title, location.href, '');\">Bookmark us!</a>"
  }
  else if (browser.indexOf("opera") != -1) {
    obj.innerHTML = "<a href=\"javascript:document.createElement(location.href, document.title, '');\">Bookmark us!</a>"
  }
  else {
    obj.innerHTML = "&nbsp;"
  }
}

/*------------------------------------------------------------------------------------
FUNCTION toggleForm()
------------------------------------------------------------------------------------*/
function toggleForm(strTd, strForm, strElem) {
  var td   = document.getElementById(strTd)
  var frm  = document.getElementById(strForm)
  var elem = document.getElementById(strElem)
  var ofrm

  if (frm.style.display != "none" && frm.style.display != "") {
    frm.style.display        = "none"
    td.style.backgroundColor = ""
    td.style.borderColor     = ""
  }
  else {
    // Hide the opposite form if currently shown
    if (frm.id == "fbook") {
      ofrm = document.getElementById('fsite')
      if (ofrm.style.display == "block") toggleForm('sbsite', 'fsite', 'sURL')
    }
    else if (frm.id == "fsite") {
      ofrm = document.getElementById('fbook')
      if (ofrm.style.display == "block") toggleForm('sbbook', 'fbook', 'bURL')
    }
    
    //td.style.backgroundColor = clrSkyBlue
    //td.style.borderColor     = clrCadetBlue
    frm.style.display        = "block"
    elem.focus()
  }
}

/*------------------------------------------------------------------------------------
FUNCTION fldFocus()
------------------------------------------------------------------------------------*/
function fldFocus(obj) {
  obj.style.backgroundColor = clrMint
}

/*------------------------------------------------------------------------------------
FUNCTION fldBlur()
------------------------------------------------------------------------------------*/
function fldBlur(obj) {
  obj.style.backgroundColor = clrWhite
}

/*------------------------------------------------------------------------------------
FUNCTION rowOver()
------------------------------------------------------------------------------------*/
function rowOver(objRow) {
  //objRow.style.backgroundColor = clrSkyBlue
}

/*------------------------------------------------------------------------------------
FUNCTION rowOut()
------------------------------------------------------------------------------------*/
function rowOut(objRow) {
  //objRow.style.backgroundColor = clrWhite
}

/*------------------------------------------------------------------------------------
FUNCTION sortCurrency()
------------------------------------------------------------------------------------*/
function sortCurrency(a,b) {
  var num1
  var num2
  
  num1 = parseFloat(a[intSort].substring(1,a.length))
  num2 = parseFloat(b[intSort].substring(1,b.length))

  return num1 - num2
}

/*------------------------------------------------------------------------------------
FUNCTION sortDate()
------------------------------------------------------------------------------------*/
function sortDate(a,b) {
  var date1
  var date2
  
  date1 = a[intSort].substr(6,4) + a[intSort].substr(0,2) + a[intSort].substr(3,2)
  date2 = b[intSort].substr(6,4) + b[intSort].substr(0,2) + b[intSort].substr(3,2)
  
  if(date1<date2) return -1
  if(date1>date2) return 1
  return 0
}

/*------------------------------------------------------------------------------------
FUNCTION sortNumeric()
------------------------------------------------------------------------------------*/
function sortNumeric(a,b) {
  return parseFloat(a[intSort]) - parseFloat(b[intSort])
}

/*------------------------------------------------------------------------------------
FUNCTION sortString()
------------------------------------------------------------------------------------*/
function sortString(a,b) {
  if (a[intSort]<b[intSort]) return -1
  if (a[intSort]>b[intSort]) return 1
  return 0
}

/*------------------------------------------------------------------------------------
FUNCTION sortTable()
------------------------------------------------------------------------------------*/
function sortTable(objLink) {
  var objHeader   = objLink.parentNode
  var objImgSort  = objLink.nextSibling
  var objHeaders  = objHeader.parentNode.childNodes
  var objRows     = objHeader.parentNode.parentNode.childNodes
  var intNumCols  = objRows[2].childNodes.length
  var arrTable    = new Array(objRows.length-3)
  var strSortType = objHeader.getAttribute("sorttype")
  var strHTML     = ""
  var intRow      = 0
  var intCol      = 0
  var objChk
  var strChks     = ""
  intSort         = parseInt(objHeader.cellIndex)
 
  //Loop through the cells and add the data to a 2D array
  for(intRow=2; intRow<objRows.length-1; intRow++) {
    //Deselect and deactivate selected rows
    /*
    objChk = objRows[intRow].childNodes[0].childNodes[0]
    if(objChk.checked == true) {
      strChks += objChk.value + "|"
      toggleRow(objChk)
    }
    */
    
    arrTable[intRow-2] = new Array(intNumCols)
    for(intCol=0; intCol<intNumCols; intCol++) {
      arrTable[intRow-2][intCol] = objRows[intRow].childNodes[intCol].innerHTML      
    }
  }

  //Clear the sorting images
  for(var i=1; i<objHeaders.length; i++) {
    objHeaders[i].childNodes[1].src = imgBlank.src
  }
   
  //Sort the array
  switch(strSortType) {
    case "dat":
      arrTable.sort(sortDate)
      break
    case "num":
      arrTable.sort(sortNumeric)
      break
    case "cur":
      arrTable.sort(sortCurrency)
      break
    default:
      arrTable.sort(sortString)
  }
  
  //Set the sort image and reverse if sorting opposite
  if(objHeader.getAttribute("sortdir") == "asc") {
    arrTable.reverse()
    objImgSort.src = imgAsc.src
    objHeader.setAttribute('sortdir','desc')
  }
  else {
    objImgSort.src = imgDesc.src
    objHeader.setAttribute('sortdir','asc')
  }

  //If rows were selected, split them into an array
  //if(strChks.length > 0) arrChks = strChks.substring(0,strChks.length-1).split("|")
  
  //Loop through the cells and set the text to the value in the 2d array
  for(intRow=2; intRow<objRows.length-1; intRow++) {
    for(intCol=0; intCol<intNumCols; intCol++) {
      objRows[intRow].childNodes[intCol].innerHTML = arrTable[intRow-2][intCol]
    }
    //Reselect and reactivate selected rows
    /*
    if(strChks.length > 0) {
      objChk = objRows[intRow].childNodes[0].childNodes[0]
      for(var i=0; i<arrChks.length; i++) {
        if(objChk.value == arrChks[i]) toggleRow(objChk)
      } //End loop
    } //End if
    */
  }
  return void(0)
}

function filter(fld) {
  fld.value = fld.value.replace(/[^\w\?\@\.\,\s\r\'\;\:\%\!\(\)\-\$]/g, '')
}

/*------------------------------------------------------------------------------------
FUNCTION showHideMenu()
------------------------------------------------------------------------------------*/
function showHideMenu(intId) {
  var arrRows  = document.getElementsByTagName("tr")
  var imgArrow = document.getElementById("menu-arrow-" + intId)

  for (var i = 0; i < arrRows.length; i++) {
    if (arrRows[i].id.substr(0,3) == "m" + intId + ".") {
      arrRows[i].style.display = (arrRows[i].style.display != 'none' ? 'none' : '' )
    }
  }
  
  imgArrow.src = (imgArrow.src != imgExpand.src ? imgExpand.src : imgCollapse.src )
}

/*------------------------------------------------------------------------------------
FUNCTION validateForm()
------------------------------------------------------------------------------------*/
function validateForm(frm) {
  var isValid = true
  var obj
  var name
  //var restr = "/[^A-Za-z0-9\?\@\.\,\'\;\:\%\!\(\)]/g"
  //var re = new RegExp(restr)
  
  //frm.fName.value = frm.fName.value.replace(re, '')
  //frm.lname.value = frm.lName.value.replace(/[^A-Za-z0-9\?\@\.\,\'\;\:\%\!\(\)]/g, '')
  //frm.email.value = frm.email.value.replace(re, '')
  //frm.phone.value = frm.phone.value.replace(re, '')
  
	//alert(lname)
	//return false
	
	// Message
	if (frm.message.value == "" || frm.message.value.match(re)) {
  	isValid = false
  	name = "Message"
  	obj = document.getElementById('message')
	}
	// Phone
	if (frm.phone.value == "") {
  	isValid = false
  	name = "Phone"
  	obj = document.getElementById('phone')
	}
	// Email
	if (frm.email.value == "") {
  	isValid = false
  	name = "Email"
  	obj = document.getElementById('email')
	}
	// Last Name
	if (frm.lName.value == "") {
  	isValid = false
  	name = "Last Name"
  	obj = document.getElementById('lName')
	}
	// First Name
	if (frm.fName.value == "") {
  	isValid = false
  	name = "First Name"
  	obj = document.getElementById('fName')
	}
  
  if (isValid == true) {
    return true;
    //alert("submit!")
  }
  else {
    alert("'" + name + "' must have a valid entry. Please correct the error and send your message again.")
    obj.focus()
    return false;
  }
}