var replaceContent = function(req) {
	getElement("content").innerHTML = req.responseText;
	
	if(getElement("page") && getElement("page").innerHTML == 'antivirus') {
		onLoadAntivirusPage();
	}
	else{
		onLoadProducts();
	}
	
	if(getElement("submitOrder")) {
		onCheckoutReload();
	}
	if(getElement("submitUpdate")) {
		onLoadAccountPage();
	}
	if(getElement("page") && getElement("page").innerHTML == 'orders') {
		onLoadOrdersPage();
	}
	if(getElement("page") && getElement("page").innerHTML == 'updateOrder') {
		onLoadUpdateOrderPage();
	}
	if(getElement("page") && getElement("page").innerHTML == 'systems') {
		onLoadSystemsPage();
	}
	if(getElement("page") && getElement("page").innerHTML == 'adminPage') {
		onReloadAdmin();
	}
	if(getElement("page") && getElement("page").innerHTML == 'contactPage') {
		onLoadContactPage();
	}
}

var showSuggestion = function(req) {
	getElement("suggest").innerHTML = req.responseText;	
	
	elems = getElementsByTagAndClassName("div", "searchResult");
	for(i in elems) {
		el = elems[i];
		connect(el,"onmouseover",lightDown3);
		connect(el,"onmouseout",lightUp3);
		connect(el,"onmousedown",submitUpdateCustomer);
	}
}
	
var submitUpdateCustomer = function(ev) {
	sFirstName = getNodeAttribute(ev._src,"m:firstname");
	$("fname").value=sFirstName;
	
	sLastName = getNodeAttribute(ev._src,"m:lastname");
	$("lname").value=sLastName;
	
	sOrganization = getNodeAttribute(ev._src,"m:organization");
	$("organization").value=sOrganization;
	
	sAddress = getNodeAttribute(ev._src,"m:address");
	$("address").value=sAddress;
	
	sCity = getNodeAttribute(ev._src,"m:city");
	$("city").value=sCity;
	
	sZipcode = getNodeAttribute(ev._src,"m:zipcode");
	$("zipcode").value=sZipcode;
	
	sPhone = getNodeAttribute(ev._src,"m:phone");
	$("phone").value=sPhone;
	
	sEmail = getNodeAttribute(ev._src,"m:email");
	$("email").value=sEmail;
	
	sUsername = getNodeAttribute(ev._src,"m:username");
	$("username").value=sUsername;
	
	hideElement("suggest");
}

var onLoadAntivirusPage = function() {
	roundClass("div","cathead", {corners: "tl tr", compact: "true"});
	
	elems = getElementsByTagAndClassName("a", "avcattypelink");
	for(i in elems) {
		el = elems[i];
		connect(el,"onmouseover",lightTextUp);
		connect(el,"onmouseout",lightTextDown);
		connect(el,"onmousedown",loadAVPriceType);
	}
		
	elems = getElementsByTagAndClassName("span","buy");
	for(i in elems){
		el = elems[i];	
		connect(el,"onmousedown",buyAVProducts);
	}
}

var refreshCart = function(req) {
	getElement("cartcontent").innerHTML = req.responseText;
}

var loadPage = function(ev) {
	getElement("content").innerHTML = "Loading...";
	page=getNodeAttribute(ev._src,"m:link");
	req = doSimpleXMLHttpRequest(page);
	req.addCallback(replaceContent);
}

var loadLink = function(ev) {
	getElement("content").innerHTML = "Loading...";
	page=getNodeAttribute(ev._src,"m:link");
	window.location=page;
}

var loadIceCatPage = function(ev) {
	//getElement("content").innerHTML = "Loading...";
	sku=getNodeAttribute(ev._src,"m:sku");
	manufacturer=getNodeAttribute(ev._src,"m:manufacturer");
	//req = doSimpleXMLHttpRequest("http://prf.icecat.biz/index.cgi",{prod_id:sku, vendor: manufacturer, shopname: 'mrelymultimedia'});
	//req.addCallback(replaceContent);
	icecatwindow = window.open("http://prf.icecat.biz/index.cgi?prod_id="+sku+";vendor="+manufacturer+";shopname=mrelymultimedia","icecatwindow","status=0,location=0,scrollbars=1,resizable=1,width=640,height=600");
	icecatwindow.focus();

}

var loadCategory = function(ev) {
	getElement("content").innerHTML = "Loading...";
	cat=getNodeAttribute(ev._src,"m:page");
	req = doSimpleXMLHttpRequest("products.php",{page: cat});
	req.addCallback(replaceContent);
}

var loadProducts = function(ev) {
	getElement("content").innerHTML = "Loading...";
	id=ev._src.id.substring(6);
	req = doSimpleXMLHttpRequest("products.php",{cat: id});
	req.addCallback(replaceContent);
}

var loadAVProducts = function(ev) {
	getElement("content").innerHTML = "Loading...";
	id=ev._src.id.substring(8);
	req = doSimpleXMLHttpRequest("avproducts.php",{cat: id});
	req.addCallback(replaceContent);
}

var loadAVPriceType = function(ev) {
	getElement("content").innerHTML = "Loading...";
	id=ev._src.id.substring(8);
	key=getNodeAttribute(ev._src,"m:key");
	req = doSimpleXMLHttpRequest("avproducts.php",{cat: 'bd',priceType: key});
	req.addCallback(replaceContent);
}

var loadSystems = function(ev) {
	getElement("content").innerHTML = "Loading...";
	cat=getNodeAttribute(ev._src,"m:page");
	req = doSimpleXMLHttpRequest("products.php",{page: cat});
	req.addCallback(replaceContent);
}

var lightUp = function(ev) {
	Morph(ev._src,{"style": {"background-color": "#CCDDEE", "color": "black"}, duration: 0.2});//99CCFF
}
var lightDown = function(ev) {
	Morph(ev._src,{"style": {"background-color": "#006699", "color": "white"}, duration: 0.2});
}

var lightUpMaincat = function(ev) {
	Morph(ev._src,{"style": {"background-color": "#EFEEED", "color": "black"}, duration: 0.2});
}
var lightDownMaincat = function(ev) {
	Morph(ev._src,{"style": {"background-color": "#FFFFFF", "color": "black"}, duration: 0.2});
}

var lightUp2 = function(ev) {
	Morph(ev._src,{"style": {"background-color": "#C2C2C2"}, duration: 0.2});//"#D8C4A4"
}
var lightDown2 = function(ev) {
	Morph(ev._src,{"style": {"background-color": "#D2D2D2"}, duration: 0.2});//#ECD8B8"
}
var lightUp3 = function(ev) {
	Morph(ev._src,{"style": {"background-color": "#FFFFFF"}, duration: 0.2});//"#D8C4A4"
}
var lightDown3 = function(ev) {
	Morph(ev._src,{"style": {"background-color": "#DFDEDD"}, duration: 0.2});//#ECD8B8"
}

var lightTextUp = function(ev) {
	Morph(ev._src,{"style": {"color": "#006699"}, duration: 0.2});//99CCFF
}
var lightTextDown = function(ev) {
	Morph(ev._src,{"style": {"color": "black"}, duration: 0.2});
}

var toggleSub = function(ev) {
	el = "submenu"+ev._src.id.substring(3);	
	toggle(el,"blind",{duration: 0.3});
	menuIcon = getElement("icon"+ev._src.id.substring(3));	
	if(menuIcon.innerHTML=="+")
		menuIcon.innerHTML="-";
	else
		menuIcon.innerHTML="+";
}

var onLoadProducts = function() {
	roundClass("div","cathead", {corners: "tl tr", compact: "true"});
	
	elems = getElementsByTagAndClassName("span","buy");
	for(i in elems){
		el = elems[i];	
		connect(el,"onmousedown",buyProducts);
	}
	elems = getElementsByTagAndClassName("span","prodinfolink");
	for(i in elems){
		el = elems[i];	
		connect(el,"onmousedown",loadIceCatPage);
	}
}

var viewCart = function() {
	req = doSimpleXMLHttpRequest("buy.php",{action: 'view'});
	req.addCallback(refreshCart);
}

var buyProducts = function(ev) {
	id=ev._src.id.substring(3);
	req = doSimpleXMLHttpRequest("buy.php",{product: id});
	req.addCallback(refreshCart);
}

var buyAVProducts = function(ev) {
	id=ev._src.id.substring(3);
	req = doSimpleXMLHttpRequest("buy.php",{avproduct: id});
	req.addCallback(refreshCart);
}

var emptyCart = function(ev) {
	req = doSimpleXMLHttpRequest("buy.php",{action: 'empty'});
	req.addCallback(refreshCart);
}

var checkOut = function(ev) {
	getElement("content").innerHTML = "Loading...";
	req = doSimpleXMLHttpRequest("buy.php",{action: 'checkout'});
	req.addCallback(replaceContent);
}

var emptyField = function(ev) {
	el = ev._src;
	if(!el.valueChanged){
		el.origValue = el.value;		
		el.value = "";
	}
}

var restoreField = function(ev) {
	el = ev._src;
	if(el.value != ""){
		el.valueChanged = true;
	}
	else {
		el.value = el.origValue;
	}
}

var loadUserPage = function(ev) {
	page = ev._src.id;
	getElement("content").innerHTML = "Loading...";
	req = doSimpleXMLHttpRequest("user.php",{action: page});
	req.addCallback(replaceContent);
}

var prepareUserMenu = function() {
	if(el = getElement("viewOrders")) {
		connect(el, "onmousedown", loadUserPage);
	}
	
	if(el = getElement("updateInfo")) {
		connect(el, "onmousedown", loadUserPage);
	}
	
	if(el = getElement("adminPage")) {
		connect(el, "onmousedown", loadUserPage);
	}
}

var onLoadAccountPage = function() {
	roundElement("submitUpdate", {compact: "true"});
	
	el = getElement("submitUpdate");
	connect(el,"onmouseover",lightTextUp);
	connect(el,"onmouseout",lightTextDown);
	connect(el,"onmousedown",userUpdateSubmit);	
	
	connect("fname","onkeypress",resetStyle);
	connect("lname","onkeypress",resetStyle);
	connect("organization","onkeypress",resetStyle);
	connect("phone","onkeypress",resetStyle);
	connect("city","onkeypress",resetStyle);
	connect("address","onkeypress",resetStyle);
	connect("zipcode","onkeypress",resetStyle);
	connect("email","onkeypress",resetStyle);
}

var onLoadSystemsPage = function() {
	roundClass("div", "configure", {compact: "true"});
	
	elems = getElementsByTagAndClassName("div","configure");
	for(i in elems){
		el = elems[i];
		connect(el,"onmouseover",lightTextUp);
		connect(el,"onmouseout",lightTextDown);
		connect(el,"onmousedown",configureSubmit);	
	}
}

var configureSubmit = function(ev) {	
	getElement("content").innerHTML = "Loading...";
	sysid=getNodeAttribute(ev._src, "m:systemid");
	req = doSimpleXMLHttpRequest("products.php",{action:'configure', systemId: sysid});
	req.addCallback(replaceContent);
}

var refreshUser = function(req) {
	getElement("usercontent").innerHTML = req.responseText;
	
	if(getElement("userName")){
		showElement("loginDiv");
		
		if(el = getElement("forgotPass")) {
			connect(el,"onmouseover",lightTextUp);
			connect(el,"onmouseout",lightTextDown);
			connect(el,"onmousedown",forgotPass);
		}
	}
	else{
		showElement("logoutDiv");
		
		prepareUserMenu();
	}
}

var userLogin = function(ev) {
	user = getElement("userName").value;
	pass = getElement("userPassword").value;
	req = doSimpleXMLHttpRequest("user.php",{action: 'login', userName: user, userPassword: pass});
	req.addCallback(refreshUser);
	hideElement("loginDiv");
}

var forgotPass = function(ev) {
	req = doSimpleXMLHttpRequest("user.php",{action: 'forgotPass'});
	req.addCallback(prepareForgottenPassForm);
}

var prepareForgottenPassForm = function(req) {
	getElement("content").innerHTML = req.responseText;

	roundClass("div","cathead", {corners: "tl tr", compact: "true"});
	roundElement("submitButton", {compact: "true"});
	
	connect("email","onkeypress",resetStyle);
	
	el = getElement("submitButton");	
	connect(el,"onmouseover",lightTextUp);
	connect(el,"onmouseout",lightTextDown);
	connect(el,"onmousedown",forgotPassSubmit);
}

var forgotPassSubmit = function(ev) {
	valid = true;
	sEmail = $('email');
	if(sEmail.value == '' || !sEmail.value.match(/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,6}$/i)) {
		valid = false;
		setStyle(sEmail, {'border' : '1px solid red'});
	}
	
	if(valid) {
		req = doSimpleXMLHttpRequest("user.php",{action: 'forgotPassSubmit',
		                              email: $('email').value});
		getElement("content").innerHTML = "Loading...";
		req.addCallback(prepareForgottenPassForm);
	}
}

var userRegister = function(ev) {
	getElement("content").innerHTML = "Loading...";
	req = doSimpleXMLHttpRequest("user.php",{action: 'register'});
	req.addCallback(prepareRegisterForm);
}

var userRegisterSubmit = function(ev) {
	valid = true;
	sUsername = $('username');
	if(sUsername.value == '' || !sUsername.value.match(/^\w{6,32}$/)) {
		valid = false;
		setStyle(sUsername, {'border' : '1px solid red'});
	}
	
	sPassword = $('password');
	if(sPassword.value == '' || !sPassword.value.match(/^\w{6,32}$/)) {
		valid = false;
		setStyle(sPassword, {'border' : '1px solid red'});
	}
	
	sPassword2 = $('confirmpassword');
	if(sPassword2.value == '' || sPassword.value != sPassword2.value
	    || !sPassword2.value.match(/^\w+$/)) {
		valid = false;
		setStyle(sPassword2, {'border' : '1px solid red'});
	}
	
	sFname = $('fname');
	if(sFname.value == '' || !sFname.value.match(/^[\w\s\.\-\,]+$/)) {
		valid = false;
		setStyle(sFname, {'border' : '1px solid red'});
	}
	
	sLname = $('lname');
	if(sLname.value == '' || !sLname.value.match(/^[\w\s\.\-\,]+$/)) {
		valid = false;
		setStyle(sLname, {'border' : '1px solid red'});
	}
	
	sOrganization = $('organization');
	/*if(sOrganization.value == '') {
		valid = false;
		setStyle(sOrganization, {'border' : '1px solid red'});
	}*/
	
	sPhone = $('phone');
	if(sPhone.value == ''/* || !sPhone.value.match(/^\d{10}$/)*/) {
		valid = false;
		setStyle(sPhone, {'border' : '1px solid red'});
	}
	
	sCity = $('city');
	if(sCity.value == '') {
		valid = false;
		setStyle(sCity, {'border' : '1px solid red'});
	}	
	
	sAddress = $('address');
	if(sAddress.value == '') {
		valid = false;
		setStyle(sAddress, {'border' : '1px solid red'});
	}
	
	sZipcode = $('zipcode');
	/*if(sZipcode.value == '' || !sZipcode.value.match(/^\d{4} [A-Za-z]{2}$/)) {
		valid = false;
		setStyle(sZipcode, {'border' : '1px solid red'});
	}*/
	
	sEmail = $('email');
	if(sEmail.value == '' || !sEmail.value.match(/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,6}$/i)) {
		valid = false;
		setStyle(sEmail, {'border' : '1px solid red'});
	}
	
	if(valid) {
		req = doSimpleXMLHttpRequest("user.php",{action: 'registerSubmit', username: $('username').value,
		                              password: $('password').value, password2: $('confirmpassword').value, 
		                              fname: $('fname').value, lname: $('lname').value,
		                              organization: $('organization').value, phone: $('phone').value, 
		                              address: $('address').value, 
		                              city: $('city').value, zipcode: $('zipcode').value, 
		                              email: $('email').value});
		getElement("content").innerHTML = "Loading...";
		req.addCallback(prepareRegisterForm);
	}
}

var prepareRegisterForm = function(req) {
	getElement("content").innerHTML = req.responseText;

	roundClass("div","cathead", {corners: "tl tr", compact: "true"});
	roundElement("submitButton", {compact: "true"});
	
	connect("username","onkeypress",resetStyle);
	connect("password","onkeypress",resetStyle);
	connect("confirmpassword","onkeypress",resetStyle);
	connect("fname","onkeypress",resetStyle);
	connect("lname","onkeypress",resetStyle);
	connect("organization","onkeypress",resetStyle);
	connect("phone","onkeypress",resetStyle);
	connect("city","onkeypress",resetStyle);
	connect("address","onkeypress",resetStyle);
	connect("zipcode","onkeypress",resetStyle);
	connect("email","onkeypress",resetStyle);
	
	el = getElement("submitButton");	
	connect(el,"onmouseover",lightTextUp);
	connect(el,"onmouseout",lightTextDown);
	connect(el,"onmousedown",userRegisterSubmit);
}

var userUpdateSubmit = function(ev) {
	valid = true;
	
	sPassword = $('password');
	if(sPassword.value != '' && !sPassword.value.match(/^\w{6,}$/)) {
		valid = false;
		setStyle(sPassword, {'border' : '1px solid red'});
	}
	
	sPassword2 = $('confirmpassword');
	if(sPassword.value != sPassword2.value) {
		valid = false;
		setStyle(sPassword2, {'border' : '1px solid red'});
	}
	
	sFname = $('fname');
	if(sFname.value == '' || !sFname.value.match(/^[\w\s\.\-\,]+$/)) {
		valid = false;
		setStyle(sFname, {'border' : '1px solid red'});
	}
	
	sLname = $('lname');
	if(sLname.value == '' || !sLname.value.match(/^[\w\s\.\-\,]+$/)) {
		valid = false;
		setStyle(sLname, {'border' : '1px solid red'});
	}
	
	sOrganization = $('organization');
	/*if(sOrganization.value == '') {
		valid = false;
		setStyle(sOrganization, {'border' : '1px solid red'});
	}*/
	
	sPhone = $('phone');
	if(sPhone.value == ''/* || !sPhone.value.match(/^\d{10}$/)*/) {
		valid = false;
		setStyle(sPhone, {'border' : '1px solid red'});
	}
	
	sCity = $('city');
	if(sCity.value == '') {
		valid = false;
		setStyle(sCity, {'border' : '1px solid red'});
	}	
	
	sAddress = $('address');
	if(sAddress.value == '') {
		valid = false;
		setStyle(sAddress, {'border' : '1px solid red'});
	}
	
	sZipcode = $('zipcode');
	/*if(sZipcode.value == '' || !sZipcode.value.match(/^\d{4} [A-Za-z]{2}$/)) {
		valid = false;
		setStyle(sZipcode, {'border' : '1px solid red'});
	}*/
	
	sEmail = $('email');
	if(sEmail.value == '' || !sEmail.value.match(/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,6}$/i)) {
		valid = false;
		setStyle(sEmail, {'border' : '1px solid red'});
	}
	
	if(valid) {
		req = doSimpleXMLHttpRequest("user.php",{action: 'updateSubmit',
		                              password: $('password').value, password2: $('confirmpassword').value, 
		                              fname: $('fname').value, lname: $('lname').value,
		                              organization: $('organization').value, phone: $('phone').value, 
		                              address: $('address').value, 
		                              city: $('city').value, zipcode: $('zipcode').value, 
		                              email: $('email').value});
		getElement("content").innerHTML = "Loading...";
		req.addCallback(replaceContent);
	}
}

var resetStyle = function(ev) {	
	setStyle(ev._src, {'border' : '1px solid #BBBBBB'});
}

var userLogout = function(ev) {
	req = doSimpleXMLHttpRequest("user.php",{action: 'logout'});
	req.addCallback(refreshUser);
	hideElement("logoutDiv");
}

var onReloadAdmin = function() {
	roundElement("submitCartInsertService", {compact: "true"});
	
	el = getElement("submitCartInsertService");
	connect(el,"onmouseover",lightTextUp);
	connect(el,"onmouseout",lightTextDown);
	connect(el,"onmousedown",submitCartInsertService);
	
	connect($("serviceOption"),"onfocus",resetStyle);
	connect($("servicePrice"),"onfocus",resetStyle);

	connect($("serviceOption"),"onchange",serviceChange);
	
	roundElement("submitCartInsert",{compact: "true"});
	connect($("submitCartInsert"),"onmousedown",submitCartInsert);
	
	connect($("itemDescr"),"onfocus",resetStyle);
	connect($("itemQuant"),"onfocus",resetStyle);
	connect($("itemPrice"),"onfocus",resetStyle);
}

var submitCartInsert = function(ev) {
	valid = true;

	sItemDescr = $("itemDescr");
	if(sItemDescr.value == '') {
		valid = false;
		setStyle(sItemDescr, {'border' : '1px solid red'});
	}
	
	sItemQuant = $("itemQuant");
	if(sItemQuant.value == '' || !sItemQuant.value.match(/^\d*$/)) {
		valid = false;
		setStyle(sItemQuant, {'border' : '1px solid red'});
	}
	
	sItemPrice = $("itemPrice");
	if(sItemPrice.value == '' || !sItemPrice.value.match(/^-?[\d\.]*$/)) {
		valid = false;
		setStyle(sItemPrice, {'border' : '1px solid red'});
	}

	if(valid) {
		req = doSimpleXMLHttpRequest("buy.php",{action: 'insertOrderItem',
		                                        descr: sItemDescr.value, quant: sItemQuant.value, 
		                                        price: sItemPrice.value});
		req.addCallback(refreshCart);
	}
}

var onCheckoutReload = function() {
	connect($("paymentOption"),"onchange",checkoutChange);
	
	roundElement("submitOrder", {compact: "true"});
	
	el = getElement("submitOrder");
	connect(el,"onmouseover",lightTextUp);
	connect(el,"onmouseout",lightTextDown);
	connect(el,"onmousedown",orderSubmit);

	
	if(el = getElement("alternativeShipping"))
		connect(el,"onchange",setAltShipping);
	
	connect("fname","onkeypress",resetStyle);
	connect("lname","onkeypress",resetStyle);
	connect("organization","onkeypress",resetStyle);
	connect("phone","onkeypress",resetStyle);
	connect("city","onkeypress",resetStyle);
	connect("address","onkeypress",resetStyle);
	connect("zipcode","onkeypress",resetStyle);
	connect("email","onkeypress",resetStyle);
	
	if(el = getElement("searchCustomer")) {
		enableLoginForm(true);
		
		connect(el,"onkeyup",searchCustomer);
		
		hideElement($("suggest"));
	}
}

var searchCustomer = function(ev) {
	showElement($("suggest"));
	if(ev._src.value.length==0) {
		hideElement($("suggest"));
		$("suggest").innerHTML = '';
		return;
	}
		
	val = ev._src.value;
	req = doSimpleXMLHttpRequest("user.php",{action: 'searchCustomer', str: val});
	req.addCallback(showSuggestion);
}

var enableLoginForm = function(enable) {
	elems = getElementsByTagAndClassName("input","loginform");
	if(enable) {
		for(i in elems){
			elems[i].disabled = false;
		}
	}
	else {
		for(i in elems){
			elems[i].disabled = true;
		}
	}
}

var setAltShipping = function(ev) {
	enableLoginForm(ev._src.checked);
}

var checkoutChange = function(ev) {
	setStyle(ev._src, {'border' : '1px solid #BBBBBB'});
	id = ev._src.value;
	req = doSimpleXMLHttpRequest("buy.php",{action: 'checkout', type: id});
	req.addCallback(replaceContent);
}

var orderSubmit = function(ev) {
	payOption = $("paymentOption");
	if(payOption.value == "(none)") {
		setStyle(payOption, {'border' : '1px solid red'});
	}
	else {
		bUseAltShip = false;
		bSendEmail = true;
		
		if(getElement("searchCustomer"))
			bUseAltShip = true;
		valid = true;
		
		sUsername = $('username');
			
		if(bUseAltShip) {
			sFname = $('fname');
			if(sFname.value == '' || !sFname.value.match(/^[\w\s\.\-\,]+$/)) {
				valid = false;
				setStyle(sFname, {'border' : '1px solid red'});
			}
			
			sLname = $('lname');
			if(sLname.value == '' || !sLname.value.match(/^[\w\s\.\-\,]+$/)) {
				valid = false;
				setStyle(sLname, {'border' : '1px solid red'});
			}
			
			/*sOrganization = $('organization');
			if(sOrganization.value == '') {
				valid = false;
				setStyle(sOrganization, {'border' : '1px solid red'});
			}*/
			
			sPhone = $('phone');
			if(sPhone.value == '' || !sPhone.value.match(/^\d{10}$/)) {
				valid = false;
				setStyle(sPhone, {'border' : '1px solid red'});
			}
			
			sCity = $('city');
			if(sCity.value == '') {
				valid = false;
				setStyle(sCity, {'border' : '1px solid red'});
			}			
			
			sAddress = $('address');
			if(sAddress.value == '') {
				valid = false;
				setStyle(sAddress, {'border' : '1px solid red'});
			}
			
			sZipcode = $('zipcode');
			/*if(sZipcode.value == '' || !sZipcode.value.match(/^\d{4} [A-Za-z]{2}$/)) {
				valid = false;
				setStyle(sZipcode, {'border' : '1px solid red'});
			}*/
			
			sEmail = $('email');
			if(sEmail.value == '' || !sEmail.value.match(/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,6}$/i)) {
				valid = false;
				setStyle(sEmail, {'border' : '1px solid red'});
			}
			
			bSendEmail = $("sendEmail").checked;
		}
		
		if(valid) {			
			req = doSimpleXMLHttpRequest("buy.php",{action: 'submit', payment: payOption.value,
													alternativeShipping: bUseAltShip,
													fname: $('fname').value, lname: $('lname').value,
													organization: $('organization').value, phone: $('phone').value, 
													address: $('address').value, 
													city: $('city').value, zipcode: $('zipcode').value, 
													email: $('email').value,
													userName: $('username').value,
													sendEmail: bSendEmail});
			getElement("content").innerHTML = "Loading...";
			req.addCallback(replaceContent);
			
			viewCart();
		}
	}
}

var submitCartInsertService = function(ev) {
	valid = true;

	sItemOption = $("serviceOption");
	if(sItemOption.value == '(none)') {
		valid = false;
		setStyle(sItemOption, {'border' : '1px solid red'});
	}
	sItemCat = sItemOption.options[sItemOption.selectedIndex].id.substring(6);
	sItemDescr=sItemOption.options[sItemOption.selectedIndex].text;	
	
	sItemPrice = $("servicePrice");
	if(sItemPrice.value == '' || !sItemPrice.value.match(/^[\d\.]*$/)) {
		valid = false;
		setStyle(sItemPrice, {'border' : '1px solid red'});
	}

	if(valid && confirm("Add service'" + sItemDescr + "'?")) {
		req = doSimpleXMLHttpRequest("buy.php",{action: 'insertOrderItemService', cat: sItemCat,
		                                        descr: sItemDescr, price: sItemPrice.value});
		req.addCallback(refreshCart);
	}
}

var onLoadOrdersPage = function() {
	elems = getElementsByTagAndClassName("span", "orderaction");
	for(i in elems) {
		el = elems[i];
		connect(el,"onmouseover",lightTextUp);
		connect(el,"onmouseout",lightTextDown);
		connect(el,"onmousedown",loadPage);
	}
}

var onLoadUpdateOrderPage = function() {
	roundElement("submitOrderUpdate",{compact: "true"});
	roundElement("submitOrderInsert",{compact: "true"});
	roundElement("submitOrderInsertService",{compact: "true"});
	connect($("submitOrderUpdate"),"onmousedown",orderUpdateSubmit);
	
	elems = getElementsByTagAndClassName("span", "submitUpdateIncCount");
	for(i in elems) {
		el = elems[i];
		connect(el,"onmousedown",submitUpdateIncCount);
	}
	
	elems = getElementsByTagAndClassName("span", "submitUpdateDecCount");
	for(i in elems) {
		el = elems[i];
		connect(el,"onmousedown",submitUpdateDecCount);
	}
	
	connect($("submitOrderInsert"),"onmousedown",submitOrderInsert);
	
	connect($("itemDescr"),"onfocus",resetStyle);
	connect($("itemQuant"),"onfocus",resetStyle);
	connect($("itemPrice"),"onfocus",resetStyle);
	connect($("serviceOption"),"onfocus",resetStyle);
	connect($("servicePrice"),"onfocus",resetStyle);
	
	connect($("serviceOption"),"onchange",serviceChange);
	connect($("submitOrderInsertService"),"onmousedown",submitOrderInsertService);
}

var orderUpdateSubmit = function(ev) {
	sStatusOption = $("statusOption");
	sInvoiceNo = $("invoiceNo");
	if(confirm("Update invoice " + sInvoiceNo.value + " to status " + sStatusOption.value + "?")) {
		req = doSimpleXMLHttpRequest("user.php",{action: 'updateOrderStatus', status: sStatusOption.value,
												 invoiceNo: sInvoiceNo.value});
		getElement("content").innerHTML = "Loading...";
		req.addCallback(replaceContent);
	}
}

var submitUpdateIncCount = function(ev) {
	sItemKey = getNodeAttribute(ev._src,"m:itemKey");
	sInvoiceNo = $("invoiceNo");
	req = doSimpleXMLHttpRequest("invoice.php",{action: 'increaseQuantity', itemKey: sItemKey,
											 invoiceNo: sInvoiceNo.value});
	getElement("content").innerHTML = "Loading...";
	req.addCallback(replaceContent);
}

var submitUpdateDecCount = function(ev) {
	sItemKey = getNodeAttribute(ev._src,"m:itemKey");
	sItemDescr = getNodeAttribute(ev._src,"m:itemDescr");
	sInvoiceNo = $("invoiceNo");
	
	if(confirm("Remove item '" + sItemDescr + "' from invoice " + sInvoiceNo.value + "?")) {
		req = doSimpleXMLHttpRequest("invoice.php",{action: 'decreaseQuantity', itemKey: sItemKey,
												 invoiceNo: sInvoiceNo.value});
		getElement("content").innerHTML = "Loading...";
		req.addCallback(replaceContent);
	}
}

var submitOrderInsert = function(ev) {
	valid = true;

	sItemDescr = $("itemDescr");
	if(sItemDescr.value == '') {
		valid = false;
		setStyle(sItemDescr, {'border' : '1px solid red'});
	}
	
	sItemQuant = $("itemQuant");
	if(sItemQuant.value == '' || !sItemQuant.value.match(/^\d*$/)) {
		valid = false;
		setStyle(sItemQuant, {'border' : '1px solid red'});
	}
	
	sItemPrice = $("itemPrice");
	if(sItemPrice.value == '' || !sItemPrice.value.match(/^[\d\.]*$/)) {
		valid = false;
		setStyle(sItemPrice, {'border' : '1px solid red'});
	}
	
	sInvoiceNo = $("invoiceNo");

	if(valid && confirm("Update invoice " + sInvoiceNo.value + " with item '" + sItemDescr.value + "'?")) {
		req = doSimpleXMLHttpRequest("invoice.php",{action: 'insertOrderItem', invoiceNo: sInvoiceNo.value,
		                                            descr: sItemDescr.value, quant: sItemQuant.value, price: sItemPrice.value});
		getElement("content").innerHTML = "Loading...";
		req.addCallback(replaceContent);
	}
}

var serviceChange = function(ev) {
	option=ev._src;
	price=getNodeAttribute($("option"+option.value),"m:servicePrice");
	$("servicePrice").value=price;
}

var submitOrderInsertService = function(ev) {
	valid = true;

	sItemOption = $("serviceOption");
	if(sItemOption.value == '(none)') {
		valid = false;
		setStyle(sItemOption, {'border' : '1px solid red'});
	}
	sItemCat = sItemOption.options[sItemOption.selectedIndex].id.substring(6);
	sItemDescr=sItemOption.options[sItemOption.selectedIndex].text;	
	
	sItemPrice = $("servicePrice");
	if(sItemPrice.value == '' || !sItemPrice.value.match(/^[\d\.]*$/)) {
		valid = false;
		setStyle(sItemPrice, {'border' : '1px solid red'});
	}
	
	sInvoiceNo = $("invoiceNo");

	if(valid && confirm("Update invoice " + sInvoiceNo.value + " with item '" + sItemDescr + "'?")) {
		req = doSimpleXMLHttpRequest("invoice.php",{action: 'insertOrderItemService', invoiceNo: sInvoiceNo.value,
		                                            cat: sItemCat, descr: sItemDescr, price: sItemPrice.value});
		getElement("content").innerHTML = "Loading...";
		req.addCallback(replaceContent);
	}
}

var contactSubmit = function(ev) {
    valid = true;
	
	sFname = $('fname');
	if(sFname.value == '' || !sFname.value.match(/^[\w\s\.\-\,]+$/)) {
		valid = false;
		setStyle(sFname, {'border' : '1px solid red'});
	}
	
	sLname = $('lname');
	if(sLname.value == '' || !sLname.value.match(/^[\w\s\.\-\,]+$/)) {
		valid = false;
		setStyle(sLname, {'border' : '1px solid red'});
	}
	
	sPhone = $('phone');
	if(sPhone.value == '') {
		valid = false;
		setStyle(sPhone, {'border' : '1px solid red'});
	}
	
	sEmail = $('email');
	if(sEmail.value == '' || !sEmail.value.match(/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,6}$/i)) {
		valid = false;
		setStyle(sEmail, {'border' : '1px solid red'});
	}
	
	if(valid) {
		req = doSimpleXMLHttpRequest("contact.php",{action: 'sendMessage',
		                              fname: $('fname').value, lname: $('lname').value,
		                              phone: $('phone').value, email: $('email').value,
			                          question: $('question').value});
		getElement("content").innerHTML = "Loading...";
		req.addCallback(replaceContent);
	}
}

var toggleHighlight = function(ev) {
    el = "message"+ev._src.id;	
	toggle(el,"appear",{duration: 0.3});
}

var onLoadContactPage = function() {
	roundElement("submitButton",{compact: "true"});
	connect($("submitButton"),"onmousedown",contactSubmit);
	
	elems = getElementsByTagAndClassName("input","contactForm");
	for(i in elems){
		el = elems[i];
		connect(el,"onfocus", toggleHighlight);
		connect(el,"onblur", toggleHighlight);
	}

	elems = getElementsByTagAndClassName("div","highlight");
	for(i in elems){
		hideElement(elems[i]);
	}
}

var updateBannerClicks = function(ev) {
	bannerId=getNodeAttribute(ev._src,"m:bannerid");
	req = doSimpleXMLHttpRequest("goto.php", {ID: bannerId});
}

var changeBanner = function() {
	req = doSimpleXMLHttpRequest("banner.php");
	req.addCallback( function(req){ getElement("banner").innerHTML = req.responseText;
	                                elems = getElementsByTagAndClassName("img","avcattitle2");
									for(i in elems){
										el = elems[i];
										connect(el,"onmousedown",updateBannerClicks);
										connect(el,"onmousedown",loadAVProducts);
									}
	                                wait(14.8).addCallback(function (res) { return changeBanner() } );
								  });
}

var onLoad = function () { 
//	roundClass("div","copyright", {corners: "tl tr", compact: "true"});
//	roundClass("div","cattitle",{corners: "tl bl", compact: "true"});
	roundClass("div","leftbox",{compact: "true"});
	
	//req = doSimpleXMLHttpRequest("main.html");
	//req.addCallback(replaceContent);

	//top menu events
	elems = getElementsByTagAndClassName("span","menuhead");
	for(i in elems){
		el = elems[i];	
		connect(el,"onmouseover",lightUp);
		connect(el,"onmouseout",lightDown);
		connect(el,"onmousedown",loadPage);
	}
	elems = getElementsByTagAndClassName("span","menulink");
	for(i in elems){
		el = elems[i];	
		connect(el,"onmouseover",lightUp);
		connect(el,"onmouseout",lightDown);
		connect(el,"onmousedown",loadLink);
	}

	//side menu events
	elems = getElementsByTagAndClassName("td","maincat");
	for(i in elems){
		el = elems[i];	
		connect(el,"onmouseover",lightUpMaincat);
		connect(el,"onmouseout",lightDownMaincat);
		connect(el,"onmousedown",loadCategory);
	}
	elems = getElementsByTagAndClassName("div","syscattitle");
	for(i in elems){
		el = elems[i];	
		connect(el,"onmouseover",lightUp3);
		connect(el,"onmouseout",lightDown3);
		connect(el,"onmousedown",loadPage);
	}
	elems = getElementsByTagAndClassName("div","avcattitle");
	for(i in elems){
		el = elems[i];	
		connect(el,"onmouseover",lightUp3);
		connect(el,"onmouseout",lightDown3);
		connect(el,"onmousedown",loadAVProducts);
	}
	elems = getElementsByTagAndClassName("img","avcattitle2");
	for(i in elems){
		el = elems[i];
		connect(el,"onmousedown",updateBannerClicks);
		connect(el,"onmousedown",loadAVProducts);
	}
	elems = getElementsByTagAndClassName("div","cattitle");
	for(i in elems){
		el = elems[i];	
		connect(el,"onmousedown",toggleSub);
		connect(el,"onmouseover",lightUp3);
		connect(el,"onmouseout",lightDown3);
	}
	elems = getElementsByTagAndClassName("div","cattitle2");
	for(i in elems){
		el = elems[i];	
		connect(el,"onmouseover",lightUp3);
		connect(el,"onmouseout",lightDown3);
		connect(el,"onmousedown",loadProducts);
	}

	elems = getElementsByTagAndClassName("div","catlink");
	for(i in elems){
		el = elems[i];	
//		connect(el,"onmousedown",loadPage);
		connect(el,"onmouseover",lightUp3);
		connect(el,"onmouseout",lightDown3);
	}

	elems = getElementsByTagAndClassName("div","submenu");
	for(i in elems){
		el = elems[i];	
		toggle(el,"blind",{duration: 0.0});
	}

	elems = getElementsByTagAndClassName("div","menuitem");
	for(i in elems){
		el = elems[i];	
		connect(el,"onmouseover",lightUp2);
		connect(el,"onmouseout",lightDown2);
		connect(el,"onmousedown",loadProducts);
	}

	el = getElement("empty");
	connect(el,"onmouseover",lightTextUp);
	connect(el,"onmouseout",lightTextDown);
	connect(el,"onmousedown",emptyCart);

	el = getElement("checkout");
	connect(el,"onmouseover",lightTextUp);
	connect(el,"onmouseout",lightTextDown);
	connect(el,"onmousedown",checkOut);

	elems = getElementsByTagAndClassName("input","loginform");
	for(i in elems){
		el = elems[i];
		connect(el,"onblur",restoreField);
		connect(el,"onmousedown", emptyField);
	}
	
	if(el = getElement("forgotPass")) {
		connect(el,"onmouseover",lightTextUp);
		connect(el,"onmouseout",lightTextDown);
		connect(el,"onmousedown",forgotPass);
	}

	el = getElement("login");
	connect(el,"onmouseover",lightTextUp);
	connect(el,"onmouseout",lightTextDown);
	connect(el,"onmousedown",userLogin);

	el = getElement("register");
	connect(el,"onmouseover",lightTextUp);
	connect(el,"onmouseout",lightTextDown);
	connect(el,"onmousedown",userRegister);

	el = getElement("logout");
	connect(el,"onmouseover",lightTextUp);
	connect(el,"onmouseout",lightTextDown);
	connect(el,"onmousedown",userLogout);

	elems = getElementsByTagAndClassName("span","buy");
	for(i in elems){
		el = elems[i];	
		connect(el,"onmousedown",buyProducts);
	}
	
	prepareUserMenu();

	wait(14.8).addCallback(function (res) { return changeBanner() } );
}

function popUp(URL) {
	day = new Date();
	id = day.getTime();
	eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=1,width=800,left = 0,top = 0');");
}
popExternal = function(URL) {
	popwindow = window.open(URL,"popwindow","status=0,location=0,scrollbars=1,resizable=1,width=1000,height=800");
	if (window.focus) {popwindow.focus()}
	return false;
}
connect(window,"onload",onLoad);
