document.observe('dom:loaded', function() {   
    $$('.toggle').each(function(elm) {
    	if( elm.value == "" ) {
    		elm.value = elm.title;
    	}
        elm.observe('focus', function() {
            if (elm.value == elm.title) {
                elm.value = '';
            }
        }).observe('blur', function() {
            if (elm.value == '') {
                elm.value = elm.title;
            }
        });
    });

    $$('a[rel="external"]').each(function(link){
		if(link.readAttribute('href') != '' && link.readAttribute('href') != '#'){
				link.writeAttribute('target','_blank');
	    }
    });    
    
    $$('a.arrow-down').each( function(elm) {
		var button = elm.previous('button');
		var addTo = elm.up().next();

		addTo.observe("mouseover", this.show).observe("mouseout", function(event) {
			var target  = event.relatedTarget || event.toElement;
			
			if(target) {
				if( target == this || target.descendantOf(this) ) {
					return;
				}
			}
			
		});		
	
    	elm.observe("click", function(event) {
    		$$('.add-to-wrap').invoke('hide');
    		$$('.open').invoke('removeClassName', 'open');
    		
    		$A([button, this]).invoke('addClassName', 'open');
    		addTo.show();
    	});
    });
    
	$(document.body).observe('click', function(event) {
		var elm = event.element();
		
		if (elm.up('.add-to')) {
			return;
		}
		
		$$('.add-to-wrap').invoke('hide');
		$$('.open').invoke('removeClassName', 'open');
	});    
    
    $$('a.add-to-cart', 'a.add-to-wishlist').each( function(elm) {
    	elm.observe("click", function(event) {
            event.stop();
    		var submitForm = elm.up('form.add-to');
    		submitForm.action = this.href;
    		submitForm.submit();
    	});
    });
    

    /**
     * Inner tabs
     */
	$$('.inner-tabs a').each(function (elm) {
		elm.observe('click', function (event) {
            APP.selectTab(elm.rel.replace("tab-", ""), elm);
		});
	});


    /**
     * Select tab if location hash available
     */
    APP.selectTab(window.location.hash.replace("#", ""));
    
});

Object.extend(APP, {
    selectTab: function (tab, trigger) {
        var id      = 'tab-' + tab;
        var element = $(id);

        if (element) {
            $$('.inner-tabs li').invoke('removeClassName', 'selected');
            $$('.inner-tab').invoke('hide');

            element.show();

            if (trigger) {
                trigger.up('li').addClassName('selected');
            } else {
                $$('.inner-tabs a').find(function (elm) {
                    return elm.rel == id;
                }).up('li').addClassName('selected');
            }

            window.location.hash = '#' + tab;
        }
    },

    removeTableRow: function (event) {
        event.stop();

        var row   = event.element().up('tr');
        var table = row.up('table');

        row.remove();

        if (table.hasClassName('striped')) {
            table.stripe();
        }
    },

    colorPickerSelect: function (element, color) {
        element.color.fromString(color);
    }
});

APP.addGalleryItem = function (item) {
    var template = new Template(
        '<div class="gallery-item">'+
            '<div class="overlay" style="display: none;"></div>'+
            '<img src="#{url}" alt="" />'+
            '<div class="buttons inline">'+
                '<a href="javascript:" class="negative right" rel="#{name}">'+
                    '<img src="' + APP.path.images + 'ico/cancel.png" alt="" />'+
                    'Sterge'+
                '</a>'+
                '<a href="javascript:" class="set-default" rel="#{name}">'+
                    'Principala'+
                '</a>'+
                '<div class="clear"></div>'+
            '</div>'+
        '</div>'
    );

    var container = $('item-gallery');

    container.down('.message-info').hide();
    container.insert({bottom: template.evaluate(item)});

    item = container.select('.gallery-item').last();
    item.down('a.set-default').observe('click', APP.setDefaultProductImage);
    item.down('a.negative').observe('click', APP.removeProductImage);
};

APP.setDefaultImage = function (event) {
    event.stop();

    var element     = event.findElement('a');
    var galleryItem = element.up('.gallery-item');
    var overlay     = galleryItem.down('.overlay');

    overlay.setOpacity(0.7).show();

    new Ajax.Request(APP.setDefaultImageURL, {
        parameters: {image: element.rel},
        onSuccess: function (transport) {
            var response = transport.responseText.evalJSON();

            $$('.gallery-item').invoke('removeClassName', 'default');
            galleryItem.addClassName("default");
            overlay.hide();

            if (response.type == 'success') {
                APP.growler.growl("Imaginea a fost stabilita ca principala", {header: "Confirmare"});
            } else {
                APP.growler.growl("Imaginea nu a putut fi stabilita ca principala", {header: "Eroare"});
            }
        }
    });
};

APP.removeImage = function (event) {
    event.stop();

    var element     = event.findElement('a');
    var galleryItem = element.up('.gallery-item');
    var overlay     = galleryItem.down('.overlay');

    if (confirm("Sunteti sigur(a)?")) {
        overlay.setOpacity(0.7).show();

        new Ajax.Request(APP.removeImageURL, {
            parameters: {image: element.rel},
            onSuccess: function (transport) {
                var response = transport.responseText.evalJSON();

                if (response.type == 'success') {
                    galleryItem.remove();
                    APP.growler.growl("Imaginea a fost stearsa", {header: "Confirmare"});
                } else {
                    APP.growler.growl("Imaginea nu a putut fi stearsa", {header: "Eroare"});
                }

                if ($$('.gallery-item').size() == 0) {
                    $('item-gallery').down('.message-info').show();
                }
            }
        });
    }
};

APP.addFile = function (item) {
    item.shortname = item.name.truncate(55);

    var template = new Template(
        '<div class="file">\
            <a href="#{url}" title="#{name}" class="ico ico-#{extension}" target="_blank">#{shortname}</a>\
            <a href="javascript:" title="Sterge fisier" class="ico ico-delete" rel="#{name}">Sterge fisier</a>\
            <p class="details">\
                Size: <span class="size">#{size}</span>,\
                Date: <span class="time">#{time}</span>\
            </p>\
        </div>'
    );

    var container = $('files');

//    container.down('.message-info').hide();
    container.insert({bottom: template.evaluate(item)});

    item = container.select('div').last();
    item.down('a.ico-delete').observe('click', APP.removeItemFile);

//    container.up('table').stripe();
};

APP.removeItemFile = function (event) {
    event.stop();
    var element = event.findElement('a');
    var file = element.up('div');

    if (confirm("Sunteti sigur(a)?")) {
        new Ajax.Request(APP.removeFileURL, {
            parameters: {file: element.rel},
            onSuccess: function (transport) {
                var response = transport.responseText.evalJSON();

                if (response.type == 'success') {
                    file.remove();
                    //APP.growler.growl("Fisierul a fost sters", {header: "Confirmare"});

//                    $('files').up('table').stripe();
                } else {
//                    APP.growler.growl("Fisierul nu a putut fi sters", {header: "Eroare"});
                }

                if ($('files').select('div').size() == 1) {
                    $('files').down('.message-info').show();
                }
            }
        });
    }
};

APP.addRelatedProduct = function (item) {
    var template = new Template(
        '<tr id="product-#{id}">\
            <td>#{id}</td>\
            <td>#{name}</td>\
            <td>#{category}</td>\
            <td><a href="javascript:" title="Sterge legatura" class="ico ico-delete" rel="#{id}">Sterge legatura</a></td>\
            <td></td>\
        </tr>'
    );

    var container = $('related-products');

    container.down('.message-info').hide();
    container.insert({bottom: template.evaluate(item)});

    item = container.select('tr').last();
    item.down('a.ico-delete').observe('click', APP.unsetRelatedProduct);

    container.up('table').stripe();
};

APP.unsetRelatedProduct = function (event) {
    event.stop();
    var element = event.findElement('a');
    var product = element.up('tr');

    if (confirm("Sunteti sigur(a)?")) {
        new Ajax.Request(APP.unsetRelatedProductURL, {
            parameters: {id: element.rel},
            onSuccess: function (transport) {
                var response = transport.responseText.evalJSON();

                if (response.type == 'success') {
                    product.remove();
                    APP.growler.growl("Legatura intre cele doua produse a fost stearsa", {header: "Confirmare"});

                    $('related-products').up('table').stripe();
                } else {
                    APP.growler.growl("Legatura intre cele doua produse nu a putut fi stearsa", {header: "Eroare"});
                }

                if ($('related-products').select('tr').size() == 2) {
                    $('related-products').down('.message-info').show();
                }
            }
        });
    }
};

APP.removeRelatedProduct = function (item) {
    var row     = $('product-' + item.id);
    var table   = row.up('table');
    var tbody   = table.down('tbody');

    row.remove();
    table.stripe();

    if (tbody.select('tr').size() == 2) {
        tbody.down('.message-info').show();
    }
};

APP.addOrderItem = function (item) {
    var template = new Template(
       '<tr id="#{type}-#{id}">\
            <td>#{code}</td>\
            <td>#{name}</td>\
            <td>\
                <div class="spinner">\
                    <a href="javascript:" title="Plus" class="spinner-plus"></a>\
                    <a href="javascript:" title="Minus" class="spinner-minus"></a>\
                    <input type="text" class="input-t1" name="items[#{type}][#{id}][quantity]" value="#{quantity}" />\
                </div>\
            </td>\
            <td class="numeric">#{price} EUR</td>\
            <td class="numeric">#{vat} EUR</td>\
            <td>\
                <div class="buttons inline right">\
                    <a href="#{removeURL}" rel="#{id}" onclick="return confirm(\'Sunteti sigur(a)\');">\
                        <img src="'+APP.path.images+'ico/cancel.png" alt="" />\
                        Sterge\
                    </a>\
                </div>\
            </td>\
        </tr>'
    );

    if (item.special_price > 0) {
        item.price = item.special_price;
    }

    if (!item.quantity) {
        item.quantity = 1;
    }

    var container = $('order-' + item.type);

    container.down('.message-info').hide();
    container.insert({bottom: template.evaluate(item)});

    item = container.select('tr').last();
    item.down('.spinner').spin();

    container.up('table').stripe();
};

APP.removeOrderItemRow = function (item) {
    var row = $(item.type + '-' + item.id);
    var table = row.up('table');
    var tbody = table.down('tbody');

    row.remove();
    table.stripe();

    if (tbody.select('tr').size() == 2) {
        tbody.down('.message-info').show();
    }
};

APP.updateOrderStats = function (stats) {
    for (var i in stats) {
        var stat = $('order-' + i);
        if (stat) {
            stat.update(stats[i]);
        }
    }
};

