var isMobile = {
	Android: function () {
		return navigator.userAgent.match(/Android/i);
	},
	BlackBerry: function () {
		return navigator.userAgent.match(/BlackBerry/i);
	},
	iOS: function () {
		return navigator.userAgent.match(/iPhone|iPad|iPod/i);
	},
	Opera: function () {
		return navigator.userAgent.match(/Opera Mini/i);
	},
	Windows: function () {
		return navigator.userAgent.match(/IEMobile/i);
	},
	any: function () {
		return (isMobile.Android() || isMobile.BlackBerry() || isMobile.iOS() || isMobile.Opera() || isMobile.Windows());
	}
};
ismobile=0;	

if (!isMobile.any()) {//

}else{
  ismobile=1;  
}

//detect isIE
function isIE () {
  var myNav = navigator.userAgent.toLowerCase();
  return (myNav.indexOf('msie') != -1) ? parseInt(myNav.split('msie')[1]) : false;
}

if(typeof oki=="undefined") oki=new Object;

$(function(){


 
if(ismobile==1) $("html").addClass("ismobile");
if(window.location.toString().indexOf("localhost")!=-1) $("html").addClass("local");

oki.log=function(str){

   if($(".local").length>0) console.log(str);
   if(window.location.toString().indexOf("testga")!=-1)	 console.log(str);
}
  
  
oki.ajax=function(obj){
  if(typeof obj.url == "undefined" ) return "nourl!";//console.log("no url");	
  if(typeof obj.ok == "undefined" ) obj.ok=function(){};	
  if(typeof obj.err == "undefined" ) obj.err=function(){};	
  if(typeof obj.method == "undefined" ) obj.method="POST";	
  
  if(typeof obj.fd == "undefined") obj.fd = new FormData( );//document.getElementById("regform") 
  if(obj.url.indexOf("?")==-1)  obj.url=obj.url+"?hash="+Math.random().toString().replace(".","");
  

  var stamp=new Date().getTime(); 	
  $.ajax(
  {
	  
	  url : obj.url+"&stamp="+stamp,
	  type: obj.method,
	  processData: false,
	  contentType: false,
	  data: obj.fd,
	  success:function(data, textStatus, jqXHR)  {					  
		 obj.ok(data);
		  
	  },
	  error: function(jqXHR, textStatus, errorThrown) 
	  {
		 obj.err();
		 	  
	  }
	  
  });
}//==ajax==

//replace placeholder
oki.pzfr=function(){
  $("input").each(function(){
	 var pzfr=$(this).attr("pzfr"); 
	if( typeof pzfr!="undefined" ) $(this).attr("placeholder",  $(pzfr).text()  );

  });	
}  
 
$(window).on("load",function(){
  oki.pzfr();	
}) 
//reset form
oki.formclr=function(e,nel){

  var el=$(this).parents("form");
  if(typeof nel!=="undefined") el=$(nel);
  if(el.length<=0) return;	
  el.find("input[type=text],input[type=password],textarea").val("");//hidden nochange
  el.find("input[type=checkbox]").prop("checked",false);
}
$("body").on("click",".formclr",oki.formclr);

//timeout
oki.timeout=function(nsec,func){
   var sec=1000;
   if(typeof nsec!=="undefined") sec=Number(nsec);
   if(typeof func!="function") return;
   setTimeout(function(){   func()   },sec); 
} 

//default ajax

oki.defajax=function(){
	 var obj=new Object;
	 var el=$(".okiform");
	 obj.url=el.attr("action");
	 obj.fd=new FormData(el[0]);
	 obj.ok=function(data){
		//console.log(data);
		
		
		var dom=$(data);
		$(".msgbox").html( dom.find(".msgbox").html()  );
		$(".errbox").html( dom.find(".errbox").html()  );
		$(".okiform").html( dom.find(".okiform").html() );
		var gourl=dom.find(".gourl").text();
		if(  gourl.length>0 ) return window.location=gourl;
		
		oki.pzfr();
		
		oki.timeout(800,function(){ oki.modal("hide") });
		oki.timeout(1200, oki.msgini );
		
	 }
	 obj.err=function(data){
		console.log(data); 
        oki.timeout(800,function(){ oki.modal("hide") });
		oki.timeout(1200, function(){ oki.modal("sm",".errajax") }  );	 
		oki.timeout(1200, function(){ oki.modal("sm",".errajax") }  );	 
	 }
	 oki.ajax(obj);
}//defajax

//simple tabs -----------------------
oki.tab=function(){
  var t=$(this);	
  var p=t.parents(".okitab");
  p.find(".tb").removeClass("on");
  t.addClass("on");
  var el=$( p.attr("to").toString() );  
  el.val( t.attr("data") );
}
$("body").on("click",".okitab .tb",oki.tab);


//okiga======================================================================================================
oki.ga=function(el){
	var ts=$(this)
    if(el.length>0) ts=$(el); 	
	  var gatxt=ts.attr("ga").split(":");
	  if(typeof gatxt[1]=="undefined") gatxt[1]=gatxt[0];
	  //oki.log(t.attr("ga"));
	  var gatitle=gatxt[0];
	  var gatag=gatxt[1];
	  var mpage="";
	  if(ismobile==1) mpage="Mobile-";

	
	if(typeof gtag=="function"){
	  //tgclog("gtga");
	  gtag('event', 'onclick', {
		'event_category' :  mpage+gatitle,
		'event_label' : mpage+gatag
	  });		
	
	}else if(typeof ga=="function"){
		//tgclog("ga");	
	  ga('send', 'event', mpage+gatitle, 'onclick', mpage+gatag);
		
	}else {
		
		
	}
	oki.log(mpage+gatitle+":"+mpage+gatag);

	
}

$("body").on("click","[ga]",oki.ga);


oki.inview= function (elem) {
	var wt=$(window).scrollTop();
	var wh=$(window).height();
	var wb=wt+wh;
	
	var mt=wt+wh*.15;
	var mb=wt+wh*.85;
	
	var elt=$(elem).offset().top;
	var elh=$(elem).height();
	var elb=elt+elh;
	var elm=elt+elh/2;
	var nt=0;
	
	//console.log("mid",elt,mt,mb,elb);
	//區塊大於視窗時
	if(elt<=mt&&elb>=mb) return true;
	//上緣進入中間區塊
	if(elt>=mt&&elt<=mb) return true;
	//中線在中間區塊
	if(elm<=mt&&elm>=mb) return true;
	//下綠進入中間區塊
	if(elb>=mt&&elb<=mb) return true;  
	
	return false;
}

	
})//end

/*
■200301
uni functions


*/
$(function(){

$("body").on("click",".pageclose",function(){
 window.close();	
	
})	
	
	
	
})

/*
■oki.tabs=======================================================================================


tpl--
<btns class="{tag}-tabs">
  <a class="active" data-tab="{tag}-1"></a>
  <a class="" data-tab="{tag}-2"></a>
</btns>

<div class="{tag} {tag}-1">
</div>
<div class="{tag} {tag}-2 d-none">
</div>

--ini--

oki.tabs( {tag} )

*/
oki.tabs=function(tag){
  $("body").on("click", "."+tag+"-tabs *[data-tab]",function(){
              $("."+tag).addClass("d-none");
              $("."+tag+"-tabs  *[data-tab]").removeClass("active");
              $(this).addClass("active");
              var  show=$(this).attr("data-tab");
              $("."+show).removeClass("d-none");
			  
  });
}
$(function(){
  oki.tabs("okipane");//default ini = .okipane	
})

/*
■oki.cookie=======================================================================================

*/
oki.setCookie=function (cname, cvalue, exdays) {
  var d = new Date();
  d.setTime(d.getTime() + (exdays*24*60*60*1000));
  var expires = "expires="+ d.toUTCString();
  document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}
oki.getCookie=function(cname) {
  var name = cname + "=";
  var decodedCookie = decodeURIComponent(document.cookie);
  var ca = decodedCookie.split(';');
  for(var i = 0; i <ca.length; i++) {
    var c = ca[i];
    while (c.charAt(0) == ' ') {
      c = c.substring(1);
    }
    if (c.indexOf(name) == 0) {
      return c.substring(name.length, c.length);
    }
  }
  return "";
}


/*
■logout======================================================================================
use appadm/.uni.bootstrap modal func
*/
$(function(){
  $("body").on("click",".admlogout",function(){
	  oki.modal("sm" ,".logoutbox" );	  
  })	
  $("body").on("click",".modal .logout-Y",function(){
	 
	 window.location=$("[logouturl]").attr("logouturl");	  
  })  
  
})
/*
■err validate=====================================================================================
err validate
if .err has anytext, add .is-invalid in target input
ex:
<div class="err" for="ipt"></div>
<input class="ipt"> 


*/
$(function(){
  oki.showipterr=function(){
	$(".err").each(function(){
	  if($(this).text().length<=0) return;  
	  var el=$(this).attr("for");
	  $("."+el).addClass("is-invalid");  
    })	
  }	
  oki.showipterr();
	
})

$(function(){

var tplini=function(){
	
  var tpl=oki.msg.toString().split("[tpl]")[1];
  $("body").append($(tpl).find("#okimsgbox").clone());	
  
  tpl=oki.loading.toString().split("[tpl]")[1];
  $("body").append($(tpl).find("#oki_loading").clone());	  
  
  tpl=oki.cfm.toString().split("[tpl]")[1];
  $("body").append($(tpl).find("#oki_cfm").clone());

	
}
	

oki.msg=function(n,html,func){
	
  if($(".ie8").length>0) {	 
	 return alert( html.split("<br>").join("\n")  );
  }
  if(typeof html !="undefined" ) html=html.toString().split("\n").join("<br>"); 

  	
 var tmout;		
 clearTimeout(tmout);
 if(n=="hide"){	 	
	$(".unimsgbox").removeClass("on");	
	clearTimeout(tmout);
	tmout=setTimeout(function(){  $(".unimsgbox").remove() },880);
	if(typeof func=="function") func();
   return;
 }
  $(".unimsgbox").remove();
  
 var tpl=$(oki.msg.toString().split("[tpl"+""+"]")[1]);  
 if(typeof html !="undefined" ) tpl.find(".unimsg .textbox .close").before(html);
 $("body").append(tpl.find(".unimsgbox").clone()); 
  setTimeout(function(){   $(".unimsgbox").addClass("on") },110);
  setTimeout(function(){    $(".unimsgbox .bg").one("click",function(){  oki.msg("hide"),clearTimeout(tmout)  })  },660);

 $(".unimsgbox").on("click",".close",function(){  oki.msg("hide") });

 
 if(n!=""){
   var sec=6000;
   if( n === parseInt(n, 10) ) sec=n;
 	$(".unimsgbox").delay(sec).fadeIn(0,function(){ $(".unimsgbox").removeClass("on")	 });	
	tmout=setTimeout(function(){  $(".unimsgbox").remove() },sec+700);
   if(typeof func=="function") func();
   return;  
 }	
	
/*
[tpl]
<data>
<div class="unimsgbox">
<div class="bg"></div>
<div class="unimsg">  
    <div class="textbox">
	
	<button type="button" class="close"><i class="fa fa-check"></i>CLOSE</button>
	</div>
	
</div>
</div>

<style id='okimsgbox'>
.unimsgbox {
position:fixed;
top:0px;
left:0px;
z-index:9997;
width:100%;
height:100%;
background-color:rgba(0,0,0,.7);
transition: all .3s;
-webkit-transition: all .3s;
opacity:0;
}
.unimsgbox[class~=on] {
transition: all .3s;
-webkit-transition: all .3s;	
opacity:1;
}
.unimsgbox .bg{
position:fixed;
top:0px;
left:0px;	
width:100%;
height:100%;
}
.unimsgbox .close{
  display:block;
  margin:auto;
  margin-top:20px;	
}

.unimsgbox .unimsg {
display:flex;
align-items: center;
justify-content: center;	
position:fixed;
z-index:9999;
top:50%;
left:50%;
transform: translateX(-50%) translateY(-50%);	
-webkit-transform: translateX(-50%) translateY(-50%);	
max-width:480px;
width:90%;
min-height:120px;
height:auto;
box-sizing:border-box;
padding:15px;
background-color:#ffffff;
box-shadow:0 0 10px rgba(0,0,0,.6),inset 0 0 20px rgba(0,0,0,.2);
border-radius:3px;
transition: all .3s;
-webkit-transition: all .3s;
margin-top:-50px;
}

.unimsgbox[class~=on] .unimsg {
margin-top:0px;
}


.unimsgbox .unimsg .textbox {
border:0px solid #ff0000;
text-align:center;
display:block;
font-size:13pt;
}

.unimsgbox .unimsg button {
border-radius:5px;
padding:10px 15px;
border:0px #fff solid;
background-color:#e92a33;
color:#fff;
}
.unimsgbox .unimsg button:hover{
background-color:#aaa;
}



@media screen and (max-width: 640px) {
 .unimsgbox .unimsg {
 width:96%	 
 }
.unimsgbox .unimsg .textbox {
font-size:11pt;
}  
}


</style>
</data>
[tpl]
*/	
	
}//==msg==
oki.loading=function(n,html){
if($(".ie8").length>0) return;
if(n=="hide"){
 $(".oki_loading").addClass("off");
 setTimeout(function(){ $(".oki_loading").remove() },660); 	
 return	
}	
var tpl=$(oki.loading.toString().split("[tpl"+""+"]")[1]);	
    if(typeof html!="undefined") tpl.find(".cbox").html(html);
	$("body").append(tpl.find(".oki_loading").clone());	
	
/*[tpl]
<data>
<div class="oki_loading">
 
 <div class="cbox">
 <div class="okiloading"><i class="okiloading-icon"></i></div>
  處理中，請等候…
 </div>
</div>
<style id="oki_loading">
@keyframes okiloadingani {
  0% {transform:rotate(0deg);-webki-transform:rotate(0deg)}
  100% {transform:rotate(360deg);-webki-transform:rotate(360deg)}
}


.okiloading {
display:block;
text-align:center;
width:100%;
height:120px;	
}

.okiloading-icon {
  display:block;
  xborder:2px solid rgba(0,153,153,1);
  border:2px solid #85C2EE;
  border-right:rgba(0,153,153,0);
  xbox-shadow:inset 0 0 3px #85C2EE, 0 0 5px #85C2EE;
  height:100px;
  width:100px;
  border-radius:50px;
  animation: 1s okiloadingani infinite linear;
  -webkit-animation: 1s okiloadingani infinite linear;
  margin:auto;
}



.oki_loading {
 position:fixed;
 width:100%;
 height:100%;
 left:0px;
 top:0px;
 background-color:rgba(0,0,0,.7);
 display:block;
 z-index:9998;
 border:0px solid #ff0000;
 color:#85C2EE;
}
.oki_loading .cbox {
 display:block;	
 position:fixed;
 width:280px;
 height:60px;
 line-height:60px;
 box-sizing:border-box;
 text-align:center;
 border-radius:5px;
 box-shadow:inset 0 0 5px rgba(0,0,0,.2);	
 left:50%;
 top:50%;
 margin-left:-140px;
 margin-top:-30px;
 background-color:#fff; 
 font-size:12pt;
}
.oki_loading[class~=off]{
opacity:0;
transition:all .6s;
-webkit-transition:all .6s;	
}

.------custom--------- {}
.oki_loading .cbox .la {
  margin:auto;
  margin-top:10px;
}
.oki_loading .cbox{
  background-color:rgba(0,0,0,0);
  box-shadow:inset 0px 0px 0px ; 
}


</style>
</data>
[tpl]*/	
	
}//==loading==


oki.cfm=function(n,html,func){

if(n=="hide"){
 $(".oki_cfm").addClass("off");
 setTimeout(function(){ $(".oki_cfm").remove() },330); 	
 return	
}	

 if(typeof func!="function") return oki.msg(6000,"no function!");
var tpl=$(oki.cfm.toString().split("[tpl"+""+"]")[1]);	
    if(typeof html!="undefined") tpl.find(".cbox info").html(html);
	$("body").append(tpl.find(".oki_cfm").clone());	
	
	$(".oki_cfm bg,.oki_cfm .clr").on("click",function(){ oki.cfm("hide") });
	
	$(".oki_cfm .ok").on("click",function(){ func(true) });
	$(".oki_cfm .clr").on("click",function(){ func(false) });	
	
/*[tpl]
<data>
  <cfmbox class="oki_cfm">
    <bg></bg>
    <div class="cbox">
      <info></info>
      <dbox>
        <button class="clr"><i class="fa fa-times"></i>NO</button>
        <button class="ok"><i class="fa fa-check"></i>YES</button>
      </dbox>
    </div>
  </cfmbox>
<style id="oki_cfm">

.oki_cfm {
 position:fixed;
 left:0px;
 top:0px;
 width:100%;
 height:100%;	
 z-index:9997
}
.oki_cfm bg {
 position:fixed;
 left:0px;
 top:0px;
 width:100%;
 height:100%;	
}
.oki_cfm  .cbox{
 position:fixed;
 left:50%;
 top:50%;
 width:100%;
 max-width:600px;
 min-height:100px;
 box-sizing:border-box;
 height:auto;
 padding:15px;
 background-color:#ffffff;
 box-shadow:0 0 10px rgba(0,0,0,.6),inset 0 0 20px rgba(0,0,0,.2);
 transform:translate(-50%,-50%);
 -webkit-transform:translate(-50%,-50%); 
 display:block;
 text-align:center;
 border-radius:3px;
  
}
.oki_cfm .cbox info{
height:60px;
display:block;
padding-top:20px
font-size:12pt;
}
.oki_cfm  .cbox dbox{
height:60px;
}
@media screen and (max-width: 640px) {
 .oki_cfm .cbox {
 width:96%	
 font-size:12pt; 
 }
}


</style>
</data>
[tpl]*/	
	
}//==cfm==


tplini();

})

$(function(){

var modal=function(){
/*
[tpl]

<div id="okimodals" class="okimodal modal fade" role="dialog" style="height:auto">
  <div class="modal-dialog">

    <!-- Modal content-->
    <div class="modal-content" style="height:auto">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal">&times;</button>
        <h4 class="modal-title">訊息</h4>
      </div>
      <div class="modal-body" style="height:auto">
        <p>Some text in the modal.</p>
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
		
      </div>
    </div>

  </div>
</div>

<div id="okimodal" class="okimodal modal fade" role="dialog" style="height:auto">
  <div class="modal-dialog">

    <!-- Modal content-->
    <div class="modal-content" >
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal">&times;</button>
        <h4 class="modal-title">訊息</h4>
      </div>
      <div class="modal-body" style="height:auto">
        <p>Some text in the modal.</p>
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
      </div>
    </div>

  </div>
</div>
<style>
.okimodal .modal-content{
  background:#fff;
}
.okimodal .modal-body{
  overflow-y:visible;
  box-sizing:border-box;
  padding:20px;
}
.okimodal .modal-header button.close{
  width:auto;
}

.okimodal .modal-footer button{
  margin-top:10px;
}


</style>
[tpl]
*/
}
$("body").append(  modal.toString().split("[tpl]")[1]  );


	
var gocart=0;
cartadd=function(el){
  if(typeof el=="undefined") return alert("undefined el");	
  var gourl=el.attr("action").toString(); 
  var stamp=new Date().getTime();	
  (gourl.indexOf("?")!=-1) ? gourl=gourl+"&stamp="+stamp : gourl=gourl+"?stamp="+stamp; 
  var gotype="POST";	
  if(typeof el.attr("method")!=="undefined") gotype=el.attr("method")
	
  $.ajax({
	  type: gotype,
	  url: gourl ,
	  data: el.serialize(),
	  timeout: 15000,
	  success: function(data) {
		  if(typeof data.code=="undefined") {
			  data.code="1";
			  data.msg=("傳送發生錯誤，請重整後再試一次[01]");
		  }
		 var msg=data.msg;
		 $("#okimodals .modal-body").html(msg);
		 $("#okimodals").modal('show'); 
		  
		 if(gocart==1) return window.location="order.php";
		  
		  
	  },
	  complete: function(data) {
		  //alert(updateStatus);
	  },
	  error: function(){
		 gocart=0; 
	     var msg=("傳送發生錯誤，請重整後再試一次[err]");
		 $("#okimodals .modal-body").html(msg);
		 $("#okimodals").modal('show'); 
	  } 
  });	
}	
	
$("body").on("click",".cartaddbtn",function(){
   var el=$(this).parents("form");
	cartadd(el);
	
	//modal add sync to item list qty
	if(  $(this).parents(".modal").length>0 ){
	   var uid=	el.find("input[name='uid']").val();
	   var qtyval=el.find(".qty").val();
	   $(".qty-"+uid).val( qtyval  );	
		
	}
	
	
});
/*
add item to cart and go to cartpage

*/	

$("body").on("click",".gocartaddbtn",function(){
   gocart=1;	
   var el=$(this).parents("form");
	cartadd(el);
	

	
	
});	
	
	
	
})
$(function(){
	
	
	
});
$(function(){
/*
#odr tooltip#
*/
//"數字越小排越高，數字可為負數" 已改用 unitpl.lang.php 取代掉
//$(".thodr").attr("title",  tiplang("","thodr")  ).attr("data-toggle","tooltip").attr("data-placement","left");

$("[tip]").attr("data-toggle","tooltip").each(function(){   $(this).attr("title",$(this).attr("tip") )    });//quick 

$('[data-toggle="tooltip"]').tooltip();


})
