var tx='';
var ur='';

function js_add_to_cart(recNum) {
	var url="projtocart="+recNum;
	var ary=js_cart_update_disp(url,false);
	document.getElementById('addtocart'+recNum).innerHTML=' added to cart';
}

function js_billing_copy(lcn) {
	nm=new Array(8);
	nm[0]='name_first'+lcn;
	nm[1]='name_last'+lcn;
	nm[2]='address_1'+lcn;
	nm[3]='address_2'+lcn;
	nm[4]='city'+lcn;
	nm[5]='zip'+lcn;
	nm[6]='phone'+lcn;
	nm[7]='phone_eve'+lcn;
	var vl='';
	for (i=0;i<nm.length;i++) {
		vl=document.getElementById(nm[i]).value;
		document.getElementById('shp_'+nm[i]).value=vl;
	}
	vl=document.getElementById('state'+lcn).selectedIndex;
	document.getElementById('shp_state'+lcn).selectedIndex=vl;
}

function js_cart_update_disp(url,projectAdd) {
	var txt=js_get_xml_data(url);
	var ary=txt.split(':'); 
	if (! projectAdd) {
		document.getElementById('cart_status_quan').innerHTML=ary[0];
		document.getElementById('cart_status_price').innerHTML=ary[1];
	}
	return ary;
}

function js_email(eMail) {
	var ad=document.getElementById(eMail).value;
	if (ad=='') {
		document.getElementById('span_'+eMail).innerHTML='<span class="zoneRed"> required</span>';			
		alert('Missing Required Information:\nYour Email');
		return;
	} else {
		document.getElementById('span_'+eMail).innerHTML='';			
	}
	var url='email_pass='+urlencode(ad);
	var txt=js_get_xml_data(url);
	switch (txt) {
	case '0':
		alert('Your password has been sent to you.');
		break;
	case '1':
		document.getElementById('span_'+eMail).innerHTML='<span class="zoneRed"> invalid</span>';			
		alert('This email address has not been entered.');
		break;
	}
}

function js_email_change(userId,email1,email2) {
	tx='';
	ur=userId+":~::~";
	var vl1=js_fld_check(email1,'new email');
	var vl2=js_fld_check(email2,'confirm email');
	if (tx != '') {
		alert('Missing Required Information:\n'+tx);
		return;
	}
	if (vl1!=vl2) {
		document.getElementById('span_'+email2).innerHTML='<span class="zoneRed"> mis-match</span>';			
		alert('Confirm email does not match new email.');
		return;
	}
	if (! js_email_verify(vl1)) {
		document.getElementById('span_'+email1).innerHTML='<span class="zoneRed"> invalid address</span>';			
		alert('This is an invalid email address.');
		return;
	}
	var url='change_email='+urlencode(ur);
	txt=js_get_xml_data(url);
	switch (txt) {
	case '0':
		alert('Your email address has been updated.');
		document.location='customer-service?pnl=5_6';
		break;
	case '1':
		alert('An account with this email address\n has already been created.');
		break;
	}
}

function js_fld_check(inpt,title) {
	var vl=document.getElementById(inpt).value;
	if (vl=='') {
		tx=tx+title+'\n';
		document.getElementById('span_'+inpt).innerHTML='<span class="zoneRed"> required</span>';	
	} else {
		document.getElementById('span_'+inpt).innerHTML='';
	}
	ur=ur+vl+":~::~";
	return vl;
}

function js_get_xml_data(url) {
	if (window.XMLHttpRequest) {
		xmlhttp=new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		if (new ActiveXObject("Microsoft.XMLHTTP")) {
			xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
		} else {
			xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
		}
	}
	xmlhttp.open("GET",'includes/caller_program.php?'+url,false);
	xmlhttp.send(null);
	var txt=xmlhttp.responseText;
	return txt;
}

function js_login(lcn,rememberMe) {
	nm=new Array(2);
	vl=new Array(2);
	pn=new Array(2);
	nm[0]='email_address'+lcn;
	pn[0]='Your Email';
	nm[1]='password'+lcn;
	pn[1]='Your Password';
	var i=0;
	var txt='';
	var url='';
	for (i=0;i<nm.length;i++) {
		vl[i]=document.getElementById(nm[i]).value;
		if (vl[i]=='') {
			document.getElementById('span_'+nm[i]).innerHTML='<span class="zoneRed"> required</span>';			
			txt=txt+pn[i]+'\n';
		} else {
			document.getElementById('span_'+nm[i]).innerHTML='';			
		}
		url=url+vl[i]+":~::~";
	}
	if (txt != '') {
		alert('Missing Required Information:\n'+txt);
		return;
	}
	url='login='+urlencode(url);
	txt=js_get_xml_data(url);
	switch (txt) {
	case '0':
		if (rememberMe) {
			var date = new Date();
			date.setTime(date.getTime()+(30*24*60*60*1000));
			var expires = "; expires="+date.toGMTString(); 
			document.cookie = "zonelogon="+vl[0]+"~|~|~"+vl[1]+expires+"; path=/"; 
		}
		if (lcn=='_4') {
			document.location='customer-service?pnl=5_3';
		} else {
			document.log_in.submit();
		}
		break;
	case '1':
		document.getElementById('span_'+nm[0]).innerHTML='<span class="zoneRed"> invalid</span>';
		alert('An account with this email address\n has not been created.');
		break;
	case '2':
		document.getElementById('span_'+nm[1]).innerHTML='<span class="zoneRed"> invalid</span>';
		alert('This password is not correct');
		break;
	case '5':
		//called by bad to the bone, return there
		window.location='bad-to-the-bone?pnl=1_3';
		break;
	}
}
	
function js_pass_change(userId,curPass,newPass,newPass2) {
	tx='';
	ur=userId+":~::~";
	var vl1=js_fld_check(curPass,'current password');
	var vl2=js_fld_check(newPass,'new password');
	var vl3=js_fld_check(newPass2,'confirm password');
	if (tx != '') {
		alert('Missing Required Information:\n'+tx);
		return;
	}
	if (vl2!=vl3) {
		document.getElementById('span_'+newPass2).innerHTML='<span class="zoneRed"> mis-match</span>';			
		alert('Confirm password does not match new password.');
		return;
	}
	if (! js_password_verify(vl2)) {
		document.getElementById('span_'+newPass).innerHTML='<span class="zoneRed"> invalid password</span>';			
		alert('Password must be at least 3 characters.');
		return;
	}
	var url='change_pass='+urlencode(ur);
	txt=js_get_xml_data(url);
	switch (txt) {
	case '0':
		alert('Your password has been updated.');
		document.location='customer-service?pnl=5_6';
		break;
	case '1':
		alert('This is not your current password.');
		break;
	}
}

function js_prj_cancel() {
	document.getElementById('project_new_area').style.display="none";
	document.getElementById('project_display_area').style.display="block";
}

function js_prj_change(prjId) {
	var url='garage_change='+prjId;
	txt=js_get_xml_data(url);		
	window.location='customer-service?pnl=5_3';
}

function js_prj_create() {
	document.getElementById('title').value='';
	document.getElementById('note_1').value='';
	document.getElementById('note_2').value='';
	document.getElementById('note_3').value='';
	document.getElementById('prjYear').selectedIndex=0;
	document.getElementById('prjMonth').selectedIndex=0;
	document.getElementById('prjDay').selectedIndex=0;
	document.getElementById('project_display_area').style.display="none";
	document.getElementById('par_create_save').style.display="none";
	document.getElementById('btn_create_save').style.display="none";
	document.getElementById('par_create_create').style.display="block";
	document.getElementById('btn_create_create').style.display="block";
	document.getElementById('project_new_area').style.display="block";
}

function js_prj_create_jmp() {
	P7_TPtrig('p7tpb5_3');
	js_prj_create();
}
	
function js_prj_delete(prjId) {
	if (confirm('Are you sure you want\nto delete this project?')) {
		var url='garage_del='+prjId;
		txt=js_get_xml_data(url);		
		window.location='customer-service?pnl=5_3';
	}
}

function js_prj_edit() {
	document.getElementById('title').value=document.getElementById('cur_title').innerHTML;
	document.getElementById('note_1').value=document.getElementById('cur_note_1').innerHTML;
	document.getElementById('note_2').value=document.getElementById('cur_note_2').innerHTML;
	document.getElementById('note_3').value=document.getElementById('cur_note_3').innerHTML;
	document.getElementById('prjYear').selectedIndex=document.getElementById('cur_prjYear').innerHTML;
	document.getElementById('prjMonth').selectedIndex=document.getElementById('cur_prjMonth').innerHTML;
	document.getElementById('prjDay').selectedIndex=document.getElementById('cur_prjDay').innerHTML;
	document.getElementById('project_display_area').style.display="none";
	document.getElementById('par_create_create').style.display="none";
	document.getElementById('btn_create_create').style.display="none";
	document.getElementById('par_create_save').style.display="block";
	document.getElementById('btn_create_save').style.display="block";
	document.getElementById('project_new_area').style.display="block";
}

function js_prj_save(prjId,userId) {
	var txt='';
	var url=prjId+':~::~'+userId+':~::~';
	var vl=document.getElementById('title').value;
	if (vl=='') {
		document.getElementById('span_title').innerHTML=' required';
		txt=txt+'\nProject Name';
	} else {
		document.getElementById('span_title').innerHTML=' ';
		url=url+vl+':~::~';
	}
	vl=document.getElementById('prjMonth').selectedIndex;
	if (vl==0) {txt=txt+'\nCompletion Month';} else {url=url+vl+':~::~';}
	vl=document.getElementById('prjDay').selectedIndex;
	if (vl==0) {txt=txt+'\nCompletion Day';} else {url=url+vl+':~::~';}
	vl=document.getElementById('prjYear').selectedIndex;
	if (vl==0) {txt=txt+'\nCompletion Year';} else {
		vl=document.getElementById('prjYear').options[vl].value;	
		url=url+vl+':~::~'; 
	}
	if (txt!='') {
		alert('Missing Required Information:'+txt);
		return;
	}
	vl=document.getElementById('note_1').value;
	url=url+vl+':~::~';
	vl=document.getElementById('note_2').value;
	url=url+vl+':~::~';
	vl=document.getElementById('note_3').value;
	url=url+vl+':~::~';
	url='garage_save='+urlencode(url);
	txt=js_get_xml_data(url);
	if (txt=='0') {
		alert('A project with this title has already been created.');
	} else {
		window.location='customer-service?pnl=5_3';
	}
}

function js_cart_remove(recNum) {
	var url="del_rec="+recNum+'&prj=1';
	var txt=js_get_xml_data(url);
	window.location='customer-service?pnl=5_3';
}

function js_quan_ed(recNum) {
	var qn=document.getElementById('cart_qn'+recNum).value;
	if (qn<0) {
		qn=0;
		document.getElementById('cart_qn'+recNum).value=qn;
	}
	var url="qn_upd="+recNum+"&qn="+qn+'&prj=1';
	var ary=js_cart_update_disp(url,true);
	window.location='customer-service?pnl=5_3';
}

function js_signup(lcn) {
	nm=new Array(6);
	vl=new Array(6);
	pn=new Array(6);
	nm[0]='name_first'+lcn;
	pn[0]='First Name';
	nm[1]='name_last'+lcn;
	pn[1]='Last Name';
	nm[2]='email1'+lcn;
	pn[2]='Your Email';
	nm[3]='email2'+lcn;
	pn[3]='Confirm Email';
	nm[4]='password1'+lcn;
	pn[4]='Create Password';
	nm[5]='password2'+lcn;
	pn[5]='Confirm Password';
	var i=0;
	var txt='';
	var url='';
	for (i=0;i<nm.length;i++) {
		vl[i]=document.getElementById(nm[i]).value;
		if (vl[i]=='') {
			document.getElementById('span_'+nm[i]).innerHTML='<span class="zoneRed"> required</span>';			
			txt=txt+pn[i]+'\n';
		} else {
			document.getElementById('span_'+nm[i]).innerHTML='';			
		}
		url=url+vl[i]+":~::~";
	}
	if (txt != '') {
		alert('Missing Required Information:\n'+txt);
		return;
	}
	if (vl[2]!=vl[3]) {
		document.getElementById('span_'+nm[3]).innerHTML='<span class="zoneRed"> mis-match</span>';			
		alert(pn[3]+' does not match '+pn[2]);
		return;
	}
	if (vl[4]!=vl[5]) {
		document.getElementById('span_'+nm[5]).innerHTML='<span class="zoneRed"> mis-match</span>';			
		alert(pn[5]+' does not match '+pn[4]);
		return;
	}
	if (! js_email_verify(vl[2])) {
		document.getElementById('span_'+nm[2]).innerHTML='<span class="zoneRed"> invalid</span>';			
		alert('This is not a valid mail address.');
		return;
	}
	if (! js_password_verify(vl[4])) {
		document.getElementById('span_'+nm[4]).innerHTML='<span class="zoneRed"> too short</span>';			
		alert('Password must be at least 3 characters.');
		return;
	}
	if (document.getElementById('recieve_emails_flag').checked) {
		url=url+"x:~::~";
	} else {
		url=url+" :~::~";		
	}
	url='signup='+urlencode(url);
	txt=js_get_xml_data(url);
	switch (txt) {
	case '0':
		document.log_in.submit();
		break;
	case '1':
		document.getElementById('span_'+nm[2]).innerHTML='<span class="zoneRed"> exists</span>';
		document.getElementById('span_'+nm[3]).innerHTML='<span class="zoneRed"> exists</span>';
		alert('An account with this email address\n has already been created.');
		break;
	case '2':
		document.getElementById('span_'+nm[4]).innerHTML='<span class="zoneRed"> invalid</span>';
		document.getElementById('span_'+nm[5]).innerHTML='<span class="zoneRed"> invalid</span>';
		alert('The password must be 6-10 characters long with at least one letter and one number');
		break;
	case '3':
		document.getElementById('span_'+nm[2]).innerHTML='<span class="zoneRed"> invalid</span>';
		document.getElementById('span_'+nm[3]).innerHTML='<span class="zoneRed"> invalid</span>';
		alert('This is an invalid email address.');
		break;
	case '5':
		//called by bad to the bone, return there
		window.location='bad-to-the-bone?pnl=1_3';
		break;
	}
}
	
function js_update_address(lcn) {
	if (js_update_address_verify(lcn)) {
		return;
	}
	nm=new Array(9);	
	nm[0]='name_first'+lcn;
	nm[1]='name_last'+lcn;
	nm[2]='address_1'+lcn;
	nm[3]='address_2'+lcn;
	nm[4]='city'+lcn;
	nm[5]='state'+lcn;
	nm[6]='zip'+lcn;
	nm[7]='phone'+lcn;
	nm[8]='phone_eve'+lcn;
	var url='';
	var vl='';
	var i=0;
	var p=0;
	for (p=0;p<2;p++) {
	for (i=0;i<9;i++) {
		if (i==5) {
			vl=document.getElementById(nm[i]).options[document.getElementById(nm[i]).selectedIndex].value;	
		} else {
			vl=document.getElementById(nm[i]).value;
		}
		url=url+vl+":~::~";
		nm[i]='shp_'+nm[i];		
	} }
	if (document.getElementById('recieve_emails_flag').checked) {
		url=url+"x:~::~";
	} else {
		url=url+" :~::~";		
	}
	url='signupdate='+urlencode(url);
	txt=js_get_xml_data(url);
	switch (txt) {
	case '0':
		alert('Your account has been updated');
		window.location='customer-service?pnl=5_5';
		break;
	}
}

function js_update_address_verify(lcn) {
	nm=new Array(14);
	pn=new Array(14);
	nm[0]='name_first'+lcn;
	pn[0]='billing first name';
	nm[1]='name_last'+lcn;
	pn[1]='billing last name';
	nm[2]='address_1'+lcn;
	pn[2]='billing address';
	nm[3]='city'+lcn;
	pn[3]='billing city';
	nm[4]='state'+lcn;
	pn[4]='billing state';
	nm[5]='zip'+lcn;
	pn[5]='billing zip code';
	nm[6]='phone'+lcn;
	pn[6]='billing day phone';
	nm[7]='shp_name_first'+lcn;
	pn[7]='shipping first name';
	nm[8]='shp_name_last'+lcn;
	pn[8]='shipping last name';
	nm[9]='shp_address_1'+lcn;
	pn[9]='shipping address';
	nm[10]='shp_city'+lcn;
	pn[10]='shipping city';
	nm[11]='shp_state'+lcn;
	pn[11]='shipping state';
	nm[12]='shp_zip'+lcn;
	pn[12]='shipping zip code';
	nm[13]='shp_phone'+lcn;
	pn[13]='shipping day phone';
	var i=0;
	var txt='';
	var vl='';
	for (i=0;i<nm.length;i++) {
		vl=document.getElementById(nm[i]).value;
		if (vl=='') {
			document.getElementById('span_'+nm[i]).innerHTML='<span class="zoneRed"> required</span>';			
			txt=txt+pn[i]+'\n';
		} else {
			document.getElementById('span_'+nm[i]).innerHTML='';			
		}
	}
	if (txt != '') {
		alert('Missing Required Information:\n'+txt);
		return true;
	}
	return false;
}

function js_verify_order(ordId,zipId) {
	var oi=document.getElementById(ordId).value;
	var zip=document.getElementById(zipId).value;
	url='ord_verify='+urlencode(oi+":::"+zip);
	txt=js_get_xml_data(url);
	switch (txt) {
	case '0':
		document.getElementById('oi').value=oi;			
		document.orderHist.submit();
		break;
	case '1':
		alert('This is not a valid order number.');
		break;
	case '2':
		alert('This is not a valid shipping zip code for this order number.');
		break;
	}
}

function js_view_order(ordId) {
	document.getElementById('oi').value=ordId;			
	document.orderHist.submit();
}

function urlencode(str) {
    var histogram = {}, tmp_arr = [];
    var ret = str.toString();
    var replacer = function(search, replace, str) {
        var tmp_arr = [];
        tmp_arr = str.split(search);
        return tmp_arr.join(replace);
    };
    histogram["'"]   = '%27';
    histogram['(']   = '%28';
    histogram[')']   = '%29';
    histogram['*']   = '%2A';
    histogram['~']   = '%7E';
    histogram['!']   = '%21';
    histogram['%20'] = '+';
    ret = encodeURIComponent(ret);
    for (search in histogram) {
        replace = histogram[search];
        ret = replacer(search, replace, ret) // Custom replace. No regexing
    }
    return ret.replace(/(\%([a-z0-9]{2}))/g, function(full, m1, m2) {
        return "%"+m2.toUpperCase();
    });
    return ret;
}

function js_password_verify(psswrd) {
	var psswrd=js_trim(psswrd);
	if (psswrd.length<3) return false;
	return true;
}
function js_email_verify(addr) {
	var addr=js_trim(addr) 
	if (addr == '') return false;
	var tmp=addr.split("@");
	if (tmp.length!=2) return false;
	if (tmp[1].split('.').length<2) return false;
	if (tmp[0].length<1) return false;
	return true;
}

function js_trim(str) {
	var	str = str.replace(/^\s\s*/, ''),
		ws = /\s/,
		i = str.length;
	while (ws.test(str.charAt(--i)));
	return str.slice(0, i + 1);
}

