/*
    28.03.2007, mJ:	Uncheck Tracks after purchase

    29.03.2007, mJ:	Use updateShopcart instad of loadXMLDoc
                    Buy now works
    
    09.04.2007, mJ:	Corrected capitalisation

    26.11.2007, mJ:	new popup text

    06.02.2008, mJ:	added "as download" to popup text
    
    12.10.2008, mJ:	toggleChildWorks()
    
    15.10.2008, mJ:	selectFormat()
    
    28.11.2008, mJ:	buyNowProduct(): variant-abhängige Popup-Texte
    
    01.12.2008, mJ:	buyNowTracks(): Popup-Meldung entfernt; Download MP3 320 dazu
    
    29.01.2009, mJ: affiliate_id berücksichtigen
    
    18.06.2009, mJ:	affiliate_id checked & fixed
    
    27.08.2009, mJ:	Localisation
    
    29.08.2009, mJ:	111
    
    17.09.2009, mJ:	html_entity_decode() for all alerts
*/




// to be changed by Localisation
var BUY_STRINGS = {	
    DIGITAL:	"Buy album as Download MP3 320?",
    LOSSLESS:	"Buy album as Download FLAC Lossless?",
    PHYSICAL:	"Buy album as Mail Order?",
    STREAM:		"Buy album as 7-Day Stream?"
};

var UPDATING111 = "Updating 111 cart...";


var UPDATING = "Updating shopping cart...";
var SELECT_FORMAT = "Please select a format!";
var SELECT_TRACKS = "Please select one or more tracks!";
var ADD_ONE_ITEM = "Add one item to cart?";
var ADD_ITEMS = "Add _X_ items to cart?";

var BUY_TRACK = "Buy one track as Download MP3 320?";
var BUY_TRACKS = "Buy _X_ tracks as Download MP3 320?";


function html_entity_decode( str )
{
	try {
		var  tarea=document.createElement('textarea');
		tarea.innerHTML = str; return tarea.value;
		tarea.parentNode.removeChild(tarea);
	} catch(e) {
		//for IE add <div id="htmlconverter" style="display:none;"></div> to the page
		document.getElementById("htmlconverter").innerHTML = '<textarea id="innerConverter">' + str + '</textarea>';
		var content = document.getElementById("innerConverter").value;
		document.getElementById("htmlconverter").innerHTML = "";
		return content;
	}
}

function updateShopcart111Callback( text )
//	callback für shopcart-actions
//	aktualisiert den div SHOPCART_STATUS und alterted "text"
//	text ist der "returnwert" from add-shopcart.p3p
{
    loadXMLDoc( "/cat/shopcart111-status.p3p", "shopcart111-status" );
    alert( html_entity_decode( text ) );
}


function updateShopcart111( url, message )
//	workhorse
{
    div = document.getElementById( "shopcart111-status" );
    if( div ) {
        div.innerHTML = '<div id="shopcart111-message">' + UPDATING111 + '</div>'
    } else {
        alert( "Div id '" + "shopcart111-status" + "' not found!" );
        return;
    }
        
    loadXMLFunc( url, updateShopcart111Callback );
}


function addToCart111( upc, shopcart_id )
// put checked product in form 'form' into shopping cart
{
    if( !upc ) {
        alert( html_entity_decode( SELECT_FORMAT ) );
        return;
    }
    
	updateShopcart111( "/cat/add-shopcart111.p3p?" +
					"shopcart_id=" + shopcart_id +
					"&art_nr=" + upc,
					'<div id="shopcart111-message">' + UPDATING + '</div>' );
}


function updateShopcartCallback( text )
//	callback für shopcart-actions
//	aktualisiert den div SHOPCART_STATUS und alterted "text"
//	text ist der "returnwert" from add-shopcart.p3p
{
    loadXMLDoc( "/cat/shopcart-status.p3p", "shopcart-status" );
    alert( html_entity_decode( text ) );
}


function updateShopcart( url, message )
//	workhorse
{
    div = document.getElementById( "shopcart-status" );
    if( div ) {
        div.innerHTML = '<div id="shopcart-message">' + UPDATING + '</div>'
    } else {
        alert( "Div id '" + "shopcart-status" + "' not found!" );
        return;
    }
        
    loadXMLFunc( url, updateShopcartCallback );
}


function getArtNr( form )
{
    var art_nr = 0;
    if( !form.fd_art_nr.length ) {
        if( form.fd_art_nr.checked ) {
            return form.fd_art_nr.value;
        } else {
            return 0;
        }
    }
    for( i = 0; i < form.fd_art_nr.length; i++ ) {
        if( form.fd_art_nr[i].checked ) {
            art_nr = form.fd_art_nr[i].value;
            break;
        }
    }
    return art_nr;
}


function addToCartProduct( form, cc2, shopcart_id )
// put checked product in form 'form' into shopping cart
{
    var art_nr = getArtNr( form );
    var affiliate_id = form.affiliate_id.value;
    
    if( !art_nr ) {
        alert( html_entity_decode( SELECT_FORMAT ) );
        return;
    }
    
    if( art_nr || confirm( ADD_ONE_ITEM ) ) {
    
        updateShopcart( "/cat/add-shopcart.p3p?" +
                        "shopcart_id=" + shopcart_id +
                        "&cc2=" + cc2 +
                        "&art_nr=" + art_nr +
                        "&affiliate_id=" + affiliate_id,
                        '<div id="shopcart-message">' + UPDATING + '</div>' );
    }
}




function buyNowProduct( form )
//
{
    var art_nr = getArtNr( form );
    
    if( !art_nr ) {
        alert( html_entity_decode( SELECT_FORMAT ) );
        return;
    }
    
//	alert( art_nr );
    var a = art_nr.split( "_" );
    var popup_text = BUY_STRINGS[ a[a.length-1] ];	
    
    if( confirm( popup_text	 ) ) {
        form.submit();
    }
}


function getArtNrs( form, uncheck )
{
    var fd_art_nr_end = "empty";
    
    if( !form.fd_art_nr_end.length ) {
        if( form.fd_art_nr_end.checked ) {
            fd_art_nr_end = form.fd_art_nr_end.value;
        }
    } else {
        for( i = 0; i < form.fd_art_nr_end.length; i++ ) {
            if( form.fd_art_nr_end[i].checked ) {
                fd_art_nr_end = form.fd_art_nr_end[i].value;
            }
        }
    }
    var art_nrs = Array();
    for( i = 0; i < form.fd_art_nr_start.length; i++ ) {
        if( form.fd_art_nr_start[i].checked ) {
            art_nrs.push( form.fd_art_nr_start[i].value + fd_art_nr_end )
//			alert( form[i].value + fd_art_nr_end );
            if( uncheck ) {
                form.fd_art_nr_start[i].checked = false;
            }
        }
    }
    return art_nrs;
}


function uncheckAll( form )
{
    for( i = 0; i < form.length; i++ ) {
        if( form[i].type == "checkbox" && form[i].checked ) {
            form[i].checked = false;
        }
    }
}


function addToCartTracks( form, cc2, shopcart_id  )
// put all all checked items in form 'form' into shopping cart
// more complicated as we add the variant at the end
{
//	var art_nrs = getArtNrs( form, true );	// uncheck
    var art_nrs = getArtNrs( form );	// don't uncheck
    var affiliate_id = form.affiliate_id.value;
    
    if( art_nrs.length < 1 ) {
        alert( html_entity_decode( SELECT_TRACKS ) );
        return;
    }
    if( 1 || confirm( ADD_ITEMS.replace( "_X_",  art_nrs.length  ) ) ) {
        
        uncheckAll( form );

        updateShopcart( "/cat/add-shopcart.p3p?" +
                        "shopcart_id=" + shopcart_id +
                        "&cc2=" + cc2 +
                        "&art_nrs=" + art_nrs.join( "," ) +
                        "&affiliate_id=" + affiliate_id,
                        '<div id="shopcart-message">' + UPDATING + '</div>' );
    }
}


function buyNowTracks( form )
//	immediately buy tracks
{
    var art_nrs = getArtNrs( form );	// hier nicht unchecken
    if( art_nrs.length < 1 ) {
        alert( html_entity_decode( SELECT_TRACKS ) );
        return;
    }
    
    
    var message = "";
    if( art_nrs.length==1 )
    	message = BUY_TRACK;
    else
    	message = BUY_TRACKS.replace( "_X_", art_nrs.length );
    
    
    if( confirm( message ) ) {
        form.submit();
//		getArtNrs( form, true );        // hier unchecken
        uncheckAll( form );
    }
}


function toggleChildren( button, ids )
//	toggle all children of button
{
    for( i in ids ) {
        elem = document.getElementById( ids[i] );
        if( elem ) {
            elem.checked = button.checked;
        } else {
            alert( "toggleChildren: Cannot find button '" + ids[i] + "'!" );
        }
    }
}


function toggleChildWorks( button, classname )
//	toggle all children of button
{
    $$( classname ).each( function( elem ) {
            elem.checked = button.checked;
        } 
    );
}


var oldtext = "";
// helper functions for format-selecion in buy-album
function selectFormat( format, text )
{
    var elem = $( "album-format-additional-info" );
    if( elem ) {
        if( elem.style.display ) {
//			elem.style.display="none;"
        }
        if( text != oldtext ) {
            oldtext = text;
            
            Effect.BlindUp( 'album-format-additional-info', { 
                    duration: 0.125, 
                    queue: "front",
                    afterFinish: function() { 
                        elem.innerHTML = text;
                        if( text ) {
                            Effect.BlindDown( 'album-format-additional-info', { 
                                    duration: 0.25, 
                                    queue: "end"
                                } );
                                
                        }
                    }
                } 
            );
        }
    }
    if( format == "STREAMP" ) {
        enable_no_stream_style();
    } else {
        disable_no_stream_style();
    }
}


function enable_no_stream_style()
{
    $$( ".no-stream" ).each( 
        function( self ) {
            self.addClassName( "no-stream-style" ) 
        } 
    );
    $$( ".no-stream-info" ).each( 
        function( self ) {
            self.addClassName( "no-stream-info-style" ) 
        } 
    );
}


function disable_no_stream_style()
{
    $$( ".no-stream" ).each( function( self ) {
        self.removeClassName( "no-stream-style" ) } );
    $$( ".no-stream-info" ).each( function( self ) {
        self.removeClassName( "no-stream-info-style" ) } );
}
                

