var ie5 = false;
var ns6 = false;
var moz = false;
var mac = false;

agent = navigator.userAgent.toLowerCase();
ie5   = (document.all && document.getElementById)  ? true : false;
ns6   = (document.getElementById && !document.all) ? true : false;
moz   = (document.getElementById && !document.all) ? true : false;
mac   = (agent.indexOf("mac")!=-1);

function setFormResponse(message) {
	var source = document.getElementById('form_response');
	/* new page fragment */
	var fragment= document.createDocumentFragment();

	var dv1 = document.createElement("div");
	dv1.name = "form_response";
	dv1.id = "form_response";

	var t = document.createTextNode(message);

	dv1.appendChild(t);
	fragment.appendChild(dv1);

	browserSafeReplace(source, fragment);							  

}

function safeSplit(splitchar, response) {
	// strip newlines
	response = response.replace(new RegExp( "\\n", "g" ),"");

	var retArray;
	if (response.search(splitchar) == -1) {
		retArray = new Array(1);
		retArray[0] = response;
	} else {
		// each shipping type is separated by ;
		retArray = response.split(splitchar);
	}

	return retArray;

}

function cacheBuster() {
	// use a cache buster parameter for ie
	var randomnumber=Math.floor(Math.random()*500000);
	var cachebuster = "&cb=" + randomnumber;
	return cachebuster;

}


function browserSafeReplace(source, fragment) {
	// apparently FF and IE work differently here...
	if (source.replaceNode) {
		source.replaceNode(fragment)
	} else if (source.parentNode.replaceChild) {
		source.parentNode.replaceChild(fragment, source);
	}

}


function alertAjaxError() {
	alert("Encountered an error contacting the server, check your zipcode and try the last operation again.  If this problem persists, you may email the cart or select Pick Up and we will contact you to determine shipping charges");
}

function toggleDiv(divin) {
	if (divin.style.visibility == 'visible') {
		hideDiv(divin);
	} else {
		showDiv(divin);
	}
}

function showDiv(divin) {
				divin.style.display = 'block';
				divin.style.visibility = 'visible';
}

function hideDiv(divin) {
				divin.style.display = 'none';
				divin.style.visibility = 'hidden';
}



function safemail(name, domain, display, css, subject) {
  css       = (css)     ? ' class="' + css + '"' : '';
  subject   = (subject) ? '?subject=' + subject : '';
  displayed = (display) ? display : name + '@' + domain;
  mailto    = name + '@' + domain + subject;
  
  document.write('<a href="mailto:' + mailto + '"' + css + '>' + displayed + '</a>');
}
function Popup(title,filename,w,h,scroll,resizable,menubar) {
  title     = (title == '')         ? 'popup' : title;
  scroll    = (scroll == 'scroll')  ? 'yes'   : 'no';
  resizable = (resizable == 'lock') ? 'no'    : 'yes';
  menubar   = (menubar == 'menu')   ? 'yes'   : 'no';
  
  winOptions = eval("'width="+w+",height="+h+",toolbar=no,location=no,directories=no,status=no,menubar="+menubar+",scrollbars="+scroll+",resizable="+resizable+",copyhistory=no'");
  window.open(filename,title,winOptions);
  return;
}
function DisableButton(obj) {
  obj.src          = 'images/loading.gif';
  obj.disabled     = true;
  obj.style.border = 'none';
  //obj.style.width  = 16;
  //obj.style.height = 16;
}
function DisableButtonTxt(obj) {
  obj.value        = 'Processing...';
  obj.disabled     = true;
  obj.style.border = 'none';
}
function SetFocus(fieldname,formname){if (formname == ''){ formname = 'form'; }if (eval("document."+formname+".elements[fieldname].value == ''")){ eval("document."+formname+".elements[fieldname].focus();"); }}
function ToggleElement(id) {
  var e = document.getElementById(id);
  if (e) {
    if (e.style.display == 'none') {
      e.style.display = '';
    } else {
      e.style.display = 'none';
    }
  }
}
function SubmitForm(obj, form_action) {
  // disable button
  DisableButton(obj);
  
  // get elements
  var frm = document.forms[obj.form.name];
  var act = frm.elements['form_action'];
  
  // set form action
  act.value = form_action;
  
  // submit form
  frm.submit();
}
function WriteToElement(id, str) {
  // get element
  var e = document.getElementById(id);
  
  // write
  if (e) {
    if (e.innerHTML) {
      e.innerHTML = str;
    } else {
      e.document.write(str);
      e.document.close();
    }
  }
}
function ClearValue(id) {
  var e = document.main.elements[id];
  if (e) {
    e.value = '';
  }
}
function ClearRadio(id) {
  var e = document.main.elements[id];
  if (e) {
    for (var i=0; i<e.length; i++) {
      e[i].checked = false;
    }
  }
}
function FindTop(obj) {
	var curtop = 0;
	if (obj.offsetParent) {
		while (obj.offsetParent) {
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	} else if (obj.y) {
		curtop += obj.y;
  }
	return curtop;
}
function FindLeft(obj) {
	var curleft = 0;
	if (obj.offsetParent) {
		while (obj.offsetParent) {
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	} else if (obj.x) {
		curleft += obj.x;
  }
	return curleft;
}
function HighlightAnswer(prefix, id) {
  // get all rows in form
  var rows = document.main.getElementsByTagName("tr");
  
  // set regex
  regex = new RegExp(prefix+'(.)*?');
  
  // highlight/unhighlight rows
  var row = 0;
  for (i=0; i<rows.length; i++) {
    if (regex.test(rows[i].id)) {
      if (rows[i].id == prefix+id) {
        rows[i].className = 'highlight';
      } else {
        rows[i].className = (row % 2) ? 'odd' : 'even';
      }
      row++;
    }
  }
}
function StripeTable(id) {
  var list  = $(id).getElementsByTagName('tr');
  var nodes = $A(list);
  var row   = 0;
  
  // alternate row color
  nodes.each(
    function(node) {
      // headers should not have an id
      if (node.id) {
        node.className = (row++ % 2) ? 'odd' : 'even';
      }
    }
  );
}
function HideResponse() {
  // check for previous reponses/errors
  if ($('form_response')) { Element.hide('form_response'); }
  if ($('errors'))        { Element.hide('errors'); }
  if ($('message'))       { Element.hide('message'); }
}

