// JavaScript Document
if (!window.expand){
	function expand(ulid){
		li=document.getElementById(ulid);
		var ul=li.getElementsByTagName('ul')[0];
		if(ul.style.display!="block"){
			ul.style.display="block";
			ul.style.visibility="visible";
		}else{
			ul.style.display="none";
			ul.style.visibility="hidden";
		}
	}
}

// AJAX
var ajaxRequest;
var currentHash;
setInterval('checkHash()', 50);

if (!window.checkHash){
	function checkHash() {
		if (window.getHash){
			var newHash = getHash();

			if (newHash){
				newHash = newHash.replace("&amp;", "&"); 
				if (newHash != currentHash) {
					currentHash = newHash;
					loadPage();
				}
			}
		}
	}}

if (!window.loadPage){
	function loadPage() {
		new Ajax.Request(
						 'lib/clientFunc.php?'+currentHash+'&tz='+(new Date().getTimezoneOffset()/60)*(-1),
			{ method: 'get',
				onComplete: function(xhr){
					var xmldoc = xhr.responseText;
					var parsed = xmldoc.split(String.fromCharCode(30), 2)
					var destDiv = document.getElementById(parsed[0]);
					
					//destDiv.innerHTML = parsed[1];
					if (parsed[0]=='logout') window.location=unescape(parsed[1]); else destDiv.innerHTML = parsed[1];
				}
			}
		);
	}}
	
if (!window.updateUI){
	/** A simple method that updates our user
		interface using the new location. */
	function updateUI(newLocation,
					  historyData) {
	  // simply display the location and the
	  // data
	  var historyMessage;
	  if (historyData != null)
		historyMessage = historyData.message;
		
	  var message = "New location: "
					+ newLocation 
					+ ", history data="
					+ historyMessage;
					
	  currentHash = newLocation;
	  loadPage();
	}}

if (!window.noHistoryLoadPage){
	function noHistoryLoadPage(variables) {
		new Ajax.Request(
						 'lib/clientFunc.php?'+variables+'&tz='+(new Date().getTimezoneOffset()/60)*(-1),
			{ method: 'get',
				onComplete: function(xhr){
						var xmldoc = xhr.responseText;
						var parsed = xmldoc.split(String.fromCharCode(30), 4)
						var destDiv = document.getElementById(parsed[0]);
						
						destDiv.innerHTML = parsed[1];
				}
			}
		);
	}}

window.dhtmlHistory.create({
	toJSON: function(o) {
		return Object.toJSON(o);
	}
	, fromJSON: function(s) {
		return s.evalJSON();
	}
});

var linkListener = function(newLocation, historyData) {
	  updateUI(newLocation, historyData);
}

window.onload = function() {
	dhtmlHistory.addListener(linkListener);
	//ajax search
	if (window.initializeSearch){
		window.initializeSearch();
	}
};

// store
function copyBillingInfo(){
	registerForm = document.getElementById('register');
	registerForm.smSFullName.value = (registerForm.smBMiddleName.value!='') ? registerForm.smBFirstName.value+' '+registerForm.smBMiddleName.value+' '+registerForm.smBLastName.value : registerForm.smBFirstName.value+' '+registerForm.smBLastName.value;
	registerForm.smSCompany.value = registerForm.smBCompany.value;
	registerForm.smSAddress1.value = registerForm.smBAddress1.value;
	registerForm.smSAddress2.value = registerForm.smBAddress2.value;
	registerForm.smSCity.value = registerForm.smBCity.value;
	registerForm.smSState.value = registerForm.smBState.value;
	registerForm.smSProvince.value = registerForm.smBProvince.value;
	registerForm.smSCountry.value = registerForm.smBCountry.value;
	registerForm.smSPostalCode.value = registerForm.smBPostalCode.value;}

function selectCountry(obj){
	registerForm = document.getElementById('register');
	switch (true){
	case (obj==registerForm.smBCountry):
		if (registerForm.smBCountry.value!=""){
			if (registerForm.smBCountry.value == "US"){
				registerForm.smBState.disabled = false;
				registerForm.smBProvince.disabled = true;
			} else {
				registerForm.smBState.disabled = true;
				registerForm.smBProvince.disabled = false;
			}
		} else {
			registerForm.smBState.disabled = false;
			registerForm.smBProvince.disabled = false;
		}
		break;
	case (obj==registerForm.smSCountry):
		if (registerForm.smSCountry.value!=""){
			if (registerForm.smSCountry.value == "US"){
				registerForm.smSState.disabled = false;
				registerForm.smSProvince.disabled = true;
			} else {
				registerForm.smSState.disabled = true;
				registerForm.smSProvince.disabled = false;
			}
		} else {
			registerForm.smSState.disabled = false;
			registerForm.smSProvince.disabled = false;
		}
		break;
	}}

function selectState(obj){
	registerForm = document.getElementById('register');
	switch (true){
	case (obj==registerForm.smBState && registerForm.smBState.value!=""):
		registerForm.smBCountry=registerForm.smBCountry.value = "US";
		registerForm.smBProvince = registerForm.smBProvince.disabled = true;
		break;
	case (obj==registerForm.smSState && registerForm.smSState.value!=""):
		registerForm.smSCountry=registerForm.smSCountry.value = "US";
		registerForm.smSProvince = registerForm.smSProvince.disabled = true;
		break;
	default:
		exit;
	}}

function validateRegistration(formID){
	registerForm = document.getElementById(formID);
	var berror="";
	var serror="";
	var error="";

	//billing

	//confirm is email
	var chkemail=new Array('user', 'confirmuser');
	for (i=0; i<(chkemail.length); i++) { val=registerForm[chkemail[i]];
		if (val.value.indexOf('@')<1){berror+=val.title+' must be an email address.\n';}}

	var reqbilling=new Array('pass', 'confirmpass', 'smBFirstName', 'smBLastName', 'smBAddress1', 'smBCountry');
	for (i=0; i<(reqbilling.length); i++) { val=registerForm[reqbilling[i]];
		if (val.value==""){berror+=val.title+' is required.\n';}}
	
	var usbilling=new Array('smBCity', 'smBState');
	if (registerForm.smBCountry.value=='US')
		for (i=0; i<(usbilling.length); i++) { val=registerForm[usbilling[i]];
			if (val.value==""){berror+=val.title+' is required.\n';}}
	
	var canjpnbilling=new Array('smBPostalCode');
	if (registerForm.smBCountry.value=='US' || registerForm.smBCountry.value=='CA' || registerForm.smBCountry.value=='JP')
		for (i=0; i<(canjpnbilling.length); i++) { val=registerForm[canjpnbilling[i]];
			if (val.value==""){berror+=val.title+' is required.\n';}}
	
	//confirm emails
	var email=new Array('user', 'confirmuser');
	if (registerForm[email[0]].value!=registerForm[email[1]].value)
		berror+=registerForm[email[0]].title+' must match '+registerForm[email[1]].title+'\n';

	//confirm passwords
	var pass=new Array('pass', 'confirmpass');
	if (registerForm[pass[0]].value!=registerForm[pass[1]].value)
		berror+=registerForm[pass[0]].title+' must match '+registerForm[pass[1]].title+'\n';

	if (berror!=''){error+='BILLING INFO ERRORS:\n'+berror+'\n';}

	//shipping
	var reqshipping=new Array('smSFullName', 'smSAddress1', 'smSCountry');
	for (i=0; i<(reqshipping.length); i++) { val=registerForm[reqshipping[i]];
		if (val.value==""){serror+=val.title+' is required.\n';}}
	
	var usshipping=new Array('smSCity', 'smSState');
	if (registerForm.smSCountry.value=='US')
		for (i=0; i<(usshipping.length); i++) { val=registerForm[usshipping[i]];
			if (val.value==""){serror+=val.title+' is required.\n';}}
	
	var canjpnshipping=new Array('smSPostalCode');
	if (registerForm.smSCountry.value=='US' || registerForm.smSCountry.value=='CA' || registerForm.smSCountry.value=='JP')
		for (i=0; i<(canjpnshipping.length); i++) { val=registerForm[canjpnshipping[i]];
			if (val.value==""){serror+=val.title+' is required.\n';}}

	if (serror!=''){error+='SHIPPING INFO ERRORS:\n'+serror;}

	if (error!=''){alert(error);} else {
		registerForm.submit();}}

function validateRegistrationUpdate(formID){
	registerForm = document.getElementById(formID);
	var berror="";
	var serror="";
	var error="";

	//billing

	//confirm is email
	var chkemail=new Array('user');
	for (i=0; i<(chkemail.length); i++) { val=registerForm[chkemail[i]];
		if (val.value.indexOf('@')<1){berror+=val.title+' must be an email address.\n';}}

	var reqbilling=new Array('smBFirstName', 'smBLastName', 'smBAddress1', 'smBCountry');
	for (i=0; i<(reqbilling.length); i++) { val=registerForm[reqbilling[i]];
		if (val.value==""){berror+=val.title+' is required.\n';}}
	
	var usbilling=new Array('smBCity', 'smBState');
	if (registerForm.smBCountry.value=='US')
		for (i=0; i<(usbilling.length); i++) { val=registerForm[usbilling[i]];
			if (val.value==""){berror+=val.title+' is required.\n';}}
	
	var canjpnbilling=new Array('smBPostalCode');
	if (registerForm.smBCountry.value=='US' || registerForm.smBCountry.value=='CA' || registerForm.smBCountry.value=='JP')
		for (i=0; i<(canjpnbilling.length); i++) { val=registerForm[canjpnbilling[i]];
			if (val.value==""){berror+=val.title+' is required.\n';}}

	if (berror!=''){error+='BILLING INFO ERRORS:\n'+berror+'\n';}

	//shipping
	var reqshipping=new Array('smSFullName', 'smSAddress1', 'smSCountry');
	for (i=0; i<(reqshipping.length); i++) { val=registerForm[reqshipping[i]];
		if (val.value==""){serror+=val.title+' is required.\n';}}
	
	var usshipping=new Array('smSCity', 'smSState');
	if (registerForm.smSCountry.value=='US')
		for (i=0; i<(usshipping.length); i++) { val=registerForm[usshipping[i]];
			if (val.value==""){serror+=val.title+' is required.\n';}}
	
	var canjpnshipping=new Array('smSPostalCode');
	if (registerForm.smSCountry.value=='US' || registerForm.smSCountry.value=='CA' || registerForm.smSCountry.value=='JP')
		for (i=0; i<(canjpnshipping.length); i++) { val=registerForm[canjpnshipping[i]];
			if (val.value==""){serror+=val.title+' is required.\n';}}

	if (serror!=''){error+='SHIPPING INFO ERRORS:\n'+serror;}

	if (error!=''){alert(error);} else {
		registerForm.submit();}}

function validateResetPassword(chg){
	registerForm = document.getElementById('changepassword');
	var berror="";
	var serror="";
	var error="";

	//pasword reset
	//confirm is email
	var chkemail=new Array('user');
	for (i=0; i<(chkemail.length); i++) { val=registerForm[chkemail[i]];
		if (val!=null && val.value.indexOf('@')<1){berror+=val.title+' must be an email address.\n';}}
	
	//var pass=new Array('newpass', 'confirmnewpass');
	//for (i=0; i<(pass.length); i++) { val=registerForm[pass[i]];
		//if (val.value==""){berror+=val.title+' is required.\n';}}

	var newpass=new Array('newpass', 'confirmnewpass');
	if (registerForm[newpass[0]] && registerForm[newpass[1]] && registerForm[newpass[0]].value!=registerForm[newpass[1]].value)
		berror+=registerForm[newpass[0]].title+' must match '+registerForm[newpass[1]].title+'\n';

	var req=new Array('pass', 'challenge1Ques', 'challenge1Ans', 'challenge2Ques', 'challenge2Ans', 'challenge3Ques', 'challenge3Ans');
	for (i=0; i<(req.length); i++) { val=registerForm[req[i]];
		if (val!=null && val.value==""){berror+=val.title+' is required.\n';}}

	if (berror!=''){error+='ERRORS:\n'+berror+'\n';}

	if (error!=''){alert(error);} else {
		registerForm.submit();}}

function MM_goToURL() { //v3.0
  var i, args=MM_goToURL.arguments; document.MM_returnValue = false;
  for (i=0; i<(args.length-1); i+=2) eval(args[i]+".location='"+args[i+1]+"'");
}
function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function displayBlankHidden(name, title, selObj){ //v3.0
	var dest = document.getElementById(name+'Div');
	var hiddenObj = '<input type="hidden" name="'+name+'Hidden" id="'+name+'Hidden" title="'+title+'" />';
	dest.innerHTML = (selObj.options[selObj.selectedIndex].value!="") ? "" : hiddenObj;
}

function displayBlankHiddenRadio(name){ //v3.0
	var dest = document.getElementById(name+'Div');
	dest.innerHTML = "";
}

function box_valForm() { //v4.0
  if (document.getElementById){
    var i,p,q,nm,test,num,title,min,max,errors='',args=box_valForm.arguments;
    for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=document.getElementById(args[i]);
      if (val) { nm=val.name; title=(val.title!='')?val.title:nm; if ((val=val.value)!="") {
        if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
          if (p<1 || p==(val.length-1)) errors+='- '+title+' must contain an e-mail address.\n';
        } else if (test!='R') { num = parseFloat(val);
          if (isNaN(val)) errors+='- '+title+' must contain a number.\n';
          if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
            min=test.substring(8,p); max=test.substring(p+1);
            if (num<min || max<num) errors+='- '+title+' must contain a number between '+min+' and '+max+'.\n';
      } } } else if (test.charAt(0) == 'R') errors += '- '+title+' is required.\n'; }
    } if (errors) alert('The following error(s) occurred:\n'+errors);
    document.MM_returnValue = (errors == '');
} }

function boxValidateForm() { //v4.0
  if (document.getElementById){
    var i,p,q,nm,test,num,title,min,max,errors='',args=boxValidateForm.arguments;
    for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val1=document.getElementById(args[i]);
      if (val1) { nm=val1.name; title=(val1.title!='')?val1.title:nm; if ((val=val1.value)!="") {
        if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
          if (p<1 || p==(val.length-1)) errors+='- '+title+' must contain an e-mail address.\n';
        } else if (test!='R' && test.indexOf('match=') == -1) { num = parseFloat(val);
          if (isNaN(val)) errors+='- '+title+' must contain a number.\n';
          if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
            min=test.substring(8,p); max=test.substring(p+1);
            if (num<min || max<num) errors+='- '+title+' must contain a number between '+min+' and '+max+'.\n';
      } } } else if (test.charAt(0) == 'R') errors += '- '+title+' is required.\n'; }
	  if (val1 && test.indexOf('match=') != -1){ p=test.indexOf('='); mid=test.substring(p+1);
		val2=document.getElementById(mid); title2=(val2.title!='')?val2.title:val2.name;
		if (val != val2.value) errors+='- '+title+' must be equal to '+title2+'.\n'; }
    } if (errors) alert('The following error(s) occurred:\n'+errors);
    document.MM_returnValue = (errors == '');
} }

function MM_openBrWindow(theURL,winName,features) { //v2.0
  //window.open('', winName).close();
  window.open(theURL,winName,features);
}

function toggle_obj(obj){
	if(obj.style.display!="none"){
		alert(obj.nodeName);
		obj.style.display="none";
		obj.style.visibility="hidden";
	}else{
		obj.style.display="block";
		obj.style.visibility="visible";
	}
}

function hide_obj(obj){
	obj.style.display="none";
	obj.style.visibility="hidden";
}

function show_obj(obj){
	obj.style.display="block";
	obj.style.visibility="visible";
}
