var controlTabbies;

function subProductImage(newHTML) {
    $('mainproductimage').innerHTML = '<img src="'+newHTML+'" border="0" />';
    return false;
}

function getControlTabbies() {
    return new Control.Tabs($('tabsproductconfigoptions'),
        {
            afterChange: function(newcontainer){
                var configid = newcontainer.id;
                openConfigProductPage(configid.substring(4));
            }
        }
    );
}


function pause(numberMillis) {
    var now = new Date();
    var exitTime = now.getTime() + numberMillis;
    while (true) {
        now = new Date();
        if (now.getTime() > exitTime)
            return;
    }
}


function getCookie(c_name) {

    if (document.cookie.length > 0) {
        c_start=document.cookie.indexOf(c_name + "=");
        if (c_start != -1) {
            c_start=c_start + c_name.length+1;
            c_end=document.cookie.indexOf(";",c_start);
            if (c_end == -1) c_end=document.cookie.length;
            return unescape(document.cookie.substring(c_start,c_end));
        }
    }
    return '';
}


function jumpToDestination(dest) {
    window.location = dest;
}


// Initiate an asynchronous request to submit and retrieve a JSON reponse
function sendStandardForm(formname, responsediv) {
    try {
        if (typeof formname == 'undefined')
            formname = 'standardform';

        $(formname).request({
            method: 'post',
            onComplete: function(reply) {

                if ((typeof responsediv == 'undefined') || (responsediv == null))
                    responsediv = 'display_message';

                //alert(reply.responseText);
                var refreshResponse = eval('('+reply.responseText+')');
                var responseArr = refreshResponse.jsonmsgs;

                switch(responseArr['status']) {

                    case 'OK_FWD':
                        $(responsediv).innerHTML = responseArr['returnmsg'];
                        setTimeout('jumpToDestination("'+responseArr['dest']+'")', 1800);
                        break;

                    case 'OK_IMMEDIATE_FWD':
                        jumpToDestination(responseArr['dest']);
                        break;

                    case 'OK_TRIGGER_SUBMIT':
                        sendStandardForm(responseArr['formname'], responseArr['responsediv']);
                        break;

                    case 'OK_UPDATE_LIGHTBOX':
                        $(responsediv).innerHTML = responseArr['returnmsg'];
                        myLytebox.updateLyteboxItems();
                        break;

                    case 'ERROR_FIELD':
                        $('form_return_message').innerHTML = responseArr['returnmsg'];
                        if ('captchaId' in responseArr) {
                        	$('captchainput').value = '';
                        	$('captchaid').value = responseArr['captchaId'];
                        	$('captchaimage').innerHTML = '<img src="/public/captcha/images/'+responseArr['captchaId']+'.png" alt=""/>'; 
                        }
                        break;

                    default:
                        $(responsediv).innerHTML = responseArr['returnmsg'];
                        break;
                }
            }
        })
    } catch (e) {
        alert('Error: ' + e.toString());
    }
}



/*
 * Setup global responders for all AJAX requests.
 * On creation of a new request display a "Loading..."
 * message. On completion of the request make it fade.
 */
Ajax.Responders.register(
    {
        onCreate: function()
        {
            if($('ibapp_loading') && Ajax.activeRequestCount>0)
            {
                Effect.Appear('ibapp_loading',{duration: .2, queue: 'end'});
            }
        },

        onComplete: function()
        {
            if($('ibapp_loading') && Ajax.activeRequestCount==0)
            {
                Effect.Fade('ibapp_loading',{duration: .2, queue: 'end'});
            }
        }
    }
);

/*
 * A small useability addon. Detect when a user presses
 * Return after typing a message and call sendMessage()
 * upon detection - removes the need to constantly
 * click the attached button.
 *
 * When adding new events to an element, we can only
 * do so once the page has fully loaded. As a result we
 * create a window.onload event handler to execute the
 * Event.observe() after the page has loaded.

window.onload = function()
{
    Event.observe('textmessage','keypress',
        function(event) {
            if(event.keyCode == Event.KEY_RETURN) {
                sendAjaxForm();
            }
        }
    )
};

*/

function initFormSections(total) {
    i = 1;
    j = parseInt($('currsection').value);
    while (i <= total) {
        if (i != j) {
            Effect.Fade('form_section_'+i+'_header_active', { from: 1, to: 0.5 });
            Effect.SlideUp('form_section_'+i+'_content');
        }
        i++;
    }
}


function sectionSlideOpen(open, total) {
    j = $('currsection').value;
    if (open != parseInt(j)) {
        Effect.Fade('form_section_'+j+'_header_active', { from: 1, to: 0.5 });
        Effect.Appear('form_section_'+open+'_header_active');
        Effect.SlideUp('form_section_'+j+'_content');
        Effect.SlideDown('form_section_'+open+'_content');
        $('currsection').value = open;
    }
}


function getRadioValue(idOrName) {

    var value = null;
    var element = document.getElementById(idOrName);
    var radioGroupName = null;                  // if null, then the id must be the radio group name
    if (element == null) {
        radioGroupName = idOrName;
    } else {
        radioGroupName = element.name;
    }
    if (radioGroupName == null) {
        return null;
    }
    var radios = document.getElementsByTagName('input');
    for (var i=0; i<radios.length; i++) {
        var input = radios[ i ];
        if (input.type == 'radio' && input.name == radioGroupName && input.checked) {
            value = input.value;
            break;
        }
    }
    return value;
}


var dialog = null;

function getUploadDialog(parentid, attuse, refreshfield, baseurl) {

    if (!dialog) {
      dialog = new Ext.ux.UploadDialog.Dialog({
        url: baseurl+'/file.upload/handle',
        base_params: {
                       standardupload_docaction: 'add',
                       standardupload_parentid: parentid,
                       standardupload_attuse: attuse
                     },
        permitted_extensions: ['jpg','JPG','jpeg','JPEG','gif','GIF','png','PNG','flv','FLV','mov','MOV','doc','DOC'],
        reset_on_hide: false,
        allow_close_on_upload: true,
        upload_autostart: true,
        post_var_name: 'upload'
      });

      dialog.on('uploadsuccess', handleUploadUpdate(attuse, refreshfield));
      dialog.on('hide', function() { location.reload(true) });
    }
    return dialog;
}


function handleUploadUpdate(attuse, refreshfield) {
    $(refreshfield).innerHTML = '<a href="javascript:location.reload(true);">Refresh page!</a>';
}


function deleteAttachment(id, parentid, attuse, responsediv) {
    Ext.Msg.confirm('Delete Attachment', 'Are you sure?',
        function(btn) {
            if (btn == 'yes') {
                $('standardupload_docaction').value = 'delete';
                $('standardupload_id').value = id;
                $('standardupload_parentid').value = parentid;
                $('standardupload_attuse').value = attuse;
                $('standardupload_updatediv').value = responsediv;
                sendStandardForm('form_attachmentaction', responsediv);
            }
        });
}