
Event.observe(window,'load',function(e)
{
	Event.observe(document.forms[0],'submit',handleSubmit); // element to observer,event,callback function
});


function Interactive(type) {
    $('Calculator').elements['output'].value = type;
    $('Calculator').submit();    
}

function doReset() {
    moveWindow("TOP");
    $('Calculator').elements['output'].value = "reset";
    doSubmit($('Calculator'));
}

window.onload = doReset;

function doCalculate() {
    if (arguments.length == 0) {
        moveWindow("RESULTS");
    }
    $('Calculator').elements['output'].value = "ajax";
    doSubmit($('Calculator'));
}

function doPrint() {
    $('Calculator').elements['output'].value = "print";
    $('Calculator').target = "_blank";
    $('Calculator').submit();
}

function doSubmit(frm) {
    MessageBox.hide();
    new Ajax.Request('calculator.aspx', {
        method: 'post',
        parameters: $('Calculator').serialize(true),
        onLoading: function(transport) {
            //MessageBox.show("Loading...");
        },
        onSuccess: function(transport) {
            MessageBox.hide();
            var dr = transport.responseText;
            var jsonT = eval(dr);
            for (i = 0; i < jsonT.outputs.length; i++) {
			
                if ($(jsonT.outputs[i].name)) {
                    for (j = 0; j < jsonT.outputs[i].results.length; j++) {
                        if (jsonT.outputs[i].results[j].action == 'ATTRIBUTE') {
                            $(jsonT.outputs[i].name).writeAttribute(jsonT.outputs[i].results[j].name, jsonT.outputs[i].results[j].value);
                        }
                    }

                    switch ($(jsonT.outputs[i].name).tagName) {
					
                        case "INPUT":
                            {

                                switch ($(jsonT.outputs[i].name).type) {
								
                                    case "text":
                                        for (j = 0; j < jsonT.outputs[i].results.length; j++) {
                                            if (jsonT.outputs[i].results[j].action == 'UPDATE') {
                                                $(jsonT.outputs[i].name).show().setValue(jsonT.outputs[i].results[j].value);
												
                                            }
                                        }
                                        break;

                                    case "checkbox":
                                        {
                                            for (j = 0; j < jsonT.outputs[i].results.length; j++) {
                                                if (jsonT.outputs[i].results[0].value == "unchecked") {
                                                    $(jsonT.outputs[i].name).show().checked = false;
                                                }
                                                else {
                                                    $(jsonT.outputs[i].name).show().checked = true;
                                                }
                                            }
                                        }
                                        break;

                                    case "radio":
                                        {
                                            var buttons = $$('[name="' + jsonT.outputs[i].name + '"]');
                                            for (j = 0; j < buttons.length; j++) {
                                                buttons[j].checked = false;
                                                if (buttons[j].value == jsonT.outputs[i].results[0].value) {
                                                    buttons[j].checked = true;
                                                }
                                            }
                                        }
                                        break;

                                    default:
                                        if (jsonT.outputs[i].results[0].action == 'REPLACE') {
                                            Element.replace($(jsonT.outputs[i].name), jsonT.outputs[i].results[0].value);
                                        }
                                        break;
                                }
                            }
                            break;

                        case "SELECT":
                            {
                                var select = $(jsonT.outputs[i].name);
                                for (j = select.length - 1; j >= 0; j--) {
                                    if (select.options[j].value == jsonT.outputs[i].results[0].value) {
                                        select.options[j].selected = true;
                                    }
                                    else {
                                        select.options[j].selected = false;
                                    }
                                }
                            }
                            break;
							
						case "TEXTAREA":
							{
								for (j = 0; j < jsonT.outputs[i].results.length; j++) {
									if (jsonT.outputs[i].results[j].action == 'UPDATE') {
										$(jsonT.outputs[i].name).show().setValue(jsonT.outputs[i].results[j].value);
										
									}
								}
								break;							
							}

                        default:
                            {
                                for (j = 0; j < jsonT.outputs[i].results.length; j++) {
                                    if (jsonT.outputs[i].results[j].action == 'UPDATE') {
                                        $(jsonT.outputs[i].name).show().update(jsonT.outputs[i].results[j].value);
                                    }
                                }
                            }
                            break;
                    }
                }
            }

        },
        onFailure: function(transport) {
            // when the request fails
            alert('The request failed');
            MessageBox.hide();
            $('wrap').hide();

        },
        onException: function(err) {
            // When an exception is encountered while executing the callbacks
            alert('Exception - ' + err.Message);
            MessageBox.hide();
            $('wrap').hide();
        }
    });
}

function handleSubmit(evt)
{
	var frm = Event.element(evt);

	if (!validate(frm)) {
	    Event.stop(evt); // Stop the form from submitting
	    return false;
	}

    if(frm.elements['output'].value != 'ajax' && frm.elements['output'].value != 'reset')
    {
        return(true);
    }
    else
    {
        doSubmit(frm);
	    Event.stop(evt);
	}
}

var Dialog =
{
    TheBox: "",
    show: function(Box) {
        TheBox = $(Box);
        $('wrap').style.height = $('bodydiv').getHeight() * 1.1;
        $('wrap').show();
        TheBox.show();
        TheBox.style.top = ((document.viewport.getDimensions().height - TheBox.getHeight()) / 2) + document.viewport.getScrollOffsets()[1] + 'px';
        TheBox.style.left = (document.viewport.getDimensions().width - TheBox.getWidth()) / 2 + 'px';
    },

    hide: function() {
        $('wrap').hide();
        TheBox.hide();
    },

    send: function(frm) {
        this.hide();
        new Ajax.Request('email.aspx', {
            method: 'post',
            parameters: $(frm).serialize(true),
            onLoading: function(transport) {
                MessageBox.show("Working...");
            },
            onSuccess: function(transport) {
                MessageBox.hide();
                setTimeout("MessageBox.show('Thank you. Your message has been sent')", 500);
                setTimeout("MessageBox.hide()", 2500);
            },
            onFailure: function(transport) {
                // when the request fails
                alert('The request failed');
                MessageBox.hide();
                $('wrap').hide();
            },
            onException: function(err) {
                // When an exception is encountered while executing the callbacks
                alert('Exception - ' + err.Message);
                MessageBox.hide();
                $('wrap').hide();
            }
        }
    )
    }
}

var MessageBox =
{
    show: function(strMessage) {
        $('MsgBox').show().update(strMessage);
        $('MsgBox').style.top = ((document.viewport.getDimensions().height - $('MsgBox').getHeight())) / 2 + document.viewport.getScrollOffsets()[1] + 'px';
        $('MsgBox').style.left = (document.viewport.getDimensions().width - $('MsgBox').getWidth()) / 2 + 'px';
    },

    hide: function() {
        $('MsgBox').hide();
    }
}


function disableField(Field) {

    $(Field).disabled = true;

    $(Field).className = "inputControlsResults";

    return true;

}



function enableField(Field) {

    $(Field).disabled = false;

    $(Field).className = "inputControls";

    return true;

}


    scrollSteps = 50;
    timer = "";

function findTop(obj) {
	var curtop = 0;

	if (obj.offsetParent) {

		do {
			curtop += obj.offsetTop;
		} while (obj = obj.offsetParent);

	}
	return curtop;
	
}


    function moveWindow(id) {
        clearTimeout(timer)
        doc = document.body.parentNode;
        //obj = document.getElementsByName(id)[0];
        //if(!obj){id = id.toLowerCase(); obj = document.getElementsByName(id)[0]};

        //obj = document.getElementById(id);
        obj = $(id);
        if (!obj) { id = id.toLowerCase(); obj = obj = $(id); };

        doc.scrollTop = findTop(obj); //obj.offsetTop;
        return true;

        if (doc.scrollTop <= findTop(obj) - scrollSteps) {
            window.scrollBy(0, scrollSteps)
            timer = setTimeout("moveWindow('" + id + "')", 2)

            if (doc.scrollTop > (doc.scrollHeight - doc.clientHeight) - scrollSteps) { // if bottom of page reached before anchor point
                var x = 3;
                clearTimeout(timer)
                doc.scrollTop = doc.scrollHeight - doc.clientHeight
            }

        }
        else {

            if (doc.scrollTop >= findTop(obj) + scrollSteps) {
                window.scrollBy(0, -scrollSteps)
                timer = setTimeout("moveWindow('" + id + "')", 10)
            }
            else {
                clearTimeout(timer)
                doc.scrollTop = findTop(obj)
            }

        }

    }



//function moveWindow(Position) { window.location.hash = Position; }
