var refresh_id = 0;

// this is never assigned a value so we can see if a property down
// below is undefined
var undefined;

var bold_dim = new Image();
bold_dim.src = "/images/mailing_btn_b_dim.gif";
var bold_on = new Image();
bold_on.src = "/images/mailing_btn_b_ON.gif";
var bold_off = new Image();
bold_off.src = "/images/mailing_btn_b.gif";
var italic_dim = new Image();
italic_dim.src = "/images/mailing_btn_i_dim.gif";
var italic_on = new Image();
italic_on.src = "/images/mailing_btn_i_ON.gif";
var italic_off = new Image();
italic_off.src= "/images/mailing_btn_i.gif";

var all_elements = new Array();
var form_controls = new Array();
var size_attributes = new Array();
var s;
function body_load()
{
	
    build_form_controls();
	var len = size_attributes.length;
	for (var i=0;i<len;i++)
	{
	    check_increment_checkbox(size_attributes[s]);
	    check_decrement_checkbox(size_attributes[s]);
	}
}

function schedule_size_image_refresh(e)
{
    build_form_controls();
	var len = size_attributes.length;
	for (var i=0;i<len;i++)
	{
	    check_increment_checkbox(size_attributes[s]);
	    check_decrement_checkbox(size_attributes[s]);
	}

    if (refresh_id) return;

    refresh_id = window.setTimeout("image_refresh();", 1);
}

function schedule_image_refresh(e)
{
    build_form_controls();
   if (e)
    {
		var el = document.getElementById("mainform");
		var reload = el.reload;
        if (reload && e.name == reload.value)
        {
			el.action = document.location;
			el.submit();
		}
		else if (e.name == 'go_quote')
		{
			el.action = el.quote_page.value;
			el.submit();
		}
    }

    if (refresh_id)
        return;

    refresh_id = window.setTimeout("image_refresh();", 1500);
}

function build_form_controls()
{
// don't bother if this has already been done
    if (form_controls.length > 1) return;

// organize the form into an array so we can get the values quickly
    var form = document.getElementById("mainform"); 
	var s = 0;
    var count = 0;
    for (var i=0; i<form.elements.length; i++)
    {
        var ctl = form.elements[i];
        var name = ctl.name;
        var a;
        if (form_controls[name])
		{
            a = form_controls[name];
		}
        else
        {
            a = new Array();
			all_elements[count] = name;
            count++;

		// If this name starts with increment_, save as a size attribute
			if (name.substring(0,10) == 'increment_')
			{
				size_attributes[s++] = name.substring(10,name.length-10);
			}
        }
        var len = a.length;
        a[len] = ctl;
        form_controls[name] = a;
    }
    form_controls.length = count;
	all_elements.length = count;
	size_attributes.length = s;
}

function getFormValue(name)
{
    var val = '';
    if (form_controls[name])
    {
        var a = form_controls[name];
        var len = a.length;
        if (len > 0)
        {
            for (var i=0; i<len; i++)
            {
                var ctl = a[i];
                switch (ctl.type)
                {
                case 'radio':
                case 'checkbox':
                    if (ctl.checked)
                    {
                        val = ctl.value;
                        i = len;
                    }
                    break;
                case 'select':
                    var index = ctl.selectedIndex;
                    if (index > -1)
                    {
                        val = ctl.options[index].value;
                        i = len;
                    }
                    break;
                default:
                    val = ctl.value;
                    i = len;
                    break;
                }
            }
        }
    }
    return val;
}

function image_refresh()
{
    refresh_id = 0;

//    var debug = document.getElementById("debugarea"); 
    var image_url = "/products/render/render.cgi";

    // get the template
    var template = getFormValue('48[]');
    var name;

    // build a new url for the image
    var sep = '?';
    for (var i = 0; i < all_elements.length; i++)
    {
    // Get the value for this name
        name = all_elements[i];
        var val = getFormValue(name);

    // Add to the url
        if (val && name != 'mono')
        {
			if (name == '29' || name == '67' || name == '29[]' || name == '67[]')
			{
		        var no_numbering = getFormValue('23[]');
		        if (no_numbering)
		        	val = '';
		        else
		        {
		        	var database_merge = getFormValue('24[]');
		        	if (database_merge)
		        		val = '';
		        }
			}
			else if (name == '24' || name == '24[]')
			{
				if (val)
				{
					name = '29[]';
					val = 'DATA_BASE_MERGE';
				}
			}
            image_url = image_url + sep + name + "=" + escape(val);
            sep = '&';
        }
    }

    // if there is a compressed variable, add it
        var is_compressed = document.getElementById('is_compressed[]');
	if (!is_compressed) is_compressed = document.getElementById('is_compressed');
        if (is_compressed && is_compressed.value.length > 0)
        {
            image_url = image_url + sep + 'is_compressed[]='+escape(is_compressed.value);
        }

	// If there's a max width or height, add it
	var max_width = document.getElementById('max_width');
	var max_height = document.getElementById('max_height');
	if (max_width && max_width.value > 0)
		image_url = image_url + sep + 'max_width='+max_width.value;
	if (max_height && max_height.value > 0)
		image_url = image_url + sep + 'max_height='+max_height.value;

    // get the image element
    var image_el = document.getElementById("preview_image");
//alert(image_url);
    image_el.src=image_url;
 }
 
 //	Getting the ID value depending on browser type and thier supported methods
function getStyleObject(objectId) {
	if (document.getElementById && document.getElementById(objectId)) {
       		return document.getElementById(objectId).style;
  	}
	else if (document.all && document.all(objectId)) {  
		return document.all(objectId).style;
	} 
	else if (document.layers && document.layers[objectId]) { 
		return document.layers[objectId];
	} 
	else {
		return false;
	}
}

function check_increment_checkbox(name)
{
    // disable the button if we've reached the max size
    var el = document.getElementById(name + '[]');
    var max = document.getElementById("max_" + name);
    var button_el = document.getElementById("increment_" + name);

    if (el && button_el)
	{
		if (form_controls[button_el.name])
		{
	    	button_el.disabled = (el.value == max.value);
		}
		if (max && el.value == max.value) {
	    	var styleObject = getStyleObject("increment_" + name);
	    	styleObject.visibility = "hidden";
	    	styleObject.display = "inline";	  	
		}
		else {
	    	var styleObject = getStyleObject("increment_" + name);
	    	styleObject.visibility = "visible";
	    	styleObject.display = "inline";			
		}		
		
	}
}

function check_decrement_checkbox(name)
{
    // disable the button if we've reached the min size
    var el = document.getElementById(name + '[]');
    var button_el = document.getElementById("decrement_" + name);
    var min = document.getElementById("min_" + name);

    if (el && button_el)
	{
		if (form_controls[button_el.name])
		{
			button_el.disabled = (el.value == min.value);
		}
		if (min && el.value == min.value) {
	    	var decrementStyleObject = getStyleObject("decrement_" + name);
	    	decrementStyleObject.visibility = "hidden";
	    	decrementStyleObject.display = "inline";	    	
		}		
		else {
	    	var decrementStyleObject = getStyleObject("decrement_" + name);
	    	decrementStyleObject.visibility = "visible";
	    	decrementStyleObject.display = "inline";			
		}
	}
}

function increment_font(name)
{
    // incrememnt the value for the font
    build_form_controls();
    var el = document.getElementById(name+'[]');
    var delta = document.getElementById("delta_" + name);
    if (el && delta) eval('el.value = '+el.value+'+'+delta.value+';');

	var label = document.getElementById('label_'+name);
	if (label) label.innerHTML = label.innerText = el.value;
	
    check_increment_checkbox(name);
    check_decrement_checkbox(name);

    schedule_image_refresh();
}

function decrement_font(name)
{
    build_form_controls();
    var el = document.getElementById(name+'[]');
    var delta = document.getElementById("delta_" + name);
    if (el && delta) eval('el.value = '+el.value+'-'+delta.value+';');

	var label = document.getElementById('label_'+name);
	if (label) label.innerHTML = label.innerText = el.value;

    check_increment_checkbox(name);
    check_decrement_checkbox(name);

    schedule_image_refresh();
}

function bold_clicked(name)
{
    var el = document.getElementById(name+'[]');
    var image_el = document.getElementById('bold_'+name);

    switch (el.value) {
    case "":
    case "0":
        el.value = "true";
        image_el.src = bold_on.src;
        break;
	default:
        el.value = "";
        image_el.src = bold_off.src;
        break;
    }

    schedule_image_refresh();
}

function italic_clicked(name)
{
    var el = document.getElementById(name+'[]');
    var image_el = document.getElementById('italic_'+name);

    switch (el.value) {
    case "":
    case "0":
        el.value = "true";
        image_el.src = italic_on.src;
        break;
	default:
        el.value = "";
        image_el.src = italic_off.src;
        break;
    }

    schedule_image_refresh();
}
