var delayer_count = 0;


function popupWindow(url) 
{
  wintop=(window.screen.height-500)/2;
  winleft=(window.screen.width-500)/2;
  window.open(url,'popupWindow','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=yes,copyhistory=no,width=500,height=500,screenX='+winleft+',screenY='+wintop+',top='+wintop+',left='+winleft+'')
}

function check_form(wholesale_qty)
{
  var thevalue=document.getElementById("cart_quantity").value;
  
  if (/^[0-9]+$/.test(thevalue) && (thevalue > wholesale_qty) && (thevalue < 501))   
  {
    return true;   
  }    
  else 
  {   
    wholesale_qty = wholesale_qty + 1;
  	alert('please input natural number from '+wholesale_qty+' to 500!');
    document.getElementById("cart_quantity").value = wholesale_qty;
	return true;
  }
}

function check_form_clearance(clearance_qty)
{
  var thevalue=document.getElementById("cart_quantity").value;
  
  clearance_qty = clearance_qty + 1;
  if (/^[0-9]+$/.test(thevalue) && (thevalue < clearance_qty) && (thevalue > 0))   
  {
    return true;   
  }    
  else if (thevalue == 0)
  {
    alert('please input natural number more than 0!');
    document.getElementById("cart_quantity").value = 1;
	return true;
  }
  else
  {
  	alert('It is clearance product, please input natural number less than '+clearance_qty+' !');
    document.getElementById("cart_quantity").value = clearance_qty - 1;
	return true;
  }
}

function get_value()
{
  var s=document.getElementById("cart_quantity").value;
  return s;
}

function hide_select(a,b,c)
{
  $("select").each(function(i)
  {
    var t=a==0?"hidden":"visible";
    var r=b==0?"":"["+b+"*='"+c+"']";
		
    if($.browser.version==6.0) $("select"+r).css({visibility:t});
  });
}

function floatBox(posEL,element)
{ 
  var posX,posY,pos,offTop;
  var width=339;
  var height=338;
  
  if($.browser.msie)
  {
	pos=$(posEL)[0];
    offTop=120;
  }
  else
  {
	pos=$(posEL)[0];offTop=130;
  }
  
  var et=pos.offsetTop;
  var el=pos.offsetLeft;
  
  while(pos=pos.offsetParent)
  {
    et+=pos.offsetTop;
    el+=pos.offsetLeft;
  }
  posX=el-width;
  posY=et-offTop;
  
  var box=$('#pop_window');
  box.css({position:'absolute',zIndex:999,top:posY,left:posX,width:width,height:height});
  $("#pngBgWin").css({position:'absolute',zIndex:998,top:posY,left:posX,width:width,height:height}).show();
  
  var str="<img onclick='$(\"#pngBgWin\").hide();$(\"#floatBox_img\").parent().hide();hide_select(1,\"id\",\"attrib-\");' src='pic/close.gif' class='hand' title='close' alt='close' id='floatBox_img'/><div class='png'>";
  switch(element)
  {
    case'#shipping_info':
      str+=shipping_info;
      break;
      
    case'#payment_info':
      str+=payment_info;
      break;
	
	case'#warranty_info':
      str+=warranty_info;
      break;
    
	case'#warranty_info_2':
      str+=warranty_info_2;
      break;
      
    case'#after_service':
      str+=after_service;
      break;
  }
  str+="</div>";
  box.html(str);
  hide_select(0,"id","attrib-");
  $('#pop_window').show();
  return false;
}

function cart_updatepage(divupdate, str)
{
	var goto = str.match(/gotoXurl\(\"([^\"]*)\"\)/);
	
	if (goto && goto[1]) 
	{
		gotoXurl(goto[1]);
	}
    
    if (str == 0)
    {
      alert('It is clearance product, I\'m sorry that you can\'t buy it any more! Thanks!');
    }
    else
    {
	  document.getElementById(divupdate).style.height = 'auto';
	  document.getElementById(divupdate).innerHTML = str;
    }
}

function cvxmlhttpPostButton(strURL,divsend,divupdate,button) 
{
    var xmlHttpReq = false;
    var self = this;
    //document.getElementById(divupdate).style.cursor = 'wait';
    // Mozilla/Safari
    
    if (window.XMLHttpRequest) 
    {
        self.xmlHttpReq = new XMLHttpRequest();
    }
    // IE
    else if (window.ActiveXObject) 
    {
        self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
    }
    self.xmlHttpReq.open('POST', strURL, true);
    self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    self.xmlHttpReq.onreadystatechange = function() 
    {
        if (self.xmlHttpReq.readyState == 4 || self.xmlHttpReq.readyState == "complete") 
        {
            cart_updatepage(divupdate, self.xmlHttpReq.responseText);
	        //document.getElementById(divupdate).style.cursor = 'auto';
        }
    }
    self.xmlHttpReq.send(getquerystring(divsend,button));
}

function spinner_on(whichLayer)
{
	last_spinner = whichLayer;
	divonoff(whichLayer,"block");
}

function divonoff(whichLayer,dvalue)
{
	if (document.getElementById) 
	{
		// this is the way the standards work
		if (document.getElementById(whichLayer)) 
		{
			var style2 = document.getElementById(whichLayer).style;
			style2.display = dvalue;
		}
	}
	else if (document.all) 
	{
		// this is the way old msie versions work
		if (document.all[whichLayer])
		{
			var style2 = document.all[whichLayer].style;
			style2.display = dvalue;
		}
	}
	else if (document.layers) 
	{
		// this is the way nn4 works
		if (document.layers[whichLayer]) 
		{
			var style2 = document.layers[whichLayer].style;
			style2.display = dvalue;
		}
	}
}

function delayer(strURL, divsend, divupdate) 
{
	if (--delayer_count == 0) 
    {
        cvxmlhttpPost(strURL, divsend, divupdate);
    }
}

var request_queue = new Array();
var request_queue_cnt = 0;
function cvxmlhttpPost(strURL, divsend, divupdate) 
{
	if (request_queue_cnt++ > 0) 
	{
		var req = new Array();
		req[0] = strURL;
		req[1] = divsend;
		req[2] = divupdate;
		request_queue.push(req);
		//console.warn("Pushing to queue:"+req[0]+":"+req[1]+":"+req[2]);
		return;
	}
	//console.warn("Executing Req:"+request_queue_cnt);
	var xmlHttpReq = false;
	var self = this;
	// Mozilla/Safari
	if (window.XMLHttpRequest) 
	{
		self.xmlHttpReq = new XMLHttpRequest();
	}
	// IE
	else if (window.ActiveXObject) 
	{
		self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
	}
	if (!strURL) 
	{
		console.error("Broken Request");
		return;
	}
	cvxmlhttpPostRaw(strURL, divsend, divupdate);
}

function cvxmlhttpPostRaw(strURL, divsend, divupdate) 
{
	self.xmlHttpReq.open('POST', strURL, true);
	self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	self.xmlHttpReq.onreadystatechange = function() 
	{
		if (self.xmlHttpReq.readyState == 4 || self.xmlHttpReq.readyState == "complete") 
		{
			cart_updatepage(divupdate, self.xmlHttpReq.responseText);
			spinner_off();
			if (--request_queue_cnt > 0) 
			{
				var req = request_queue.shift();
				//console.warn("Taking off queue:"+req[0]+":"+req[1]+":"+req[2]);
				setTimeout(function(){cvxmlhttpPostRaw(req[0], req[1], req[2]);}, 100);
			}
		}
	}
	self.xmlHttpReq.send(getquerystring(divsend, false));
}

function getquerystring(divsend,button) 
{
	// already prepared post?
	if (divsend.indexOf("=") > 0) 
	{
		return divsend;
	}
	var qstr = '';
	if (!document.forms[divsend]) 
	{
		alert("no '"+divsend+"' object");
		return "";
	}
	for(i = 0; i < document.forms[divsend].elements.length; i++) 
	{
		if (qstr) 
		{
			qstr += "&";
		}
		// in case of submit buttons use only the clicked one
		if (button && document.forms[divsend].elements[i].name == button.name) 
		{
			if (document.forms[divsend].elements[i].value == button.value) 
			{
				qstr += document.forms[divsend].elements[i].name + '=' + escape(document.forms[divsend].elements[i].value);
			}
		}
		else if (document.forms[divsend].elements[i].type != "radio" || document.forms[divsend].elements[i].checked) 
		{
			qstr += document.forms[divsend].elements[i].name + '=' + escape(document.forms[divsend].elements[i].value);
		}
	}
	//alert(divsend + "<->" + form.elements.length + qstr);
	return qstr;
}

function gotoXurl(url) 
{
	window.location = url;
}

var last_spinner;
var last_super_spinner;
function spinner_off()
{
	if (last_super_spinner) 
	{
		setTimeout(function(){document.getElementById(last_spinner).src = last_super_spinner;}, 500);
	} 
	else if (last_spinner) 
	{
		divonoff(last_spinner,"none");
	}
}

function get_country_name()
{
   var s=document.getElementById("countries_name").value;
   return s;
}

function check_review(str)
{
  if (checkrname(str) == false)
    return false;
  
  if (checkremail(str) == false)
    return false;
  
  if (checkreview(str) == false)
    return false;
  
  return true;
}

function checkremail(str) 
{
  if(trimall(document.getElementById("r_email").value)=="")
  {
    alert('Please input you email address!')
    document.getElementById("r_email").select();
    return false;
  }
  else if (!emailValidate(document.getElementById("r_email").value)) 
  { 
    alert('Unavailable Email Address!')
    document.getElementById("r_email").select();
    return false;
  }
}

function checkrname(str) 
{
  if (trimall(document.getElementById("r_name").value)=="") 
  {
    alert('Please input your name!')
    document.getElementById("r_name").select();
    return false;
  }
}

function checkreview(str) 
{
  if (trimall(document.getElementById("review").value)=="") 
  {
    alert('Please input your review!')
    document.getElementById("review").select();
    return false;
  }
  else if (document.getElementById("review").value.length < 20) 
  {
	alert('Your review must contain more that 20 characters!')
    document.getElementById("review").select();
    return false;
  }
}

function trimall(his)
{
  Pos_Start = -1;
  for(var i=0;i<his.length;i++)
  {
    if(his.charAt(i)!=" ")
    {
      Pos_Start = i;   
      break;     
    }
  }
  
  Pos_End = -1;
  
  for(var i=his.length-1;i>=0;i--)
  {
    if(his.charAt(i)!=" ")
    {
      Pos_End = i;
      break;
    }
  }
  
  Str_Return = ""
  
  if(Pos_Start!=-1 && Pos_End!=-1)
  {
    for(var i=Pos_Start;i<=Pos_End;i++)
    {
      Str_Return = Str_Return + his.charAt(i);
    }
  }
  
  if (Str_Return=="")
    return false;
  else
    return Str_Return;
}

//email合法性检测
function emailValidate(emailStr) 
{
  var checkTLD=1;
  var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum|mobi|cn)$/;
  var emailPat=/^(.+)@(.+)$/;
  var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
  var validChars="\[^\\s" + specialChars + "\]";
  var quotedUser="(\"[^\"]*\")";
  var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
  var atom=validChars + '+';
  var word="(" + atom + "|" + quotedUser + ")";
  var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
  var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
  var matchArray=emailStr.match(emailPat);
  
  if (matchArray==null) 
  {
    return false;
  }
  
  var user=matchArray[1];
  var domain=matchArray[2];
  
  for (i=0; i<user.length; i++) 
  {
    if (user.charCodeAt(i)>127) 
    {
      return false;
    }
  }
  
  for (i=0; i<domain.length; i++) 
  {
    if (domain.charCodeAt(i)>127) 
    {
      return false;
    }
  }
  
  if (user.match(userPat)==null) 
  {
    return false;
  }
  
  var IPArray=domain.match(ipDomainPat);
  if (IPArray!=null) 
  {
    // this is an IP address
    for (var i=1;i<=4;i++) 
    {
      if (IPArray[i]>255) 
      {
        return false;
      }
    }
    return true;
  }
  
  // Domain is symbolic name.  Check if it's valid.
  var atomPat=new RegExp("^" + atom + "$");
  var domArr=domain.split(".");
  var len=domArr.length;
  for (i=0;i<len;i++) 
  {
    if (domArr[i].search(atomPat)==-1) 
    {
      return false;
    }
  }
  
  if (checkTLD && domArr[domArr.length-1].length!=2 && domArr[domArr.length-1].search(knownDomsPat)==-1) 
  {
    return false;
  }
  
  if (len<2) 
  {
    return false;
  }
  return true;
}
//email检测结束

/**
 * 回到页面顶部
 * @param acceleration 加速度
 * @param time 时间间隔 (毫秒)
 **/
function goTop(acceleration, time) {
	acceleration = acceleration || 0.1;
	time = time || 16;
 
	var x1 = 0;
	var y1 = 0;
	var x2 = 0;
	var y2 = 0;
	var x3 = 0;
	var y3 = 0;
 
	if (document.documentElement) {
		x1 = document.documentElement.scrollLeft || 0;
		y1 = document.documentElement.scrollTop || 0;
	}
	if (document.body) {
		x2 = document.body.scrollLeft || 0;
		y2 = document.body.scrollTop || 0;
	}
	var x3 = window.scrollX || 0;
	var y3 = window.scrollY || 0;
 
	// 滚动条到页面顶部的水平距离
	var x = Math.max(x1, Math.max(x2, x3));
	// 滚动条到页面顶部的垂直距离
	var y = Math.max(y1, Math.max(y2, y3));
 
	// 滚动距离 = 目前距离 / 速度, 因为距离原来越小, 速度是大于 1 的数, 所以滚动距离会越来越小
	var speed = 1 + acceleration;
	window.scrollTo(Math.floor(x / speed), Math.floor(y / speed));
 
	// 如果距离不为零, 继续调用迭代本函数
	if(x > 0 || y > 0) {
		var invokeFunction = "goTop(" + acceleration + ", " + time + ")";
		window.setTimeout(invokeFunction, time);
	}
}

function check_inquery()
{
  if (trimall(document.getElementById("inquery_name").value) == false)
  {
    alert('Please input your name!')
    document.getElementById("inquery_name").select();
    return false;
  }
  
  if (trimall(document.getElementById("inquery_email").value) == false)
  {
    alert('Please input your email address!')
    document.getElementById("inquery_email").select();
    return false;
  }
  else if (!emailValidate(document.getElementById("inquery_email").value)) 
  { 
    alert('Unavailable Email Address!')
    document.getElementById("inquery_email").select();
    return false;
  }
  
  if (trimall(document.getElementById("inquery_question").value) == false)
  {
    alert('Please input your question!')
    document.getElementById("inquery_question").select();
    return false;
  }
  
  return true;
}
