﻿/*
/*	Dynamic design functions and onLoad events
/*	----------------------------------------------------------------------
/* 	Creates added dynamic functions and initializes loading.
*/
var $j = jQuery.noConflict();

// get real sizes 'width and height'
function get_Area(a,c){var b=0;if(c.toLowerCase()=="width"){b+=isNaN(parseFloat($(a).css("margin-left")))?0:parseFloat($(a).css("margin-left"));b+=isNaN(parseFloat($(a).css("margin-right")))?0:parseFloat($(a).css("margin-right"));b+=isNaN(parseFloat($(a).css("border-left-width")))?0:parseFloat($(a).css("border-left-width"));b+=isNaN(parseFloat($(a).css("border-right-width")))?0:parseFloat($(a).css("border-right-width"));b+=isNaN(parseFloat($(a).css("padding-left")))?0:parseFloat($(a).css("padding-left"));b+=isNaN(parseFloat($(a).css("padding-right")))?0:parseFloat($(a).css("padding-right"));b+=parseFloat($(a).css("width"))}else{b+=isNaN(parseFloat($(a).css("margin-top")))?0:parseFloat($(a).css("margin-top"));b+=isNaN(parseFloat($(a).css("margin-bottom")))?0:parseFloat($(a).css("margin-bottom"));b+=isNaN(parseFloat($(a).css("border-top-width")))?0:parseFloat($(a).css("border-top-width"));b+=isNaN(parseFloat($(a).css("border-bottom-width")))?0:parseFloat($(a).css("border-bottom-width"));b+=isNaN(parseFloat($(a).css("padding-top")))?0:parseFloat($(a).css("padding-top"));b+=isNaN(parseFloat($(a).css("padding-bottom")))?0:parseFloat($(a).css("padding-bottom"));b+=parseFloat($(a).css("height"))}return b};
	//grab class in to first and last element 
function Set_List_Class( $element, $clear ){
	$j( $element ).find('li:first').addClass('first'); 
	$j( $element ).find('li:last').addClass('last');  
	if( $clear )
		$j( $element ).append('<div class="clear">&nbsp;</div>');  
}
	//make DropDown Menu
function SuperFish( $element ){
	
	Set_List_Class( $element, false);
	
	// search current-menu-item in sub-menus
	var $arr = new Array();
	$arr = $j( $element + " > li").find('.current-menu-item');
	if( $arr.length > 0 ){ //takes first element and add class name
		$j( $arr[0] ).parent().parent().addClass("current-menu-item")
	}
	
	// initialise main-menu (jQuery superfish plug-in)
	// -----------------------------------------------
	$j( $element ).superfish({ 		// initialize superfish
		//pathClass:  'current-menu-item',
		delay:       1000,				// one second delay on mouseout 
		animation:   {height:'show'},	// fade-in and slide-down animation 
		speed:       'slow',			// faster animation speed 
		autoArrows:  false,				// disable generation of arrow mark-up 
		dropShadows: false
	});
}	
//---- google analitycs for button submits
function CallPage( $page, $pageAnalitycs ){ //alert( "CallPage("+ $page +","+ $pageAnalitycs+");" );
	/*pageTracker._trackPageview($pageAnalitycs);
	if( $page ){
		location.href='./'+ $page +'/';
	}
	*/
}
//### PRETTYPHOTO ###//
function Pretty_Photo(){
	$j("a[rel^='prettyPhoto']").prettyPhoto({
		deeplinking:false, social_tools:''
	});
};

// ======================================================================
//
//	On document ready functions
//
// ======================================================================

jQuery(document).ready(function() {
	Pretty_Photo();
});
//### VALIDATE | FORMS ###//
function FormContacto(){ //alert( "FormCatalogo()");
	/* Form Catalogo */
	var $id_form = "#frmContacto";
	//$j($id_form + " :input.textInput").val('awe@todo.com');
	$j.metadata.setType("attr", "validate");
	// form validation
	// -------------------------------------------------------------------
	$j( $id_form ).validate({
		messages: {
			c_name: { required: "*This field is required." },
			c_email: { required: "*This field is required.", email:"Please enter a valid email address." },
			c_msg: { required: "*This field is required." }
		}
	});
	
	//-- submit FORM
	$j( $id_form + " button").click( function(e){ e.preventDefault();

		if( $j( $id_form ).valid() ){ 
			$path_load = $j( $id_form + " #url_load").val();
			ajaxSendForm( $id_form, $id_form, $path_load );
			return false;
		}
	});
	
};

// ======================================================================
//	Proceses functions
// ======================================================================
// -------------------------------------------------------------------     
function ajaxSendForm(theForm, $idForm, $file) { //alert( "ajaxSuscribe("+ theForm +", "+ $idForm +", "+ $file +")"); return; 
	$j($idForm+' button').hide();
	$j($idForm+' #loader').fadeIn();	
	var formData = $j(theForm).serialize(),
		$URL = $file,
		note = $j( $idForm+'-msg'),
		result;
	note.hide();
	//alert( formData ); return;
	$j.ajax({
		type: "POST",
		url: $URL,
		data: formData,
		success: function(response) { //alert('response' + response);
			$j($idForm+' #loader').hide();
			var $data = response.split(',');
			if ( $data[0] == 1 ) { //alert('$data[0]='+$data[0]);
				if( $data[1] == "location" ){
					document.location= $data[2];
				}else{
					$j(theForm).animate({opacity: 0},'fast',function(){ 
					$j(theForm).remove();
					note.fadeIn();
					});
				}
			}else{ //alert("else="+response);
				$j($idForm+' button').fadeIn();
				var i = setInterval(function() {
					if ( $j($idForm+' button').is(':visible') ) {
						result = response;
						note.html(result);
						note.fadeIn('slow');
						clearInterval(i);
					}
				}, 40);
			}
		}
	});
	return false;
}



//#	Class: niceGallery #//
//-----------------------------------------------------------------------//
(function($) {
	var NiceGallery =  function ( element, options ){
		$target = $(element); 
		$target_attr = $(element).attr('id') == undefined ? "."+$(element).attr('class') : "#"+$(element).attr('id'); //alert( $target_attr );
		//vars 
		var x_space   = ( options.xspace !== undefined ) ? options.xspace : 0; //alert('x_space'+x_space);
		var y_space   = ( options.yspace !== undefined ) ? options.yspace : 0; //alert('y_space'+y_space);
		var navPages  = ( options.navPages !== undefined ) ? true : false; //alert('navPages= '+navPages);
		var navThumbs = ( options.thumbs !== undefined ) ? true : false; //alert('thumbs= '+thumbs);
		var navArrows = ( options.navArrows !== false ) ? true : false;
		var animeType = ( options.animeType !== undefined ) ? options.animeType : false; 
		var autoPlay = ( options.autoPlay !== true ) ? false : true; 
		//--
		var arr_pos = new Array(), arr_width = new Array();
		var items, w_area, w_item, thumbs;
		//### PRIVATE FUNCTION(S) ###//
		// get real sizes 'width and height'
		var get_Area = function(a,c){var b=0;if(c.toLowerCase()=="width"){b+=isNaN(parseFloat($(a).css("margin-left")))?0:parseFloat($(a).css("margin-left"));b+=isNaN(parseFloat($(a).css("margin-right")))?0:parseFloat($(a).css("margin-right"));b+=isNaN(parseFloat($(a).css("border-left-width")))?0:parseFloat($(a).css("border-left-width"));b+=isNaN(parseFloat($(a).css("border-right-width")))?0:parseFloat($(a).css("border-right-width"));b+=isNaN(parseFloat($(a).css("padding-left")))?0:parseFloat($(a).css("padding-left"));b+=isNaN(parseFloat($(a).css("padding-right")))?0:parseFloat($(a).css("padding-right"));b+=parseFloat($(a).css("width"))}else{b+=isNaN(parseFloat($(a).css("margin-top")))?0:parseFloat($(a).css("margin-top"));b+=isNaN(parseFloat($(a).css("margin-bottom")))?0:parseFloat($(a).css("margin-bottom"));b+=isNaN(parseFloat($(a).css("border-top-width")))?0:parseFloat($(a).css("border-top-width"));b+=isNaN(parseFloat($(a).css("border-bottom-width")))?0:parseFloat($(a).css("border-bottom-width"));b+=isNaN(parseFloat($(a).css("padding-top")))?0:parseFloat($(a).css("padding-top"));b+=isNaN(parseFloat($(a).css("padding-bottom")))?0:parseFloat($(a).css("padding-bottom"));b+=parseFloat($(a).css("height"))}return b};
		//insert navigator Arrows
		var Make_navArrows = function(){
			return $target.parent().append('\n<ul class="navArrows" ><li class="prev"><a href="#prev" class="arrows prev" style="display:none;"><span>prev</span></a></li><li class="next"><a href="#next" class="arrows next" style="display:none;"><span>next</span></a></li></ul>');
		}
		var Anime_Finish = function(){ pageAnimated = false; }
		var Anime_default = function( $this, $direction ){ 
			if( $direction == 'prev'){ 
				if( pageIndex == 0 || pageAnimated ) return;
				if( pageIndex >= (itemTotal-1) ) $( $arr_navArrow[1] ).show();
				pageAnimated = !pageAnimated;
				//-- get values & positions
				var $width = 0, $pos = 0, $w_tmp = 0;
				for(index=0; index<itemTotal; index++){
					$pos = ( $( items[index] ).position() ).left;
					$w_tmp = arr_width[ index ]; //alert( 'pos:'+$pos+', width:'+$w_tmp+' total:'+ ($pos + $w_tmp));
					if( ($pos + $w_tmp ) >= 0 ){ //alert( '('+($pos + $w_tmp) +') == 0' );
						$width = parseFloat( 0 - $pos);
						if( navArrows ){ 
							if( index == 0 ) { $( $this ).hide(); }  // hide button
						}
						pageIndex = index;
						break;
					}
				}
				//-- init Anime
				for(index=0; index<itemTotal; index++){
					$pos = ( $( items[index] ).position() ).left;
					if( index < itemTotal-1 )
						$(items[ index ]).animate({ left :( $pos+$width )+'px' }, $vel, $easeInOutQuad ); //active view
					else
						$(items[ index ]).animate({ left :( $pos+$width )+'px' }, $vel, $easeInOutQuad, function(){ pageAnimated = !pageAnimated; } );
				}
			}
			else if($direction == 'next'){ //alert( pageAnimated+" : "+pageIndex );
				if( pageIndex >= (itemTotal-1)  || pageAnimated ) return;
				if( pageIndex == 0 ) { $( $arr_navArrow[0] ).show();  }
				pageAnimated = !pageAnimated;
				if( ( $( items[0] ).position() ).left < 0 ) { $( $arr_navArrow[0] ).show();  }	
				//-- get values & positions
				var $width = 0, $pos = 0, $w_tmp = 0;
				for(index=0; index<itemTotal; index++){
					$pos = ( $( items[index] ).position() ).left;
					$w_tmp = arr_width[ index ]; //alert( 'pos:'+$pos+', width:'+$w_tmp+' total:'+ ($pos + $w_tmp));
					if( ($pos + $w_tmp ) > (w_area+x_space) ){ //alert( '('+($pos + $w_tmp) +') >'+ w_area +'&&'+ $pos +'<'+ w_area );
						$width = ($pos + $w_tmp) -  w_area-x_space;
						if( navArrows ){ 
							if( index == (itemTotal-1) ) { $( $this ).hide(); } // hide button
						}
						pageIndex = index; 
						break;
					}
				}
				//-- init Anime
				for(index=0; index<itemTotal; index++){
					$pos = ( $( items[index] ).position() ).left;
					if( index < itemTotal-1 )
						$(items[ index ]).animate({ left :( $pos-$width )+'px' }, $vel, $easeInOutQuad ); //active view
					else
						$(items[ index ]).animate({ left :( $pos-$width )+'px' }, $vel, $easeInOutQuad, function(){ pageAnimated = !pageAnimated; } );
				}
			}
			else{
				if( pageAnimated ) return;
				var thumbIndex = $direction, thumbOld = pageIndex; //alert( pageAnimated+" : "+thumbIndex+" : "+pageIndex+" : "+ ( $( items[thumbIndex] ).position() ).left );
				$(items[ thumbIndex ]).animate({ opacity :0, left:'0px' }, 0 ); //active view
				$('a', thumbs[ pageIndex ]).removeClass('active');
				pageAnimated = true;
				//--
				$(items[ pageIndex ]).animate({ opacity :0 }, $vel, $easeInOutQuad , function(){ 
							$(this).css('left', '-'+(w_area*2)+'px');
						} );
				$(items[ thumbIndex ]).animate({ opacity :1 }, $vel, $easeInOutQuad, function(){ 
							pageAnimated = !pageAnimated; 
							$('a', thumbs[ thumbIndex ]).addClass('active');
							pageIndex = thumbIndex;
						} );
						
			}
		}

		var Anime_by_custom = function( $this, $direction ){ 
			if( $direction == 'prev'){ 
				if( pageIndex == 0 || pageAnimated ) return;
				pageAnimated = !pageAnimated;
				if( pageIndex == 1 ) { $( $this ).hide(); }
				var $xposA = w_item, $xposB = 0;
				//---
				if( pageIndex >= (itemTotal-1) ){
					$( $arr_navArrow[1] ).show();
					$(items[ (pageIndex-1) ]).animate({ left :$xposB+'px' }, $vel, $easeInOutQuad ); //old view
				}else{
					$(items[ (pageIndex-1) ]).css({ left: '-'+w_item+'px', 'z-index': 2 }); //prev view
					$(items[ (pageIndex-1) ]).animate({ left :$xposB+'px' }, $vel, $easeInOutQuad );
					$(items[ (pageIndex+1) ]).css({ 'z-index': 1 }); //set index of old view
					$(items[ (pageIndex+1) ]).animate({ left :($xposA*2)+'px' }, $vel, $easeInOutQuad ); //old view
					$(items[ (pageIndex+1) ]).animate({ left :($xposA*2)+'px' }, $vel, $easeInOutQuad ); //old view
				}
				$(items[ (pageIndex-1) ]).find('.action').animate({ right: '14px', opacity:1 }, $vel, $easeInOutQuad, function(){ $(this).removeClass('off'); } );
				$(items[ pageIndex ]).find('.button').addClass('off');
				$(items[ pageIndex ]).find('.action').animate({ right: '225px', opacity:.5 }, $vel, $easeInOutQuad, function(){ $(this).addClass('off'); } );
				$(items[ pageIndex ]).animate({ left :$xposA+'px' }, $vel, $easeInOutQuad, function(){ pageAnimated = !pageAnimated; } ); //active view
				pageIndex -= 1;
			}
			else{ //---
				if( pageIndex >= (itemTotal-1)  || pageAnimated ) return;
				pageAnimated = !pageAnimated;
				if( pageIndex == 0 ) { $( $arr_navArrow[0] ).show();  }
				var $xposA = w_item, $xposB = 0;
				if( pageIndex >= (itemTotal-2) ) { 
					$xposA = 306; $xposB = 343; $( $this ).hide();
					$(items[ pageIndex ]).find('.button').addClass('off');
					$(items[ pageIndex ]).find('.action').animate({ right : '-85px', opacity:.5 }, $vel, $easeInOutQuad, function(){ $(this).addClass('off'); } );
				}else{
					$(items[ pageIndex ]).find('.action').animate({ right : '225px' }, $vel, $easeInOutQuad, function(){ $($this).addClass('off'); } );
				}
				//--
				$(items[ pageIndex ]).animate({ left :'-'+$xposA+'px' }, $vel, $easeInOutQuad ); //active view
				$(items[ (pageIndex+2) ]).css({ left: ($xposA*2)+'px', 'z-index': 1 }); //future view
				$(items[ pageIndex+2 ]).animate({ left: $xposA+'px' }, $vel, $easeInOutQuad ); //active view
				
				$(items[ (pageIndex+1) ]).find('.button').removeClass('off');
				$(items[ (pageIndex+1) ]).find('.action').animate({ right : '14px', opacity:1 }, $vel, $easeInOutQuad, function(){ $(this).removeClass('off'); } );
				$(items[ (pageIndex+1) ]).css({ 'z-index': 2 }).animate({ left : $xposB+'px' }, $vel, $easeInOutQuad, function(){ pageAnimated = !pageAnimated; } ); //next view
				pageIndex += 1;
				//--
			}	
		}
		
		//#+++ make structure gallery +++#//
		items = $target.find("li.item");
		var itemTotal = items.length; //alert( itemTotal ) ; 
		//-- control pages
		var pageIndex = 0, $pageIndex_tmp = 0;
		var pageAnimated = false;
		//-- easing
		var $vel = 800;
		var $easeInn = "easeInQuad", $easeOut = "easeOutQuad", $easeInOutQuad = "easeInOutQuad";
		//get item sizes
		w_item = get_Area( items[0], "width"); //$("#trace").html( w_item +' , '+$target.find("li:first").width() +' , '+ $target.find("li:first").css('width') );//alert( "w_item= "+ w_item + ", w_item= "+ w_item); 
		//--
		var $x_pos = 0; 
		$(items[0]).addClass("first"); //first elem
		$(items[items.length-1]).addClass("last"); //last elem
		//-- get max area
		w_area = get_Area( $target, "width"); //alert( 'w_area='+w_area);
		items.each(function( index, element ){
			$(this).addClass("li"+index); //alert( $x_pos+', '+get_Area( items[index], "width") );
			//alert( $x_pos+' >= '+w_area ); 
			var $width = get_Area( items[index], "width" );
			if( $x_pos < w_area ){
				$pageIndex_tmp = index;
			}
			$(this).css({ 'position':'absolute', 'top':'0px', 'left': $x_pos+'px' });

			//grab positions & widths
			arr_pos.push( $x_pos ); arr_width.push( $width + x_space ); 
			$x_pos += $width + x_space;
		});
		//alert( '$x_pos'+$x_pos);
		if( navArrows && ($x_pos > (w_area + x_space) ) ){
			var $navArrows = Make_navArrows();
			//button event(S)
			var $arr_navArrow = $target.parent().find(".navArrows a.arrows");
			$( $arr_navArrow[0] ).bind( 'click', function(e){ e.preventDefault(); //alert( pageIndex + '>='+ (itemTotal-1) );
				autoPlay = false; 
				switch( animeType ){
					case 'by_custom': Anime_by_custom(this, 'prev');
					break;
					default: Anime_default(this, 'prev');
					break;
				}
			});
			
			$( $arr_navArrow[1] ).bind( 'click', function(e){ e.preventDefault(); 
				autoPlay = false; 
				switch( animeType ){
					case 'by_custom': Anime_by_custom(this, 'next');
					break;
					default: Anime_default(this, 'next');
					break;
				}
			});
			$( $arr_navArrow[1] ).show();
			
			
			if( autoPlay ){ 
				var $area_max = ( $( items[itemTotal-1] ).position() ).left; //alert($area_max);
				var $vel_autoPlay = ($vel*1);// * itemTotal;
				//-- init Anime
				//$target.delay($vel).animate({ left :( 0-$area_max )+'px' }, $vel_autoPlay, 'linear' ); //active view
				/*var $timer = 3000;
				var _Interval = setInterval(
					function( ){ 
						if( pageAnimated ) return;
						if ( (itemTotal-1) <=  pageIndex || (autoPlay == false) ){ //alert( autoPlay );
							clearInterval(_Interval);
							return;
						}
						
						switch( animeType ){
							case 'by_custom': Anime_by_custom( $arr_navArrow[1], 'next');
							break;
							default: Anime_default( $arr_navArrow[1], 'next');
							break;
						}
				}, $timer );
				*/
			}
		}
		//alert('animeType:' + animeType );
		var Thumbs = function( thumbs, w_max, h_max, yspace, xspace ){ //alert( "Thumbs = function( "+thumbs+", "+w_max+", "+h_max+", "+yspace+", "+xspace+" )" );
			//#+++ var(s) +++#//
			var thumbTotal = thumbs.length, 
			$ypos=0, $xpos = 0, $yspace=yspace, $xspace = xspace, 
			arr_ypos =new Array(), arr_widths = new Array(),
			$col=3; $rows=5, $i = 0; //alert( thumbTotal ) ; 
			
			thumbs.each(function( index, element ){
				$(this).addClass("li"+index); //alert( $ypos+', '+get_Area( thumbs[index], "height") );
				//alert( $ypos+' >= '+w_area ); 
				var $h_thumb = get_Area( thumbs[index], "height" );
				var $w_thumb = get_Area( thumbs[index], "width" );
				
				if( $i >= $rows ){
					$xpos += $w_thumb + $xspace; $ypos=0; $i = 0;
				}
				$(this).css({ 'position':'absolute', 'top':$ypos+'px', 'left':$xpos+'px' });

				//push data in arra(s)
				arr_ypos.push( $ypos ); arr_widths.push( $h_thumb + $yspace ); 
				
				//grab positions & widths
				$ypos += $h_thumb + $yspace;				
				$i++;
				
				//-- set to click goto
				$('a',this).click(function(e){ e.preventDefault();
					if( $(this).hasClass('active') ) return;
					var $thumb_ID = ( $(this).attr('class') ).split('-');
					Anime_default( this, $thumb_ID[1] );
				});
				
			});
			
			//button event(S)
			var thumbAnime = false;
			var $target_navpages = $target.parent().find(".navpages");
			var $arr_navPages = $target_navpages.find("a.arrows");
			$( $arr_navPages[0] ).bind( 'click', function(e){ e.preventDefault(); //alert( pageIndex + '>='+ (itemTotal-1) );
				if( thumbAnime ) return;
				thumbAnime = !thumbAnime;
				$( $arr_navPages[1] ).show();
				var $width = w_max;
				var $pos_init = 0 + ( $( thumbs[0] ).position() ).left + $width; //alert( $pos_init );
				if( $pos_init == 0 ){ $(this).hide(); }
				for(index=0; index<thumbTotal; index++){ $(thumbs[ index ]).stop();  } //stop animations
				//-- init Anime
				for(index=0; index<thumbTotal; index++){
					$pos = ( $( thumbs[index] ).position() ).left;
					if( index < thumbTotal-1 )
						$(thumbs[ index ]).animate({ left :( $pos+$width )+'px' }, $vel, $easeInOutQuad ); //active view
					else
						$(thumbs[ index ]).animate({ left :( $pos+$width )+'px' }, $vel, $easeInOutQuad, function(){ 
							thumbAnime = !thumbAnime;  
						} );
				};
			});
			
			$( $arr_navPages[1] ).bind( 'click', function(e){ e.preventDefault(); 
				if( thumbAnime ) return;
				thumbAnime = !thumbAnime;
				$( $arr_navPages[0] ).show();
				var $width = w_max;
				var $pos_end = 0 + ( $( thumbs[thumbTotal-1] ).position() ).left - $width; //alert( $pos_end );
				if( $pos_end < $width ){ $(this).hide(); }
				for(index=0; index<thumbTotal; index++){ $(thumbs[ index ]).stop();  } //stop animations
				//-- init Anime
				for(index=0; index<thumbTotal; index++){
					$pos = ( $( thumbs[index] ).position() ).left;
					if( index < thumbTotal-1 )
						$(thumbs[ index ]).animate({ left :( $pos-$width )+'px' }, $vel, $easeInOutQuad ); //active view
					else
						$(thumbs[ index ]).animate({ left :( $pos-$width )+'px' }, $vel, $easeInOutQuad, function(){ 
							thumbAnime = !thumbAnime;  
						} );
				}
			});
			
			if(thumbTotal > ( $col*$rows ) ){ 
				$target.parent().find(".navpages").show();
				$( $arr_navPages[1] ).show();
			}
			//--
			$target_thumbs.show('slow');
		}
		
		if( navThumbs && ($x_pos > (w_area + x_space) ) ){
			var $target_thumbs = $target.parent().find("#ss-navbar");
			var thumbs = $target_thumbs.find("ul.thumbs li.item");
				//function( thumbs, w_max, h_max, yspace, xspace );
			Thumbs( thumbs, 239, 410, 11, 8 );
		}

		//===== public funcion(s) ===//
		this.goto_page = function( $index ){ 
			var $direction = ( ($index+1) > pageIndex ) ? 1 : 0;
			Page_Control( $direction, $index );
		}
		//---
		this.get_pages = function(){
			return itemTotal;
		}
		this.get_pageActive = function(){
			return pageIndex+1;
		}

	}
	$.fn.nicegallery = function( options ){
		this.nicegallery = new NiceGallery( this, options );
		return this.nicegallery;
	}
})(jQuery);


//#	Class: niceGallery #//
//-----------------------------------------------------------------------//
(function($) {
	var NiceGalleryHome =  function ( element, options ){
		$target = $(element); 
		$target_attr = $(element).attr('id') == undefined ? "."+$(element).attr('class') : "#"+$(element).attr('id'); //alert( $target_attr );
		//vars 
		var x_space   = ( options.xspace !== undefined ) ? options.xspace : 0; //alert('x_space'+x_space);
		var y_space   = ( options.yspace !== undefined ) ? options.yspace : 0; //alert('y_space'+y_space);
		var navPages  = ( options.navPages !== undefined ) ? true : false; //alert('navPages= '+navPages);
		var navThumbs = ( options.thumbs !== undefined ) ? true : false; //alert('thumbs= '+thumbs);
		var navArrows = ( options.navArrows !== false ) ? true : false;
		var animeType = ( options.animeType !== undefined ) ? options.animeType : false; 
		var autoPlay = ( options.autoPlay !== true ) ? false : true; 
		//--
		var arr_pos = new Array(), arr_width = new Array();
		var items, w_area, w_item, thumbs;
		//### PRIVATE FUNCTION(S) ###//
		// get real sizes 'width and height'
		var get_Area = function(a,c){var b=0;if(c.toLowerCase()=="width"){b+=isNaN(parseFloat($(a).css("margin-left")))?0:parseFloat($(a).css("margin-left"));b+=isNaN(parseFloat($(a).css("margin-right")))?0:parseFloat($(a).css("margin-right"));b+=isNaN(parseFloat($(a).css("border-left-width")))?0:parseFloat($(a).css("border-left-width"));b+=isNaN(parseFloat($(a).css("border-right-width")))?0:parseFloat($(a).css("border-right-width"));b+=isNaN(parseFloat($(a).css("padding-left")))?0:parseFloat($(a).css("padding-left"));b+=isNaN(parseFloat($(a).css("padding-right")))?0:parseFloat($(a).css("padding-right"));b+=parseFloat($(a).css("width"))}else{b+=isNaN(parseFloat($(a).css("margin-top")))?0:parseFloat($(a).css("margin-top"));b+=isNaN(parseFloat($(a).css("margin-bottom")))?0:parseFloat($(a).css("margin-bottom"));b+=isNaN(parseFloat($(a).css("border-top-width")))?0:parseFloat($(a).css("border-top-width"));b+=isNaN(parseFloat($(a).css("border-bottom-width")))?0:parseFloat($(a).css("border-bottom-width"));b+=isNaN(parseFloat($(a).css("padding-top")))?0:parseFloat($(a).css("padding-top"));b+=isNaN(parseFloat($(a).css("padding-bottom")))?0:parseFloat($(a).css("padding-bottom"));b+=parseFloat($(a).css("height"))}return b};
		//insert navigator Arrows
		var Make_navArrows = function(){
			return $target.parent().parent().append('\n<ul class="navArrows" ><li class="prev"><a href="#prev" class="arrows prev" style="display:none;"><span>prev</span></a></li><li class="next"><a href="#next" class="arrows next" style="display:none;"><span>next</span></a></li></ul>');
		}
		var Anime_Finish = function(){ pageAnimated = false; }
		var Anime_default = function( $this, $direction ){ 
			if( $direction == 'prev'){ 
				if( pageIndex == 0 || pageAnimated ) return;
				if( pageIndex >= (itemTotal-1) ) $( $arr_navArrow[1] ).show();
				pageAnimated = !pageAnimated;
				//-- get values & positions
				var $width = 0, $pos = 0, $w_tmp = 0;
				for(index=0; index<itemTotal; index++){
					$pos = ( $( items[index] ).position() ).left;
					$w_tmp = arr_width[ index ]; //alert( 'pos:'+$pos+', width:'+$w_tmp+' total:'+ ($pos + $w_tmp));
					if( ($pos + $w_tmp ) >= 0 ){ //alert( '('+($pos + $w_tmp) +') == 0' );
						$width = parseFloat( 0 - $pos);
						if( navArrows ){ 
							if( index == 0 ) { $( $this ).hide(); }  // hide button
						}
						pageIndex = index;
						break;
					}
				}
				//-- init Anime
				for(index=0; index<itemTotal; index++){
					$pos = ( $( items[index] ).position() ).left;
					if( index < itemTotal-1 )
						$(items[ index ]).animate({ left :( $pos+$width )+'px' }, $vel, $easeInOutQuad ); //active view
					else
						$(items[ index ]).animate({ left :( $pos+$width )+'px' }, $vel, $easeInOutQuad, function(){ pageAnimated = !pageAnimated; } );
				}
			}
			else if($direction == 'next'){ //alert( pageAnimated+" : "+pageIndex );
				if( pageIndex >= (itemTotal-1)  || pageAnimated ) return;
				if( pageIndex == 0 ) { $( $arr_navArrow[0] ).show();  }
				pageAnimated = !pageAnimated;
				if( ( $( items[0] ).position() ).left < 0 ) { $( $arr_navArrow[0] ).show();  }	
				//-- get values & positions
				var $width = 0, $pos = 0, $w_tmp = 0;
				for(index=0; index<itemTotal; index++){
					$pos = ( $( items[index] ).position() ).left;
					$w_tmp = arr_width[ index ]; //alert( 'pos:'+$pos+', width:'+$w_tmp+' total:'+ ($pos + $w_tmp));
					if( ($pos + $w_tmp ) > (w_area+x_space) ){ //alert( '('+($pos + $w_tmp) +') >'+ w_area +'&&'+ $pos +'<'+ w_area );
						$width = ($pos + $w_tmp) -  w_area-x_space;
						if( navArrows ){ 
							if( index == (itemTotal-1) ) { $( $this ).hide(); } // hide button
						}
						pageIndex = index; 
						break;
					}
				}
				//-- init Anime
				for(index=0; index<itemTotal; index++){
					$pos = ( $( items[index] ).position() ).left;
					if( index < itemTotal-1 )
						$(items[ index ]).animate({ left :( $pos-$width )+'px' }, $vel, $easeInOutQuad ); //active view
					else
						$(items[ index ]).animate({ left :( $pos-$width )+'px' }, $vel, $easeInOutQuad, function(){ pageAnimated = !pageAnimated; } );
				}
				//alert( pageAnimated+" : "+pageIndex );
				if( pageIndex >= (itemTotal-1)  || pageAnimated ) return;
			}
		}

		//#+++ make structure gallery +++#//
		items = $target.find("li.item");
		var itemTotal = items.length; //alert( itemTotal ) ; 
		//-- control pages
		var pageIndex = 0, $pageIndex_tmp = 0;
		var pageAnimated = false;
		//-- easing
		var $vel = 800;
		var $easeInn = "easeInQuad", $easeOut = "easeOutQuad", $easeInOutQuad = "easeInOutQuad";
		//get item sizes
		w_item = get_Area( items[0], "width"); //$("#trace").html( w_item +' , '+$target.find("li:first").width() +' , '+ $target.find("li:first").css('width') );//alert( "w_item= "+ w_item + ", w_item= "+ w_item); 
		//--
		var $x_pos = 0; 
		$(items[0]).addClass("first"); //first elem
		$(items[items.length-1]).addClass("last"); //last elem
		//-- get max area
		w_area = get_Area( $target, "width"); //alert( 'w_area='+w_area);
		items.each(function( index, element ){
			$(this).addClass("li"+index); //alert( $x_pos+', '+get_Area( items[index], "width") );
			//alert( $x_pos+' >= '+w_area ); 
			var $width = get_Area( items[index], "width" );
			if( $x_pos < w_area ){
				$pageIndex_tmp = index;
			}
			$(this).css({ 'position':'absolute', 'top':'0px', 'left': $x_pos+'px' });

			//grab positions & widths
			arr_pos.push( $x_pos ); arr_width.push( $width + x_space ); 
			$x_pos += $width + x_space;
		});
		//alert( 'arr_width'+arr_width);
		if( navArrows && ($x_pos > (w_area + x_space) ) ){
			var $navArrows = Make_navArrows();
			//button event(S)
			var $arr_navArrow = $target.parent().parent().find(".navArrows a.arrows");
			$( $arr_navArrow[0] ).bind( 'click', function(e){ e.preventDefault();
				if( autoPlay ){ autoPlay = false; $target.stop(); }
				if( pageAnimated ) return;
				var $pos = Math.round( ( $target.position() ).left ); //alert($pos);
				$( $arr_navArrow[1] ).show();
				for(index=0; index<itemTotal; index++){
					var $pos_item = 0 - ((arr_pos[index]) + (arr_width[index]+2));
					if( $pos > $pos_item ){ 
						var $pos_new = arr_pos[index]; //alert( $pos +' > '+ $pos_item + ', index:'+index+ ', pos_new:-'+$pos_new);
						pageAnimated = true; 
						if( index == 0 ){
							$(this).hide();
						}
						$target.animate({ left: '-'+$pos_new+'px' }, $vel, $easeInOutQuad, function(){ pageAnimated = !pageAnimated; } );
						break;
					}
				}
			});
			
			$( $arr_navArrow[1] ).bind( 'click', function(e){ e.preventDefault(); 
				if( autoPlay ){ autoPlay = false; $target.stop(); }
				if( pageAnimated ) return;
				var $pos = Math.round( ( $target.position() ).left ); //alert($pos);
				$( $arr_navArrow[0] ).show();
				$pos = (0 - $pos) + w_parent;
				for(index=0; index<itemTotal; index++){
					var $pos_item = arr_pos[index] + (arr_width[index]-2);
					if( $pos_item > $pos ){ //alert( arr_pos[index]+' > '+$pos );
						var $pos_new = (arr_pos[index])-(700-(arr_width[index]-2));
						pageAnimated = true; 
						if( index == (itemTotal-1) ){
							$(this).hide();
						}
						$target.animate({ left: '-'+$pos_new+'px' }, $vel, $easeInOutQuad, function(){ pageAnimated = !pageAnimated; } );
						break;
					}
				}

			});
			$( $arr_navArrow[0] ).delay(160).show('slow');
			$( $arr_navArrow[1] ).delay(160).show('slow');
			
			var $parent = $target.parent(); 
			var w_parent = get_Area( $parent, "width") - 2; //alert( 'w_parent: '+ w_parent );
			
			var autoplay_foward = function(){ 
				$target.stop();
				$target.delay($vel).animate({ left :( $area_max )+'px' }, $vel_autoPlay, 'linear',
					function(){
						if( autoPlay ){ //alert('autoplay_backward');
							autoplay_backward();
						}
					}
				); //active view
			}
			var autoplay_backward = function(){ 
				$target.stop();
				$target.delay($vel).animate({ left :'0px' }, $vel_autoPlay, 'linear',
					function(){
						if( autoPlay )
							autoplay_foward();
					}
				); //active view
			}
			if( autoPlay ){ 				
				var $area_max = 0 -( $( items[itemTotal-1] ).position() ).left + (w_parent - arr_width[itemTotal-1]); //alert($area_max);
				
				var $vel_autoPlay = ($vel*4) * itemTotal;
				//var $vel_autoPlay = ($vel*4);
				//-- init Anime
				autoplay_foward();
			}
		}
		
		
	}
	$.fn.nicegalleryhome = function( options ){
		this.nicegalleryhome = new NiceGalleryHome( this, options );
		return this.nicegalleryhome;
	}
})(jQuery);

