if (typeof _H.DIESEL !== 'object') _H.DIESEL = {};

_H.DIESEL.Gallery   = function() {

    var _galleryId      =  null;
    var _galleryNodes   = [];
    var _galleryCubes   =  32;

    var _effectLinks    = [];
    var _insStructure   = {};
    var _DOMbuilder     = new _H.DOM.Builder();

    var fromPt          = '';
    var toPt            = '';
    var xmlHttpObj      = null;

    return {
		/***********/
        enumerateCube       : function() {
            for (var i=1; i<= _galleryNodes.length; i++) {
                var cube = _galleryId.getElementsByTagName('div')[i-1];
                if (cube.getElementsByTagName('a')[0])
                    cube.getElementsByTagName('a')[0].rel = i;
            }
        },
		/***********/
        disableCube       : function(exception) {
            for (var i=1; i<= _galleryNodes.length; i++) {
                var cube = _galleryId.getElementsByTagName('div')[i-1];
                if (cube.getElementsByTagName('a')[0]) {
                    var nestedlink = cube.getElementsByTagName('a')[0];
                    if (exception !== parseInt(nestedlink.rel, 10)) {
                        _H.DOM.addClass(cube, 'disabled');
                        nestedlink.onclick = function () { return false; }
                    }
                }
            }
        },
		/***********/
        enableCubes      : function(exception) {
            for (var i=1; i<= _galleryNodes.length; i++) {
                var cube = _galleryId.getElementsByTagName('div')[i-1];
                if (cube.getElementsByTagName('a')[0]) {
                        _H.DOM.removeClass(cube, 'disabled');
                }
            }
        },

		/***** crea blocco fullzoom ******/
        setLinkCubes        : function() {

            var _that = this;

            var links = _galleryId.getElementsByTagName('a');
            for (var i=0; i<links.length; i++) {
                if (links[i].className === 'linkeffect') {
                    _effectLinks[_effectLinks.length] = links[i];
                }
            }

            for (var i=0; i<_effectLinks.length; i++) {
                /*_effectLinks[i].onclick = (function(i) {
                    return */
					(function(i) {
						var link_ = _effectLinks[i];
						$(_effectLinks[i]).addEvent('click', function() {
							return fxlink(i, link_);											  
						});
					})(i);
            }
			
			
			/****/
			
			var fxlink = function(i, _this) {
					
                        var _tl = _this;
                        var rel = _this.rel;
                        var title = _this.title;
                        var storeLink = _this.href;
                        var nameItem = _this.title;
                        _that.disableCube(rel);

                        /* positioning big Cube */
                        var order = parseInt(_this.rel, 10);
                        var classY = (order <= _galleryCubes/2)? 'top' : 'bottom'
                        var classX = (order in {
                            '6' : 6,    '7' : 7,
                            '13': 13,   '14': 14,
                            '20': 20,   '21': 21,
                            '27': 27,   '28': 28
                        })? 'right' : 'left';

                        /* select bigger image */
						
                        var img = _this.getElementsByTagName('img')[0];
                        imgPath = img.src.replace(/^(.+\/).+$/, function(url, uri) { return uri });
                        imgName = img.src.replace(/^.+\//,'')
                        var imgNew = [imgPath, "zoom/", imgName].join('');
                        var imgMagnified = [imgPath, "zoom/z", imgName].join('');

                        /* append the whole DOM structure into parent DIV */
                        var parentDiv = _this.parentNode.parentNode;
                        var insStructure  = {};
                        parentDiv.className = parentDiv.className + ' current';
						
						var detailslink = {};
						var k = 0;
						var activeId = 'dettaglioJeans';
						var boxpoints = _H.DIESEL.detailBoxes[order]; 
						
						for (point in boxpoints) {
							
							if (boxpoints.hasOwnProperty(point) && boxpoints[point]['positionY']) {
								
								
								k++;
								detailslink['a~' +k ] = {
									'id'	: 'punto'+ k,
									'class'	:	boxpoints[point]['sex'],
									'rel'	: k,
								   'href' : '#',
								   'style'  : ['top: ', boxpoints[point]['positionY'], "px; left: ", boxpoints[point]['positionX'], 'px;'].join(''),
								   "onmouseover"   : function() {
													
													activeId = activeId + _this.rel;
													/*if(document.getElementById(activeId)){
														document.getElementById(activeId).style.display='block';
													}
													else{*/
													openDetailBlock(boxpoints[this.rel], this.rel);
													//}
													activeId = 'dettaglioJeans';
								  					 },
									"onmouseout"   : function() {
													
													closeDetailBlock(this.rel);
								  					 }
										
								};
								
								
							}
					
						};
						
						var seeAlso = {};
						var alsopoints = _H.DIESEL.detailBoxes[order]['also']; 
						var y = 0;
						for(point in alsopoints){
							if (alsopoints.hasOwnProperty(point)) {
								y++;
								
								seeAlso['a~'+y] = {
									'href'	: '#',
									'id'	: 'also' + y,
									'rel'	: alsopoints[point]['linkAlso'],
									'class'	: 'singleSee',
									
									'img'	: {
										'src'	: _H.DIESEL.detailBoxes['alsoFolder'] + alsopoints[point]['srcAlso']
									},
									'onclick': function() {
													_that.closeBigCube(rel, _tl);
													$(_effectLinks[this.rel]).fireEvent('click');

												}
								};
								//seeAlso['br']	={};
							}
						};


                        if (!(/#$/).test(storeLink)) {
                            insStructure = {
                                "div"   : {

                                    "id"    : "fullzoom",
									"class"	: "displayed" + order,

                                    "ins": {
                                        "id"    : "currentins",
                                        "class" : [classY, classX].join(" "),

                                        "p"   : {
                                            "id"     : "store_zoom",
                                            "a"      : {
                                                "href"      : storeLink,
                                                "text"      : "Buy",
												"target"	: (typeof targetBlank === "undefined")? "_self":"_blank",
                                                "onclick"   : function() {
                                                    if (pageTracker) {
                                                        pageTracker._trackPageview(["/track/", fromPt,"_to_", toPt].join(""));
                                                    }
                                                }
											
                                            },

                                            "span" : {
                                                "text"      : nameItem
                                            }
											
                                        },

                                        "img~1"   : {
                                            "id"        : "current_zoom",
                                            "class"     : "dragme",
                                            "src"       : "",
                                            "onerror"   : function() { _this.style.display = 'block'; },
                                            "longdesc"  : imgMagnified
                                        },
										
										"div~1" : detailslink,
										
										"div~2"	: {
											"class"		: "alsoCont",
											"text"		: "View Also",
											"div"		: seeAlso
											
										},

                                        "span"          : {
                                            "id"        : "cntdetail"
                                        },
										

                                        "a~1"   : {
                                            "id"            : "close_zoom",
                                            "text"          : "Close",
                                            "onclick"       : function() {
                                                return _that.closeBigCube(rel, _tl);
                                            }
                                        }

                                    }
                                }
                            }
                        }
                        else {
                            insStructure = {
                                "div"   : {

                                    "id"    : "fullzoom",


                                    "ins": {
                                        "id"    : "currentins",
                                        "class" : [classY, classX].join(" "),


                                        "p"   : {
                                            "id"            : "store_zoom",
                                            "text"          : nameItem
                                        },

                                        "img~1"   : {
                                            "id"        : "current_zoom",
                                            "class"     : "dragme",
                                            "src"       : "",
                                            "onerror"   : function() { _this.style.display = 'block'; },
                                            "longdesc"  : imgMagnified
                                        },

                                        "span"          : {
                                            "id"        : "cntdetail"
                                        },


                                        "a~1"   : {
                                            "id"            : "close_zoom",
                                            "text"          : "Close",
                                            "onclick"       : function() {
                                                return _that.closeBigCube(rel, _tl);
                                            }
                                        }

                                    }
                                }

                            }
                        }
						
						if(!document.getElementById('fullzoom') || document.getElementById('fullzoom').className != 'displayed' + order){

                        	_DOMbuilder.create(insStructure).append('after', 'gallerycnt');
						}
						
						/*else{
							document.getElementById('fullzoom').className.width="978px";
							document.getElementById('fullzoom').className.height="489px";
						}*/
						
						
						//}

                        //_H.DOM.$('mgnloading').style.display = 'none';
                        _H.DOM.$('fullzoom').style.border = '1px #e9e9e9 solid';
                        _H.DOM.$('fullzoom').style.filter = 'alpha(opacity=100)';


                        /* moo effect */
                        var cubeEffect      = new Fx.Morph(_H.DOM.$('fullzoom'), {
                                duration: 450, wait: true, transition: Fx.Transitions.Quad.easeOut
                        });
                        var imgEffect       = new Fx.Morph(_H.DOM.$('current_zoom'), { duration: 600 });
                        var imgPanning      = new Fx.Morph(_H.DOM.$('current_zoom'), { duration: 4000, transition: Fx.Transitions.Quad.easeOut });


                        cubeEffect.start({
                            'width'     : '977px',
                            'height'    : '489px',
                            'backgroundColor'   : '#fff'
                        }).chain(
                            function() {
                                _H.DOM.$('fullzoom').setStyle('opacity', 1);
                                _H.DOM.$('current_zoom').setStyle('bottom', 0);
                                _H.DOM.$('current_zoom').setStyle('display', 'block');
                               // _H.DOM.$('current_zoom').setStyle('visibility', 'hidden');
								
								

                                _H.DOM.$('store_zoom').style.display = 'block';
                                _H.DOM.$('close_zoom').style.display = 'block';

                                //if (!(Browser.Engine.trident)) {
                                //}

                                /*_H.DOM.$('current_zoom').onload = function() {

                                    //imgEffect.start({'opacity': '1' });


                                    var ww = (_this.width - 978) * -1;
                                    var hh = (_this.height - 577) * -1;

                                    _this.style.left = (parseInt(ww/2, 10))+'px';
                                    //_this.style.top  = (parseInt(ww/2, 10))+'px'; // per visualizzare lo zoom centrato
                                    //_this.style.top  = '0';                        // per visualizzare lo zoom in alto


                                    if (_this.height > 650) { // se c'è abbastanza da scrollare....

                                        _this.style.top  = [hh, 'px'].join('');        // per visualizzare lo zoom in basso
                                        _H.DOM.$('current_zoom').setStyle('visibility', 'visible');

                                        imgPanning.start({'top': '0' }).chain(function() {
                                            if (!(Browser.Engine.trident)) {
                                                $$('#current_zoom').each(function(drag){
                                                    new Drag(drag, {
                                                        onDrag: function(el){
                                                            if (el.offsetTop < hh) el.style.top = hh+'px';
                                                            if (el.offsetTop > 0) el.style.top = '0px';
                                                            if (el.offsetLeft < ww) el.style.left = ww + 'px';
                                                            if (el.offsetLeft > 0) el.style.left = '0px';
                                                        }
                                                    });
                                                });
                                            }
                                        });
                                    }
                                    else { // ci sono meno di 100 px da scrollare
                                        _this.style.top = '0';        // per visualizzare lo zoom in alto
                                        _H.DOM.$('current_zoom').setStyle('visibility', 'visible');

                                        if (!(Browser.Engine.trident)) {
                                            $$('#current_zoom').each(function(drag){
                                                new Drag(drag, {
                                                    onDrag: function(el){
                                                        if (el.offsetTop < hh) el.style.top = hh+'px';
                                                        if (el.offsetTop > 0) el.style.top = '0px';
                                                        if (el.offsetLeft < ww) el.style.left = ww + 'px';
                                                        if (el.offsetLeft > 0) el.style.left = '0px';
                                                    }
                                                });
                                            });
                                        }
                                    }
                                };*/

                                _H.DOM.$('current_zoom').src = _H.DOM.$('current_zoom').longDesc;

                            }
                        );

                        return false;

                  // }
					
					
					
                };			
			
			/****/

        },

		/***********/
        openMagnifiedImage  : function(srcMagnified) {

            var _that = this;

            _H.DOM.$('cntdetail').style.display  = 'block';
            _H.DOM.$('current_zoom').style.visibility = 'hidden';

            // overwrite zoom btn handler
            var zoombtn = _H.DOM.$('mgnbutton_closed');
            _H.DOM.$('mgnbutton_closed').id = 'mgnbutton_opened';
            zoombtn.onclick = function() {
                return _that.closeMagnifiedImage();
            };

            return false;
        },
		/***********/
        closeMagnifiedImage  : function(node) {
            var _that = this;

            _H.DOM.$('current_zoom').style.visibility = 'visible';
            _H.DOM.$('cntdetail').style.display  = 'block';

            // overwrite zoom btn handler
            var zoombtn = _H.DOM.$('mgnbutton_opened');
            _H.DOM.$('mgnbutton_opened').id = 'mgnbutton_closed';
            zoombtn.onclick = function() {
                return _that.openMagnifiedImage();
            };

            return false;
        },

		/***********/

        closeBigCube        : function(i, tl) {

            var _that = this;
            /* moo effect */
            var cubeEffect      = new Fx.Morph(_H.DOM.$('fullzoom'), {
                    duration: 450, wait: true, transition: Fx.Transitions.Quad.easeOut
            });

            var imgTobeFaded    = _H.DOM.$('current_zoom');
            var imgEffect       = new Fx.Morph(imgTobeFaded, { duration: 600 });


            //_H.DOM.$('currentins').style.backgroundImage  = 'none';

            imgEffect.start({
                'backgroundColor'   : '#fff'
                //'opacity'     : '0'
            }).chain(
                function() {
                    _H.DOM.$('store_zoom').style.display = 'block';
                    _H.DOM.$('close_zoom').style.display = 'block';
                    _H.DOM.$('current_zoom').style.display = 'block';
                    cubeEffect.start({
                        'width'     : '0',
                        'height'    : '0'
                    }).chain(function() {
                        //_H.DOM.$('fullzoom').style.border = '0';
                        //alert(tl.rel);

                        var parentDiv = tl.parentNode.parentNode;
                        //parentDiv.removeChild(_H.DOM.$('currentins'));
                        _H.DOM.removeClass(parentDiv, 'current');
                        _that.enableCubes();
                        _that.setLinkCubes();
						

                    })
                }
            );


            return false;
        },
		/***********/

        init                : function(idg) {

            if (!_H.DOM.$(idg)) return;

            _galleryId = _H.DOM.$(idg);
            _galleryNodes = _galleryId.getElementsByTagName('div');

            /* enumerate Cubes */
            this.enumerateCube();

            /* set Cube links */
            this.setLinkCubes();

        },
		/***********/
        fileexists      : function(file) {

            var size = 0;
            if (!(xmlHttpObj)) {
                if (typeof XMLHttpRequest != "undefined") {
                    xmlHttpObj = new XMLHttpRequest();
                }
                else {
                    try {
                        xmlHttpObj = new ActiveXObject("Msxml2.XMLHTTP");
                    } catch (e) {
                        try {
                            xmlHttpObj = new ActiveXObject("Microsoft.XMLHTTP");
                        }
                        catch (e) {
                            xmlHttpObj = null;
                        }
                    }
                }
            }

            if (xmlHttpObj) {
                xmlHttpObj.open("HEAD", file, false);
                xmlHttpObj.send(null);
                return (xmlHttpObj.status == 200 || xmlHttpObj.status == 304);
            }
        },

        setTrackerFrom      : function(fPt) {
            fromPt       = fPt;
        },

        setTrackerTo      : function(tPt) {
            toPt         = tPt;
        }

    }
}






/*********************************/

_H.DIESEL.currentFit = '';

_H.DIESEL.cubeOpened = false;

_H.DIESEL.setFitLinks = function() {

    if (!_H.DOM.$('choosefit')) return false;
	
	var filtroFit=".*";
	var filtroAge=".*";
	var filtroSex=".*";
	var combo="";
	var comboBoth="";


    var cubes = _H.DOM.$('gallerycnt').getElementsByTagName('div');
    var hideAllCube = function() {
        for (i=0; i<cubes.length; i++) {
            _H.DOM.addClass(cubes[i], 'disabled');
        }
    }
    
    var showAllCube = function() {
        for (i=0; i<cubes.length; i++) {
            _H.DOM.removeClass(cubes[i], 'disabled');
        }
    }
    
    var showCubeFit = function(fit, fit2) {
			for (i=0; i<cubes.length; i++) {
			
					if (_H.DOM.hasClass(cubes[i], fit) || _H.DOM.hasClass(cubes[i], fit2)) {
						_H.DOM.removeClass(cubes[i], 'disabled');
					}
					else
						_H.DOM.addClass(cubes[i], 'disabled');
			} 
    }
	
	 var showCubeFit2 = function(fit) {
			for (i=0; i<cubes.length; i++) {
				
				
				
				if (!_H.DOM.hasClass(cubes[i], fit)) {
					_H.DOM.addClass(cubes[i], 'disabled');
				}
				else
					_H.DOM.removeClass(cubes[i], 'disabled');
		}
    }

    var switcher = _H.DOM.$('choosefit').getElementsByTagName('a');
    var len = switcher.length;
    while (len--) {
        var thissw = switcher[len];   
        thissw.onclick = (function() {
            return function() {
                
               
				
				
                
                if ((this.rel !== 'erase') && (!_H.DIESEL.cubeOpened)) {
					if(this.className != 'eraser'){
						this.className = 'enabled';
					}
					
							
					if(this.name == "fit"){
						filtroFit = this.rel;
						if(this.rel == "slim"){
							switcher[2].className = '';
							switcher[1].className = '';
						}
						else if(this.rel == "regular_slim"){
							switcher[0].className = '';
							switcher[2].className = '';
						}else if(this.rel == "regular"){
							switcher[1].className = '';
							switcher[0].className = '';
						}
					}
					else if(this.name == "age"){
						filtroAge = this.rel;
						if(this.rel == "junior"){
							switcher[4].className = '';
						}
						else{
							switcher[3].className = '';
						}
					}
					else if(this.name == "sex"){
						filtroSex = this.rel;
						if(this.rel == "male"){
							switcher[5].className = '';
						}
						else{
							switcher[6].className = '';
						}
						switcher[7].className = 'eraser';
					}

					combo = filtroFit+" "+filtroSex+" "+filtroAge;
					comboBoth = filtroFit+" both "+filtroAge;
					showCubeFit(combo, comboBoth);
					
                }
                else {
					filtroFit=".*";
					filtroSex=".*";
					filtroAge=".*";
					for(w=0;w<7;w++){
							switcher[w].className = '';
						}
                    showAllCube();
                };
				
                return false;
            }
        })();
    };
}


    
_H.DIESEL.resetFitState = function() {
    if (_H.DIESEL.currentFit !== '') {
        var cubes = _H.DOM.$('gallerycnt').getElementsByTagName('div');
        for (i=0; i<cubes.length; i++) {
            if (!_H.DOM.hasClass(cubes[i], _H.DIESEL.currentFit)) {
                _H.DOM.addClass(cubes[i], 'disabled');
            }
        }    
    }
}


openDetailBlock = function(punto, which){
	var _DOMbuilder     = new _H.DOM.Builder();
	var posX = parseInt(punto['positionX'], 10) + 35;
	var posY = parseInt(punto['positionY'], 10) - 45;
	var _detailsFolder = _H.DIESEL.detailBoxes['detailsFolder'];
	var srcImage	= _detailsFolder + punto['detail'];
	var strutturaDettaglio ={
		'div' :{
			'id' : 'dettaglioJeans' + which,
			'class'	:'dettaglioJeans',
			'style'  : ['top: ', posY, "px; left: ", posX, 'px;'].join(''),
			'img'	: {
				'src'	: srcImage
			}
		}
	}
	
	_DOMbuilder.create(strutturaDettaglio).append('after', 'current_zoom');
	
}


closeDetailBlock = function(which){

	document.getElementById('dettaglioJeans'+which).style.display='none';
	
}

/*********************************/




/*********************************/


DomLoad.load(function() {
    _H.DIESEL.DG = new _H.DIESEL.Gallery();
    _H.DIESEL.DG.init('gallerycnt');
	_H.DIESEL.setFitLinks();
});