var scrollTo = null;
var detached_controller_options = {};
// var failed = false;

function selectedProduct( product, manufacturer_hardware_hidden ) {
    jQuery( '.section:not(.section.all)' ).slideUp();
    jQuery( 'select.product_version' ).attr( 'name', '' );
    jQuery( 'select.platform' ).attr( 'name', '' );
    if( !manufacturer_hardware_hidden ) reAppendControllerOptions();
	switch ( product ) {
        case 'scratchlive':
            jQuery( 'select.product_version.scratchlive' ).attr( 'name', 'product_version' );
            break;
        case 'itch':
            jQuery( 'select.product_version.itch' ).attr( 'name', 'product_version' );
            break;
        case 'dj-intro':
            jQuery( 'select.product_version.dj-intro' ).attr( 'name', 'product_version' );
            break;    
        case 'video-sl':
            jQuery( 'select.product_version.video-sl' ).attr( 'name', 'product_version' );
            jQuery( 'select.product_version_second.video-sl' ).attr( 'name', 'product_version_second' );
            break;
        case 'thebridge':
            jQuery( 'select.product_version.thebridge' ).attr( 'name', 'product_version' );
            jQuery( 'select.product_version_second.thebridge' ).attr( 'name', 'product_version_second' );
            break;
        case 'pitchntime-pro':
            jQuery( 'select.product_version.pitchntime-pro' ).attr( 'name', 'product_version' );
            jQuery( 'select.platform.pitchntime-pro' ).attr( 'name', 'platform' );
            break;
        case 'pitchntime-le':
            jQuery( 'select.product_version.pitchntime-le' ).attr( 'name', 'product_version' );
            jQuery( 'select.platform.pitchntime-le' ).attr( 'name', 'platform' );
            break;
        case 'pitchntime-fe':
            jQuery( 'select.product_version.pitchntime-fe' ).attr( 'name', 'product_version' );
            jQuery( 'select.platform.pitchntime-fe' ).attr( 'name', 'platform' );
            break;
        case 'raneseries-dynamics':
            jQuery( 'select.product_version.raneseries-dynamics' ).attr( 'name', 'product_version' );
            jQuery( 'select.platform.raneseries-dynamics' ).attr( 'name', 'platform' );
            break;    
        case 'raneseries-equalizers':
            jQuery( 'select.product_version.raneseries-equalizers' ).attr( 'name', 'product_version' );
            jQuery( 'select.platform.raneseries-equalizers' ).attr( 'name', 'platform' );
            break; 
    }

	if( product == 'itch' ){
		jQuery( "#requestdetails .edit .label, #requestdetails .edit .value" ).css( 'height', '50px' );
		jQuery( "#requestdetails .edit .label.bottom, #requestdetails .edit .value.bottom" ).css( 'height', '23px' );
	}
	else{
		jQuery( "#requestdetails .edit .label,#requestdetails .edit .value" ).css( 'height', '23px' );
	}
	selectedComputer( jQuery( "#requestdetails select[name=computer]").val() );
	
    jQuery( '.section.' + product ).slideDown();
}

function selectProduct( software_product, hardware_partner ) {
	if( software_product && software_product != '' ) {
		jQuery( '.section.product select option[value=' + software_product + ']' ).attr( 'selected', true );
	}
	if( hardware_partner && hardware_partner != '' ) {
		reAppendControllerOptions();
		detached_controller_options.software_product = software_product;
		detached_controller_options.options = jQuery( '.section.controller.' + software_product + ' select option:not(.' + hardware_partner + ').manufacturer' ).detach();
		if( parseInt( jQuery( '.section.controller.' + software_product + ' select option.manufacturer.' + hardware_partner ).size() ) == 1 )
			jQuery( '.section.controller.' + software_product + ' select' ).val(
				jQuery( jQuery( '.section.controller.' + software_product + ' select option.manufacturer.' + hardware_partner ).get( 0 ) ).val()
			);
	}
}

function reAppendControllerOptions(){
	if( detached_controller_options.software_product && detached_controller_options.options )
		detached_controller_options.options.appendTo( jQuery( '.section.controller.' + detached_controller_options.software_product + ' select' ) );
}

function setScrollTo( value ) {
	if(scrollTo == null) {
		scrollTo = value;
	}
}

function selectedComputer( computer ) {
    if( computer ){
		jQuery( '.section.pc, .section.mac' ).slideUp();
		jQuery( '.section.pc select, .section.mac select' ).attr( 'name', '' );
		jQuery( '.section.' + computer ).slideDown();
		jQuery( '.section.' + computer + ' select' ).attr( 'name', 'os_version' );
	}
}

function selectedPlatform( platform ) {
    if ( platform != 'venue' ) {
        jQuery( '.section.computer' ).slideDown();
    }
}

// 'Task Tracker'-only Help Request editing functions
function editHelpRequest(){
	jQuery( "#helprequesteditbutton" ).fadeOut( 'fast' );
	jQuery( "#savecancelhelprequestbuttons" ).fadeIn( 'fast' );
	jQuery( "#requestdetails .view" ).fadeOut( 'fast', function(){ jQuery( "#requestdetails .edit" ).fadeIn( 'fast' ); } );
}

function cancelHelpRequestEdit(){
	jQuery( "#savecancelhelprequestbuttons" ).fadeOut( 'fast' );
	jQuery( "#helprequesteditbutton" ).fadeIn( 'fast' );
	jQuery( "#requestdetails .edit" ).fadeOut( 'fast', function(){ jQuery( "#requestdetails .view" ).fadeIn( 'fast' ); } );
}

function saveHelpRequestEdit( thread_id ){
	fields = [ 'product', 'computer', 'hardware', 'controller', 'fx_controller', 'dj-intro-controller' ];
	vars = { thread_id: thread_id };
	for( i in fields )
		vars[fields[i]] = jQuery( "#requestdetails .edit select[name=" + fields[i] + "]" ).val();
	vars.product_version = jQuery( "#requestdetails .edit select.product_version." + vars.product ).val();
	vars.os_version = jQuery( "#requestdetails .edit select.os_version." + vars.computer ).val();
	vars.serial_number = jQuery( "#requestdetails .edit input[name=serial_number]" ).val();

	jQuery( "#savecancelhelprequestbuttons .button" ).hide();
	jQuery( "#requestdetails #savecancelhelprequestbuttons .saving" ).show();

	jQuery.post(
        '/parts/help/request/update',
        vars,
        function( responseText ) { 
			Result = eval( responseText );
			jQuery( "#savecancelhelprequestbuttons .button" ).show();
			jQuery( "#requestdetails #savecancelhelprequestbuttons .saving" ).hide();
            if ( Result[0] != 'success' ) {
                alert( 'Error: ' + Result[0] );
				return;
            }
			jQuery( "#requestdetails .view" ).html( Result[1] );
            cancelHelpRequestEdit();
        }
    );
}

function requestSubmitted( results ) {
    if ( results[0] == 'success' && results[1] == 'thread created' ) {
        jQuery( 'html,body' ).animate( { scrollTop:0 } );
        jQuery( '.section:not(.submit)' ).slideUp();
        jQuery( '.section.submit .summary' ).html( '<b>Your help request has been submitted and a support discussion started.</b> <a href="/forum/discussion/' + results[2] + '">Click here to view your support discussion</a>.' );
        jQuery( '.section.submit input' ).hide();
        submitted = true;
    } else if ( results[0] == 'name taken' ) {
        jQuery( '.section.submit input' ).show().attr( 'disabled', false ).val( 'Submit your help request' );
    } else if ( results[0] == 'need display name' ) {
        jQuery( '.section.displayname' ).slideDown();
        jQuery( '.section.displayname .summary.incomplete.validate' ).slideDown();
        jQuery( '.section.submit input' ).show().attr( 'disabled', false ).val( 'Submit your help request' );
    } else if ( results[0] == 'display name taken' ) {
        jQuery( '.section.submit .summary' ).html( '<b>That display name has already been taken by someone else.</b> Please select another.' );
        jQuery( '.section.displayname' ).slideDown();
        jQuery( '.section.displayname .summary.taken.validate' ).slideDown();
        jQuery( '.section.submit input' ).show().attr( 'disabled', false ).val( 'Submit your help request' );
    }
}

