const ResizeFunAry = [];
const LoadFunAry = [];
const ScrollFunAry = [];
window.addEventListener( "resize", function ( event ) {
for( var F = 0; F < ResizeFunAry.length; F++ ) {
if( typeof ResizeFunAry[F] == 'function' ) { ResizeFunAry[F](); }
}
});
window.addEventListener( "load", function ( event ) {
for( var F = 0; F < LoadFunAry.length; F++ ) {
if( typeof LoadFunAry[F] == 'function' ) { LoadFunAry[F](); }
}
});
window.addEventListener( 'scroll', function ( event ) {
for( var F = 0; F < ScrollFunAry.length; F++ ) {
if( typeof ScrollFunAry[F] == 'function' ) { ScrollFunAry[F](); }
}
});
//設定行動裝置 input date placeholder
function SetInputDate() {
var InputDateAry = document.querySelectorAll( "input[type='date']" );
for( var A = 0; A < InputDateAry.length; A++ ) {
var SelectDateDiv = document.createElement( 'div' );
SelectDateDiv.innerHTML = InputDateAry[A].getAttribute( 'placeholder' );
SelectDateDiv.classList.add( 'SelectDatePlaceholder' );
InputDateAry[A].before( SelectDateDiv );
InputDateAry[A].addEventListener( 'blur', function ( event ) {
var SelectDatePlaceholderObj = this.parentNode.querySelector( '.SelectDatePlaceholder' );
SelectDatePlaceholderObj.style.display = ( this.value != '' ) ? 'none' : '' ;
});
}
}
function ShowPW( ThisObj ) {
var InputPWObj = ThisObj.parentNode.querySelector( 'input' );
if( InputPWObj.getAttribute( 'type' ) == 'password' ) {
InputPWObj.setAttribute( 'type', 'text' );
ThisObj.innerHTML = 'visibility_off';
} else {
InputPWObj.setAttribute( 'type', 'password' );
ThisObj.innerHTML = 'visibility';
}
}
function ViewImage( ThisObj ) {
var LinghtboxDivObj = LinghtboxDiv( 200, 200 );
var ThisUrl = ThisObj.getAttribute( 'img' );
ShowImage( ThisUrl );
}
function ReloadCIM( DfJson ) {
var CID = DfJson['CID'];
var CHKID = DfJson['CHKID'];
var ReloadPath = DfJson['ReloadPath'];
var DATE_OBJ = new Date();
var NOW_SEC = DATE_OBJ.getTime();
document.getElementById( CID ).src = '';
document.getElementById( CID ).src = ReloadPath + '?CID='+ CHKID +'&'+ NOW_SEC;
}
function ShowImage( Url ) {
var UrlAry = [];
var UrlJson = {};
var PhotoDivObj = document.querySelector( '.PhotoShow' );
var AObjAry = PhotoDivObj.querySelectorAll( 'a' );
for( var A = 0; A < AObjAry.length; A++ ) {
UrlAry.push( AObjAry[A].getAttribute( 'img' ) );
UrlJson[AObjAry[A].getAttribute( 'img' )] = AObjAry[A].getAttribute( 'title' );
}
var LinghtboxDivObj = document.getElementById( 'lightboxId' );
LinghtboxDivObj.innerHTML = "

";
var GetPageSizeInfoAry = GetPageSizeInfo();
var MPageW = GetPageSizeInfoAry['windowWidth'] - 50;
var MPageH = GetPageSizeInfoAry['windowHeight'] - 150;
var MainImg = new Image();
MainImg.src = Url;
MainImg.alt = Url;
MainImg.onload = function() {
var ImgW = this.width;
var ImgH = this.height;
var Info = GetBgImageInfo( MPageW, MPageH, ImgW, ImgH );
console.log(this.width);
LinghtboxDivObj.innerHTML = '';
LinghtboxDivObj.style.backgroundImage = '';
LinghtboxDivObj.style.width = Info['Width']+'px';
LinghtboxDivObj.style.marginTop = '-'+( parseInt( Info['Height'] ) / 2 )+'px';
LinghtboxDivObj.style.height = Info['Height']+'px';
LinghtboxDivObj.style.marginLeft = '-'+( parseInt( Info['Width'] ) / 2 )+'px';
setTimeout( function () {
LinghtboxDivObj.style.backgroundImage = "url( "+Url+" )";
for( var A = 0; A < UrlAry.length; A++ ) {
if( UrlAry[A] == Url ) {
if( A > 0 ) { var PrevUrl = UrlAry[A-1]; }
if( A + 1 != UrlAry.length ) { var NextUrl = UrlAry[A+1]; }
}
}
if( PrevUrl ) {
var AObj = document.createElement( 'a' );
AObj.href = 'javascript:void(0);';
AObj.classList.add( 'Prev' );
AObj.title = 'Prev';
AObj.setAttribute( 'img', PrevUrl );
AObj.onclick = function () { ShowImage( this.getAttribute( 'img' ) ) };
LinghtboxDivObj.appendChild( AObj );
}
if( NextUrl ) {
var AObj = document.createElement( 'a' );
AObj.href = 'javascript:void(0);';
AObj.classList.add( 'Next' );
AObj.title = 'Next';
AObj.setAttribute( 'img', NextUrl );
AObj.onclick = function () { ShowImage( this.getAttribute( 'img' ) ) };
LinghtboxDivObj.appendChild( AObj );
}
var CloseObj = document.createElement( 'a' );
CloseObj.href = 'javascript:void(0);';
CloseObj.classList.add( 'Close' );
CloseObj.title = 'Close';
CloseObj.onclick = function () { CloseLightbox( ); }
LinghtboxDivObj.appendChild( CloseObj );
var TitleObj = document.createElement( 'div' )
TitleObj.classList.add( 'Title' );
TitleObj.innerHTML = UrlJson[Url];
LinghtboxDivObj.appendChild( TitleObj );
}, 500 );
}
}
function GetBgImageInfo( NewWidth, NewHeight, ImageWidth, ImageHeight ) {
var ReturnInfoJson = {};
NewWidth = parseInt( NewWidth );
NewHeight = parseInt( NewHeight );
ImageWidth = parseInt( ImageWidth );
ImageHeight = parseInt( ImageHeight );
if( NewWidth >= ImageWidth && NewHeight >= ImageHeight ) {
ReturnInfoJson['Height'] = ImageHeight;
ReturnInfoJson['Width'] = ImageWidth;
} else {
//W
var NW_W = NewWidth;
var NW_H = NewWidth / ImageWidth * ImageHeight;
//H
var NH_W = NewHeight / ImageHeight * ImageWidth;
var NH_H = NewHeight;
if( NW_H > NewHeight ) {
ReturnInfoJson['Height'] = NH_H;
ReturnInfoJson['Width'] = NH_W;
} else {
ReturnInfoJson['Height'] = NW_H;
ReturnInfoJson['Width'] = NW_W;
}
}
return ReturnInfoJson;
}
/*Radio Checkbox相關*/
var InputRadioCheckboxClass = new function() {
var self = this;
self.MainObj = document;
self.Set = function( DfJson ) {
if( DfJson['MainObj'] ) {
self.MainObj = DfJson['MainObj'];
}
}
self.SetAllInput = function () {
var RadioCheckboxObjAry = self.MainObj.querySelectorAll( "input[type='radio'], input[type='checkbox']" );
for( var S = 0; S < RadioCheckboxObjAry.length; S++ ) {
if( RadioCheckboxObjAry[S].type == 'radio' ) {
if( RadioCheckboxObjAry[S].checked == true ) {
InputRadioCheckboxClass.RadioClickStyle( RadioCheckboxObjAry[S] );
}
RadioCheckboxObjAry[S].onclick = function () {
InputRadioCheckboxClass.RadioClickStyle( this );
if( this.getAttribute( 'f' ) ) {
var FunValue = ( this.getAttribute( 'fv' ) ) ? this.getAttribute( 'fv' ) : 'this' ;
eval( this.getAttribute( 'f' )+"( "+FunValue+" )" );
}
};
} else if( RadioCheckboxObjAry[S].type == 'checkbox' ) {
if( RadioCheckboxObjAry[S].checked == true ) {
InputRadioCheckboxClass.CheckboxClickStyle( RadioCheckboxObjAry[S] );
}
RadioCheckboxObjAry[S].onclick = function () {
InputRadioCheckboxClass.CheckboxClickStyle( this );
if( this.getAttribute( 'f' ) ) {
var FunValue = ( this.getAttribute( 'fv' ) ) ? this.getAttribute( 'fv' ) : 'this' ;
eval( this.getAttribute( 'f' )+"( "+FunValue+" )" );
}
};
}
}
}
self.RadioClickStyle = function ( ThisObj ) {
var Name = ThisObj.getAttribute( 'Name' );
var InputObjAry = self.MainObj.querySelectorAll( "input[name='"+Name+"']" );
for( var N = 0; N < InputObjAry.length; N++ ) {
InputObjAry[N].parentNode.classList.remove( 'This' );
}
ThisObj.parentNode.classList.add( 'This' );
}
self.CheckboxClickStyle = function ( ThisObj ) {
if( ThisObj.parentNode.classList.contains( 'This' ) ) {
ThisObj.parentNode.classList.remove( 'This' );
} else {
ThisObj.parentNode.classList.add( 'This' );
}
}
self.SetRadioStyle = function ( InputObj, V ) {
for( var N = 0; N < InputObj.length; N++ ) {
if( InputObj[N].value == V ) {
InputObj[N].checked = true;
InputObj[N].parentNode.classList.add( 'This' );
} else {
InputObj[N].checked = false;
InputObj[N].parentNode.classList.remove( 'This' );
}
}
}
self.SetCheckboxStyle = function ( InputObj, VAry ) {
if( InputObj.length > 1 ) {
for( var N = 0; N < InputObj.length; N++ ) {
if( InArray( InputObj[N].value, VAry ) ) {
InputObj[N].checked = true;
InputObj[N].parentNode.classList.add( 'This' );
} else {
InputObj[N].checked = false;
InputObj[N].parentNode.classList.remove( 'This' );
}
}
} else {
for( var V = 0; V < VAry.length; V++ ){
if( InputObj.value == VAry[V] ) {
InputObj.checked = true;
InputObj.parentNode.classList.add( 'This' );
}
}
}
}
self.ClearRadioStyle = function ( ThisObj ) {
var Name = ThisObj.getAttribute( 'Name' );
var InputObjAry = self.MainObj.querySelectorAll( "input[name='"+Name+"']" );
for( var N = 0; N < InputObjAry.length; N++ ) {
InputObjAry[N].parentNode.classList.remove( 'This' );
InputObjAry.checked = false;
}
}
self.ClearCheckboxStyle = function ( ThisObj ) {
if( ThisObj.length > 1 ) {
for( var N = 0; N < ThisObj.length; N++ ) {
ThisObj[N].checked = false;
ThisObj[N].parentNode.classList.remove( 'This' );
}
} else {
ThisObj.checked = false;
ThisObj.parentNode.classList.remove( 'This' );
}
}
}
function GetInputValue( ThisObj ) {
var ReturnValue = false;
var TheForm = ThisObj.form;
var InputName = ThisObj.getAttribute( 'name' );
var ThisObjId = ThisObj.id;
switch( ThisObj.type ) {
case 'text':
case 'number':
case 'textarea':
case 'hidden':
case 'date':
ReturnValue = TheForm[InputName].value;
break;
case 'checkbox':
ReturnValue = InputDfClass.GetCheckboxValue( TheForm[InputName] );
break;
case 'radio':
ReturnValue = InputDfClass.GetRadioValue( TheForm[InputName] );
break;
case 'select-one':
ReturnValue = TheForm[InputName].options[TheForm[InputName].selectedIndex].value ;
break;
}
return ReturnValue;
}
var MarqueeFun = function( DfJson ) {
var self = this;
self.ImageID = DfJson['ImageID'];
self.ImageMainID = DfJson['ImageMainID'];
self.DfItemWidth = ( DfJson['ImageWidth'] ) ? DfJson['ImageWidth'] : 0 ;
self.PageNum = ( DfJson['PageNum'] ) ? DfJson['PageNum'] : 0 ;
self.MarqueeImageObj = document.getElementById( self.ImageID );
self.ImageMainObj = self.MarqueeImageObj.querySelector( '.ImageMain' );
self.ImageBtnLeftObj = self.MarqueeImageObj.querySelector( '.BtnLeft' );
self.ImageBtnRightObj = self.MarqueeImageObj.querySelector( '.BtnRight' );
self.PointTotal = self.ImageMainObj.querySelectorAll( '.Item' ).length;
self.MarqueeSecond = 8000;
self.NPoint = 0;
self.NextPoint = 0;
self.flag = 0;
self.marquee;
self.DfWidth = DfJson['DfWidth'];
self.DfHeight = DfJson['DfHeight'];
self.T = DfJson['T'];
self.Mq = DfJson['Mq'];//是否要自動滑動
//var W = ( self.DfItemWidth > 0 ) ? self.DfItemWidth : self.MarqueeImageObj.offsetWidth;
self.$pointer = $('.Pointer li');
self.ImageMain = Flipsnap('#'+self.ImageMainID, {
distance: ( self.DfItemWidth > 0 ) ? self.DfItemWidth : self.MarqueeImageObj.offsetWidth,
maxPoint: self.PointTotal - self.PageNum - 1
});
self.ImageMain.element.addEventListener('fspointmove', function() {
self.$pointer.filter('.Current').removeClass('Current');
self.$pointer.eq(self.ImageMain.currentPoint).addClass('Current');
}, false);
self.ImageMain.element.addEventListener('fspointmove', function(ev) {
self.NPoint = self.ImageMain.currentPoint;
console.log( self.NPoint );
}, false);
self.Move = function() {
self.NextPoint = self.NPoint + 1;
self.NextPoint = ( self.NextPoint >= self.PointTotal - self.PageNum ) ? 0 : self.NextPoint ;
self.ImageMain.moveToPoint( self.NextPoint );
if( self.Mq == 'Y' ) {
self.marquee = setTimeout( function () {
self.Move();
}, self.MarqueeSecond );
self.flag = 1;
}
}
self.StartMove = function() {
if( self.flag == 0 ) {
if( self.Mq == 'Y' ) {
self.marquee = setTimeout( function () {
self.Move()
}, self.MarqueeSecond );
}
}
}
self.ResetMove = function() {
if( self.flag == 0 ) {
if( self.Mq == 'Y' ) {
self.marquee = setTimeout( function () {
self.Move()
}, self.MarqueeSecond );
}
}
}
self.ClearMove = function() {
clearTimeout( self.marquee );
self.flag = 0;
}
self.PrevMove = function() {
PrevPoint = self.NPoint - 1;
self.NextPoint = ( PrevPoint < 0 ) ? self.PointTotal - 1 : PrevPoint ;
self.ImageMain.moveToPoint( self.NextPoint );
}
self.NextMove = function() {
self.NextPoint = self.NPoint + 1;
self.NextPoint = ( self.NextPoint >= self.PointTotal - self.PageNum ) ? 0 : self.NextPoint ;
self.ImageMain.moveToPoint( self.NextPoint );
}
self.SetInfo = function( DfJson ) {
self.PageNum = ( DfJson['PageNum'] ) ? DfJson['PageNum'] : 0 ;
var SetImageWidth = ( DfJson['ImageWidth'] ) ? DfJson['ImageWidth'] : self.DfItemWidth ;
self.ClearMove();
self.ImageMain.init( '#'+self.ImageMainID, {
distance: ( SetImageWidth > 0 ) ? SetImageWidth : self.MarqueeImageObj.offsetWidth,
maxPoint: self.PointTotal - self.PageNum - 1
} );
self.ImageMain.moveToPoint( self.NPoint + 1 );
self.StartMove();
}
self.SetResize = function() {
if( self.T == 'Ad' ) {
self.ImageWidth = ( self.DfItemWidth > 0 ) ? self.DfItemWidth : self.MarqueeImageObj.offsetWidth;
self.ImageMainObj.style.width = self.ImageWidth * self.PointTotal + 'px';
self.ImageMainObj.style.height = 'auto';
var H = 0;
H = parseInt( self.ImageWidth ) / self.DfWidth * self.DfHeight;
if( H <= 250 ) { H = 250; }
var ItemObjAry = self.ImageMainObj.querySelectorAll( '.Item' );
for( var A = 0; A < ItemObjAry.length; A++ ) {
ItemObjAry[A].style.width = self.ImageWidth + 'px';
ItemObjAry[A].style.height = H + 'px';
}
self.ImageMainObj.style.height = H + 'px';
} else if( self.T == 'Product' ) {
self.ImageWidth = self.MarqueeImageObj.offsetWidth / ( self.PageNum + 1 );
self.ImageMainObj.style.width = self.ImageWidth * self.PointTotal + 'px';
self.ImageMainObj.style.height = 'auto';
var ItemObjAry = self.ImageMainObj.querySelectorAll( '.Item' );
for( var A = 0; A < ItemObjAry.length; A++ ) {
ItemObjAry[A].style.width = self.ImageWidth + 'px';
}
}
}
self.Set = function() {
self.MarqueeImageObj.addEventListener( 'touchstart', function(e) {
//e.preventDefault();
self.ClearMove();
}, false );
self.MarqueeImageObj.addEventListener( 'touchend', function(e) {
//e.preventDefault();
self.ResetMove();
}, false );
self.MarqueeImageObj.addEventListener( 'mouseover', function(e) {
//e.preventDefault();
self.ClearMove();
}, false );
self.MarqueeImageObj.addEventListener( 'mouseout', function(e) {
//e.preventDefault();
self.ResetMove();
}, false );
self.ImageBtnLeftObj.addEventListener( 'click', function() { self.PrevMove(); }, false );
self.ImageBtnRightObj.addEventListener( 'click', function() { self.NextMove(); }, false );
}
}