var xmlHttp=null;
var tform=null;

function GetHTML(url){
  var HTML='';
  var idx=0;
  idx = url.indexOf('=');
  HTML = url.substr(idx+1,url.length);
  return HTML;
}

function textMax(field, maxlimit) {
  if (field.value.length > maxlimit){
    field.value = field.value.substring(0, maxlimit);
  }
}

function GetXmlHttpObject(){
  try{
    // Firefox, Opera 8.0+, Safari
    xmlHttp=new XMLHttpRequest();
  }catch (e){
    //Internet Explorer
    try{
      xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
    }catch (e){
      xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
  }
  return xmlHttp;
}

function submitForm(){
  var msgstr = '';
  var vstr = '';
  var flg = true;
  var crlf = String.fromCharCode(10);
  var nodata = '#ECECEC';
  for (i=0; i < tform.elements.length; i++){
    var svar = tform.elements[i].className;
    var reqArray = svar.split("|")
    if ((tform.elements[i].value == '' || tform.elements[i].value == '0') && (reqArray[0] == 'required')){
      msgstr = msgstr + '   '+reqArray[1] + crlf;
      document.getElementById(tform.elements[i].id).style.background=nodata;
    }
  }
  if (msgstr != ''){
    msgstr = 'The following fields are required:' + crlf + msgstr;
    alert(msgstr);
    flg = false;
  }
  return flg;
}

function resetForm(){
  for (i=0; i < tform.elements.length; i++){
    if (tform.elements[i].type != 'button' && tform.elements[i].type != 'hidden' && tform.elements[i].type != 'image'){
      document.getElementById(tform.elements[i].id).style.background="#ffffff";
    }
  }
  return true;
}

function processForm(){
  GetXmlHttpObject();
//alert(vstr);
}

function collectData(){
  var vstr = '';
  for (i=0; i < tform.elements.length; i++){
alert(tform.elements[i].id + ' - ' + tform.elements[i].type + ' - ' + tform.elements[i].name);
    if (tform.elements[i].type != 'button' && tform.elements[i].type != 'radio' && tform.elements[i].type != '' && tform.elements[i].value != ''){
      vstr = vstr + tform.elements[i].id + '=' + document.getElementById(tform.elements[i].id).value + '&';
    }else if (tform.elements[i].type == 'radio'){
      if (tform.elements[i].checked==true){
        vstr = vstr + tform.elements[i].id + '=' + tform.elements[i].value + '&';
      }
    }
  }
alert(vstr);
  return String(vstr).substring(0,String(vstr).length-1);
}

function CheckDate(THISDATE) {
  if (THISDATE.value == ""){return ""}
	var err=0
        var regExp
        var okVar = THISDATE.value
	a=THISDATE.value
	if (a.length != 10) err=1
	b = a.substring(0, 2)// month
	c = a.substring(2, 3)// '/'
	d = a.substring(3, 5)// day
	e = a.substring(5, 6)// '/'
	f = a.substring(6, 10)// year
        okVar = b+'/'+d+'/'+f
	if (b<1 || b>12) err = 1
	if (d<1 || d>31) err = 1
	if (f<1900) err = 1
	if (b==4 || b==6 || b==9 || b==11){
		if (d==31) err=1
	}
	if (b==2){
		var g=parseInt(f/4)
		if (isNaN(g)) {
			err=1
		}
		if (d>29) err=1
		if (d==29 && ((f/4)!=parseInt(f/4))) err=1
	}
	if (err==1) {
		alert(THISDATE.value + ' is not a valid date. Please re-enter. - mm/dd/yyyy');
                THISDATE.select()
		THISDATE.value = ""
                THISDATE.focus()
	}else{
            THISDATE.value=okVar
        }
}

function extractNumber(obj, decimalPlaces, allowNegative)
{
	var temp = obj.value;
	
	// avoid changing things if already formatted correctly
	var reg0Str = '[0-9]*';
	if (decimalPlaces > 0) {
		reg0Str += '\\.?[0-9]{0,' + decimalPlaces + '}';
	} else if (decimalPlaces < 0) {
		reg0Str += '\\.?[0-9]*';
	}
	reg0Str = allowNegative ? '^-?' + reg0Str : '^' + reg0Str;
	reg0Str = reg0Str + '$';
	var reg0 = new RegExp(reg0Str);
	if (reg0.test(temp)) return true;

	// first replace all non numbers
	var reg1Str = '[^0-9' + (decimalPlaces != 0 ? '.' : '') + (allowNegative ? '-' : '') + ']';
	var reg1 = new RegExp(reg1Str, 'g');
	temp = temp.replace(reg1, '');

	if (allowNegative) {
		// replace extra negative
		var hasNegative = temp.length > 0 && temp.charAt(0) == '-';
		var reg2 = /-/g;
		temp = temp.replace(reg2, '');
		if (hasNegative) temp = '-' + temp;
	}
	
	if (decimalPlaces != 0) {
		var reg3 = /\./g;
		var reg3Array = reg3.exec(temp);
		if (reg3Array != null) {
			// keep only first occurrence of .
			//  and the number of places specified by decimalPlaces or the entire string if decimalPlaces < 0
			var reg3Right = temp.substring(reg3Array.index + reg3Array[0].length);
			reg3Right = reg3Right.replace(reg3, '');
			reg3Right = decimalPlaces > 0 ? reg3Right.substring(0, decimalPlaces) : reg3Right;
			temp = temp.substring(0,reg3Array.index) + '.' + reg3Right;
		}
	}
	
	obj.value = temp;
}

function blockNonNumbers(obj, e, allowDecimal, allowNegative)
{
	var key;
	var isCtrl = false;
	var keychar;
	var reg;
		
	if(window.event) {
		key = e.keyCode;
		isCtrl = window.event.ctrlKey
	}
	else if(e.which) {
		key = e.which;
		isCtrl = e.ctrlKey;
	}
	
	if (isNaN(key)) return true;
	
	keychar = String.fromCharCode(key);
	
	// check for backspace or delete, or if Ctrl was pressed
	if (key == 8 || isCtrl)
	{
		return true;
	}

	reg = /\d/;
	var isFirstN = allowNegative ? keychar == '-' && obj.value.indexOf('-') == -1 : false;
	var isFirstD = allowDecimal ? keychar == '.' && obj.value.indexOf('.') == -1 : false;
	
	return isFirstN || isFirstD || reg.test(keychar);
}

function isNumeric(strString)
   //  check for valid numeric strings	
   {
   var strValidChars = "0123456789.-";
   var strChar;
   var blnResult = true;

   if (strString.length == 0) return blnResult;

   //  test strString consists of valid characters listed above
   for (i = 0; i < strString.length && blnResult == true; i++)
      {
      strChar = strString.charAt(i);
      if (strValidChars.indexOf(strChar) == -1)
         {
         blnResult = false;
         }
      }
   return blnResult;
   }

function FmtNumber(gCurVal,timing,decimal,MaxLen,type) {
   S = gCurVal.value;
   len = S.length;
   newStr = '';
   neg = 0;
   for (i=0; i<len; i++){
      if (S.substr(i,1) != ' ' && S.substr(i,1) != '$' && S.substr(i,1) != ',' && S.substr(i,1) != '(' && S.substr(i,1) != ')'){
         newStr = newStr + S.substr(i,1);
         if (isNaN(S.substr(i,1)) && S.substr(i,1) != '.' && S.substr(i,1) != '-'){
            alert ('A non-numeric found in this entry.');
            gCurVal.value = '0';
            gCurVal.select();
            gCurVal.focus();
            return
         }
      }else{
         if (S.substr(i,1) == '(')
            neg = 1;
         }
   }
   if (neg == 1){
      newStr = '-' + newStr;
   }
   curVal = newStr;
   if (timing == 'EXIT'){
      var dc='.';
      var gc=',';
      var nc='(';
      var cs='$';
      if (type != 'M'){cs='';}
//      W=curVal.length + 6;
      dec='1';
      for (i=0;i<decimal;i++){dec = dec + '0';}
      var N=Math.abs(Math.round(curVal*dec));
      var S=((N<10)?'00':((N<100)?'0':''))+N;
      S=cs+((curVal<0)?nc:'')+Group(S.substring(0,(S.length-2)))+dc+S.substring((S.length-2),S.length)+((curVal<0&&nc=='(')?')':'');
         gCurVal.value = PadStr(S,' ',MaxLen,'R');
   }else{
      gCurVal.value = PadStr(newStr,' ',MaxLen,'R');
      gCurVal.select();
      gCurVal.focus();
   }
}

function PadStr(S,Str,Len,Just){
   var NewStr = '';
   var NewLen = Len - S.length;
   for (i=0;i<NewLen;i++){NewStr = NewStr + Str;}
   return NewStr + S;
}

function Group(S) {
    var gc=',';
    return (S.length<4)?S:(Group(S.substring(0,S.length-3))+gc+S.substring(S.length-3,S.length));
}

function FmtAlpha(strData, fmtCode){
//
// Format a string to either 1-Uppercase, 2-Lowercase, or 3-Titlecase
//
   newStr = ''
   if (fmtCode ==  '1'){
      strData = strData.toUpperCase()
      strData = ReplaceString(strData,'=','%3D')
      return strData
   }
   if (fmtCode == '2'){
      strData = strData.toLowerCase()
      strData = ReplaceString(strData,'=','%3D')
      return strData
   }
   if (fmtCode == '3'){
      newStr = ''
      newStr = ReplaceString(strData,'_',' ')
      strData = newStr
      newStr = strData.toLowerCase()
      strData = newStr
      newStr = ''
      max = strData.length
      for (i=0; i < max; i++){
         if (i == 0 || strData.substr(i-1,1) == ' '){
             newStr += strData.substr(i,1).toUpperCase()
         }else{
             newStr += strData.substr(i,1)
         }
      }
   }
   newStr = ReplaceString(newStr,'=','%3D')
   return newStr
}

function ReplaceString(strData, lookFor, replaceWith){
//
// Replace all occurances of a substring with a specified substring
// within the data object.
//
    newStr = ''
    var testStr = strData
    if (testStr.indexOf(lookFor) != -1) {
       myArray = testStr.split(lookFor)
       for (i=0; i < myArray.length; i++){
          if (i != myArray.length-1){
             newStr += myArray[i] + replaceWith
          }else{
             newStr += myArray[i]
          }
       }
   }else{
       newStr = strData
   }
   return newStr
}

function FmtPhone(gField){
   var crLf = String.fromCharCode(13,10)
   testVar = gField.value
   if (testVar == ''){ return testVar }
   testVar = ReplaceString(testVar,"(","")
   testVar = ReplaceString(testVar,")","")
   testVar = ReplaceString(testVar,"-","")
   testVar = ReplaceString(testVar," ","")
   testVar = ReplaceString(testVar,".","")
   testVar = ReplaceString(testVar,"+","")
   testVar = ReplaceString(testVar,"/","")
   if (testVar.length > 10){return testVar}
   if (testVar.length < 10 && testVar.length < 7){
      alert("An insufficient number of characters has been entered or" + crLf + "the data entered was in the wrong format.")
      gField.focus()
      gField.select()
   }
   if (testVar.length == 10){
      testVar = "(" + testVar.substr(0,3) + ") " + testVar.substr(3,3) + "-" + testVar.substr(6)
   }
   if (testVar.length == 7){
      testVar = testVar.substr(0,3) + "-" + testVar.substr(3,4)
   }
   gField.value = testVar
   return testVar
}

function CheckEmail(gField){
   var emailVar = gField.value
   var pass
   if (emailVar == ''){ return emailVar }
   pass = true
   if (!emailVar.indexOf('@') || !emailVar.indexOf('.')){
      pass = false
   }
   if (emailVar.substr(0,emailVar.indexOf('@')) == '' || emailVar.substr(0,emailVar.indexOf('.')) == '' || emailVar.substr(emailVar.indexOf('.')+1,1) == ''){
      pass = false
   }
   if (emailVar.substr(emailVar.indexOf('@')+1,1) == '.'){
      pass = false
   }
   if (pass == false){
      alert("Check e-mail address entry. E-mail address is invalid.")
      gField.value = ''
      gField.focus()
   }else{
     emailVar = FmtAlpha(emailVar,2)
     gField.value = emailVar
   }
   return pass
}

function VerifyPassword(gField1, gField2){
   if (gField1.value == '' || gField2.value == ''){return}
   if (gField1.value != gField2.value){
      alert("Your passwords do not match, please try again.")
      gField1.value = ''
      gField2.value = ''
      gField1.focus()
   }
}

function SwitchBillShip(){ 
   if (document.getElementById('SameBill').checked == true){
     document.getElementById('SFName').value = document.getElementById('FName').value;
     document.getElementById('SMName').value = document.getElementById('MName').value;
     document.getElementById('SLName').value = document.getElementById('LName').value;
     document.getElementById('SAddr1').value = document.getElementById('Addr1').value;
     document.getElementById('SAddr2').value = document.getElementById('Addr2').value;
     document.getElementById('SCity').value = document.getElementById('City').value;
     document.getElementById('SState').value = document.getElementById('State').value;
     document.getElementById('SPostalCode').value = document.getElementById('PostalCode').value;
     document.getElementById('SCountry').value = document.getElementById('Country').value;
     document.getElementById('SPhone').value = document.getElementById('Phone').value;
   }else{
     document.getElementById('SFName').value = '';
     document.getElementById('SMName').value = '';
     document.getElementById('SLName').value = '';
     document.getElementById('SAddr1').value = '';
     document.getElementById('SAddr2').value = '';
     document.getElementById('SCity').value = '';
     document.getElementById('SState').value = '';
     document.getElementById('SPostalCode').value = '';
     document.getElementById('SCountry').value = '';
     document.getElementById('SPhone').value = '';
   }
}

function validCreditCard(s) {
// remove non-numerics
if (s==''){return true;}
var v = "0123456789";
var w = "";
for (i=0; i < s.length; i++) {
x = s.charAt(i);
if (v.indexOf(x,0) != -1)
w += x;
}
// validate number
j = w.length / 2;
if (j < 6.5 || j > 8 || j == 7) return false;
k = Math.floor(j);
m = Math.ceil(j) - k;
c = 0;
for (i=0; i<k; i++) {
a = w.charAt(i*2+m) * 2;
c += a > 9 ? Math.floor(a/10 + a%10) : a;
}
for (i=0; i<k+m; i++) c += w.charAt(i*2+1-m) * 1;
return (c%10 == 0);
}

function windowOpenCentered(windowHeight, windowWidth, windowName, windowUri)
{
    var centerWidth = (window.screen.width - windowWidth) / 2;
    var centerHeight = (window.screen.height - windowHeight) / 2;

    newWindow = window.open(windowUri, windowName, 'resizable=0, '+
        'scrollbars=0, ' +
        'toolbar=0, ' +
        'addressbar=0, ' +
        'location=0, ' +
        'directories=0, ' +
        'status=0, ' +
        'menubar=0 ' +
        ',width=' + windowWidth + 
        ',height=' + windowHeight + 
        ',left=' + centerWidth + 
        ',top=' + centerHeight);

    newWindow.focus();
    return newWindow.name;
}

function goLite(BTN){
   document.getElementById(BTN).style.color = "#FFFF00";
   document.getElementById(BTN).style.borderTopColor = "#55743A";
   document.getElementById(BTN).style.borderBottomColor = "#82AF59";
   document.getElementById(BTN).style.borderLeftColor = "#55743A";
   document.getElementById(BTN).style.borderRightColor = "#82AF59";
}

function goDim(BTN) {
   document.getElementById(BTN).style.color = "#FFFFCC";
   document.getElementById(BTN).style.borderTopColor = "#82AF59";
   document.getElementById(BTN).style.borderBottomColor = "#55743A";
   document.getElementById(BTN).style.borderLeftColor = "#82AF59";
   document.getElementById(BTN).style.borderRightColor = "#55743A";
}

ddaccordion.init({
	headerclass: "expandable", //Shared CSS class name of headers group that are expandable
	contentclass: "categoryitems", //Shared CSS class name of contents group
	revealtype: "click", //Reveal content when user clicks or onmouseover the header? Valid value: "click" or "mouseover
	collapseprev: true, //Collapse previous content (so only one open at any time)? true/false 
	defaultexpanded: [], //index of content(s) open by default [index1, index2, etc]. [] denotes no content
	onemustopen: false, //Specify whether at least one header should be open always (so never all headers closed)
	animatedefault: false, //Should contents open by default be animated into view?
	persiststate: true, //persist state of opened contents within browser session?
	toggleclass: ["", "openheader"], //Two CSS classes to be applied to the header when it's collapsed and expanded, respectively ["class1", "class2"]
	togglehtml: ["prefix", "", ""], //Additional HTML added to the header when it's collapsed and expanded, respectively  ["position", "html1", "html2"] (see docs)
	animatespeed: "normal", //speed of animation: "fast", "normal", or "slow"
	oninit:function(headers, expandedindices){ //custom code to run when headers have initalized
		//do nothing
	},
	onopenclose:function(header, index, state, isuseractivated){ //custom code to run whenever a header is opened or closed
		//do nothing
	}
})

function AJAX_Signup(n,e){
  xmlHttp=GetXmlHttpObject()
  if (xmlHttp==null){
    alert ("Your browser does not support AJAX!");
    return;
  } 

  var url="EmailSignUp.asp";

  url=url+"?name="+n;
  url=url+"&email="+e;

  xmlHttp.onreadystatechange=stateChangedSignUp;
  xmlHttp.open("GET",url,true);
  xmlHttp.send(null);
}

function stateChangedSignUp(){ 
  if (xmlHttp.readyState==4){ 
    var str = xmlHttp.responseText;
    if (str == 'XX'){
      document.getElementById('sname').style.background='#FFFFFF';
      document.getElementById('semail').style.background='#FFFFFF';
      document.getElementById('sname').value='';
      document.getElementById('semail').value='';
      alert('Thank you,\nYou have been added to receive\nthe Candle Cocoon Newsletter');
    }else{
      document.getElementById('sname').style.background='#FFFFFF';
      document.getElementById('semail').style.background='#FFFFFF';
      document.getElementById('sname').value='';
      document.getElementById('semail').value='';
      alert(str);
    }
  }
}

function isSignupComplete(){
  var msgstr = '';
  var flg = true;
  var crlf = String.fromCharCode(10);
  if (document.getElementById('sname').value == ''){
    msgstr = msgstr + '   Your Name' + crlf;
    document.getElementById('sname').style.background="#B7B7DB";
  }
  if (document.getElementById('semail').value == ''){
    msgstr = msgstr + '   Email Address' + crlf;
    document.getElementById('semail').style.background="#B7B7DB";
  }
  if (msgstr != ''){
    msgstr = 'The following fields are required:' + crlf + msgstr;
    alert(msgstr);
    flg = false;
  }else{

  }
  return flg;
}

