function FormBlurAll(form) {
    for (var i = 0; i < form.length; i++)
        form[i].blur();
}

function FormCheckAll(checkbox) {
    var checked = checkbox.checked;
    var form = checkbox.form;
    for (var i = 0; i < form.length; i++) {
	var element = form[i];
	if (element.type == 'checkbox' && element.name != checkbox.name)
	    element.checked = checked;
    }
}

function EncodeURIQueryObject2(object, query)
{
    if (query == null)
        query = '';
    if (object != null) {
        for (var key in object) {
            if (query != '')
                query += '&';
            query += encodeURIComponent(key);
            query += '=';
            query += encodeURIComponent(object[key]);
        }
    }
    return query;
}

function EncodeURIQueryForm2(form, query) {
    if (query == null)
        query = '';
    if (form != null) {
        for (var i = 0; i < form.length; i++) {
            var element = form[i];
            switch (element.type) {
            case 'select-multiple':
            case 'select-one':
                if (element.selectedIndex >= 0) {
                    if (query != '')
                        query += '&';
                    query += encodeURIComponent(element.name);
                    query += '=';
                    if (element.options[element.selectedIndex].value != '')
                        query += encodeURIComponent(element.options[element.selectedIndex].value);
                    else
                        query += encodeURIComponent(element.options[element.selectedIndex].text);
                }
                break;
            case 'checkbox':
            case 'radio':
                if (!element.checked)
                    break;
                /* Fall through... */
            case 'hidden':
            case 'password':
            case 'text':
            case 'textarea':
                if (query != '')
                    query += '&';
                query += encodeURIComponent(element.name);
                query += '=';
                query += encodeURIComponent(element.value);
                break;
            }
        }
    }
    return query;
}

function EncodeURIQueryObject(object) {
    return EncodeURIQueryObject2(object, null);
}

function EncodeURIQueryForm(form) {
    return EncodeURIQueryForm2(form, null);
}

function ConcatURIQueryString(uri, query) {
    if (uri == null)
        uri = '';
    if (query == '')
        return uri;
    else if (query.indexOf('?') >= 0)
        return uri + '&' + query;
    else
        return uri + '?' + query;
}

function ConcatURIQueryForm(uri, form) {
    return ConcatURIQueryString(uri, EncodeURIQueryForm(form));
}

function ConcatURIQueryObject(uri, object) {
    return ConcatURIQueryString(uri, EncodeURIQueryObject(object));
}

function Get2(uri, object) {
    window.location.href = ConcatURIQueryObject(uri, object);
}

function Get(object) {
    Get2(null, object);
}

function Go(url) {
    Get2(url, null);
}

function Submit(formName) {
    document.forms[formName].submit();
}

function AjaxRequest(method, url, data, callbackFunction) {
    var request;
    if (window.XMLHttpRequest) {
	request = new XMLHttpRequest();
	if (request.overrideMimeType)
	    request.overrideMimeType('text/xml');
    }
    else if (window.ActiveXObject) {
	try {
	    request = new ActiveXObject("Msxml2.XMLHTTP");
	} catch (e) {
	    try {
		request = new ActiveXObject("Microsoft.XMLHTTP");
	    } catch (e) {
		return;
	    }
	}
    }

    request.open(method, url, false);
    if (data != null)
        request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    request.send(data);

    if (request.readyState == 4 && request.status == 200 && request.responseText)
	callbackFunction(request.responseText);
}

function AjaxLoad(method, url, data, elementId)
{
    var callbackFunction = function(responseText) {
	document.getElementById(elementId).innerHTML = responseText;
    };
    AjaxRequest(method, url, data, callbackFunction);
}

function AjaxGet(url, elementId) {
    AjaxLoad('GET', url, null, elementId);
}

function AjaxGet2(url, elementId, object) {
    AjaxLoad('GET', ConcatURIQueryObject(url, object), null, elementId);
}

function AjaxPost(url, elementId, formName) {
    var form = document.forms[formName];
    FormBlurAll(form);
    AjaxLoad('POST', url, EncodeURIQueryForm(form), elementId);
}

function AjaxPost2(url, elementId, formName, object) {
    var form = document.forms[formName];
    FormBlurAll(form);
    for (var key in object)
	form.elements[key].value = object[key];
    AjaxLoad('POST', url, EncodeURIQueryForm(form), elementId);
}

window.preferAjax = false;

function ViewParam(view, param) {
    var param2 = '?v=' + view;
    if (param != null)
	return param2 + '&' + param;
    else
	return param2;
}

function GetBody2Ajax(view, param) {
    var url = '/body_ajax.php' + ViewParam(view, param);
    AjaxGet(url, 'BodyPane');
}

function GetBody2(view, param) {
    if (window.preferAjax) {
	GetBody2Ajax(view, param);
    } else {
	window.location.href = ViewParam(view, param);
    }
}

function GetBody(view) {
    GetBody2(view, null);
}

function SubmitBodyAjax(formName) {
    AjaxPost('/body_ajax.php', 'BodyPane', formName);
}

function SubmitBody(formName) {
    if (window.preferAjax)
	SubmitBodyAjax(formName);
    else
        Submit(formName);
}

function SubmitBodyAjax2(formName, object) {
    AjaxPost2('/body_ajax.php', 'BodyPane', formName, object);
}

function SubmitBody2(formName, object) {
    if (window.preferAjax)
	SubmitBodyAjax2(formName, object);
    else {
	for (var key in object)
	    document.forms[formName].elements[key].value = object[key];
        Submit(formName);
    }
}

function CheckoutBackwards() {
    SubmitBody2('Checkout', {Navigate: 'Backwards'});
}

function CheckoutForwards() {
    SubmitBody2('Checkout', {Navigate: 'Forwards'});
}

function SubmitOrder() {
    SubmitBody('OrderForm');
}

function SubmitOrderAjax() {
    SubmitBodyAjax('OrderForm');
}

function SubmitOrder2(object) {
    SubmitBody('OrderForm', object);
}

function SubmitOrderAjax2(object) {
    SubmitBodyAjax2('OrderForm', object);
}

function Order(action) {
    SubmitBodyAjax2('OrderForm', {OrderAction: action});
    UpdateOrderSummary();
}

function Checkout() {
    GetBody('Checkout');
}

function ShowHome() {
    GetBody('Home');
}

function ShowCategory(categoryId) {
    GetBody2('Category', 'c=' + categoryId);
}

function UpdateOrderSummary() {
    AjaxGet('/header/order_summary.php', 'OrderSummary');
}

function SubmitOrderSummary(formName) {
    AjaxPost('/header/order_summary.php', 'OrderSummary', formName);
    document.forms[formName].elements['OrderAdd'].value = '1';
}

function ShowOrder() {
    GetBody('Order');
}

function ShowLogin() {
    GetBody('Login');
}

function ShowTermsOfService() {
    GetBody('TermsOfService');
}

function ShowPrivacy() {
    GetBody('Privacy');
}

function ShowAbout() {
    GetBody('About');
}

function ShowLocations() {
    GetBody('Locations');
}

function ShowProduct(sku) {
    GetBody2('Product', 'i=' + encodeURIComponent(sku));
}

function SubmitSearch() {
    SubmitBody('SearchForm');
}

function ViewOrder(order_number) {
    window.open('/popups/order.php?order_number=' + order_number, 'pccyber_order_' + order_number, 'scrollbars=1,location=0,statusbar=0,menubar=1,width=1040,height=480,resizable=1');
}

/* ---------------------------- ADMIN CP ----------------------------- */
function ShowAdminCP() {
    BodyPane('/admin/admincp.php');
}

function ShowOrders() {
    BodyPane('/admin/orders.php');
}

function ShowQuotes() {
    BodyPane('/admin/quotes.php');
}

function EditProduct(sku) {
    GetBody2Ajax('Product', 'i=' + encodeURIComponent(sku) + '&edit=1');
}

function EditPhotos(sku) {
    BodyPane('/admin/edit_photos.php?item=' + encodeURIComponent(sku));
}

/* ---------------------------- USER CP ------------------------------ */

function UserHome() {
    GetBody('UserHome');
}

function ChangePassword() {
    GetBody('ChangePassword');
}

/* ---------------------------- HOME PAGE ------------------------------ */




function ShowRebates() {
    GetBody('Rebates');
}


function ShowEmployment() {
    GetBody('Employment');
}

