﻿// JScript 文件

// 全局数据区
var gBasicPrice;
var gAddPrice;
var gBasicWeight;
var gCalcMethod;
var bNewSearch = false;
var Cart_Window = null;



///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///                                      判断浏览器版本                                                                 ///
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


function Browser() { 

var ua, s, i; 

this.isIE = false; // Internet Explorer 
this.isNS = false; // Netscape 
this.version = null; 

ua = navigator.userAgent; 

s = "MSIE"; 
if ((i = ua.indexOf(s)) >= 0) { 
this.isIE = true; 
this.version = parseFloat(ua.substr(i + s.length)); 
return; 
} 

s = "Netscape6/"; 
if ((i = ua.indexOf(s)) >= 0) { 
this.isNS = true; 
this.version = parseFloat(ua.substr(i + s.length)); 
return; 
} 

// Treat any other "Gecko" browser as NS 6.1. 

s = "Gecko"; 
if ((i = ua.indexOf(s)) >= 0) { 
this.isNS = true; 
this.version = 6.1; 
return; 
} 
} 

var browser = new Browser();


///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///                                      得知父窗口自己的名柄                                                           ///
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



function Get_MyHandle()
{
    var Parent_Window = window.opener;
    try
    {
        Cart_Window = Parent_Window.Cart_Window;
    }
    catch(e){}
}


setInterval("Get_MyHandle()", 500);


//无刷新获取数据
function openurl(url)
{ 
    var objxml=new ActiveXObject("Microsoft.XMLHttp") 
    objxml.open("GET",url,false); 
    objxml.send(); 
    retInfo=objxml.responseText;
    if (objxml.status=="200")
    { 
        return retInfo; 
    } 
    else
    {
        return "Error"; 
    }
}

//生成超链接的代码
function GetLinkString(vstUrl, vstText)
{
  var value = "";
  value = "<a href=\"" + vstUrl + "\">" + vstText + "</a>";
  return value;
}

// 精确计算浮点数的函数
// 感谢billschen编写的这个函数
// 如有版权问题请即时告诉我们，我们将马上停止使用这段代码
// 引用 caihuijun2727@126.com
function calFloat(c,d,n)
{

	/**
	 * a,b 小数"字符串"
	 * n运算类型： 0为+ 1为- 2为乘 3为除
	 */
	//去掉空相
	var re = /\s/g;
	var a=c.replace(re,"");
	var b=d.replace(re,"");

	var cutN    ="10000000000000";
	var cutZero = "00000000000";

	var dot=".";

	//将小数输入为整数

	var adot  = a.indexOf(dot)>0 ? a.length-a.indexOf(dot):0;
	var bdot  = b.indexOf(dot)>0 ? b.length-b.indexOf(dot):0;

	var cutA  = adot>0? parseInt(cutN.substr(0,adot)):1;
	var cutB  = bdot>0? parseInt(cutN.substr(0,bdot)):1;

	var maxcutAB = Math.max(cutA,cutB); 
	var mincutAB = Math.min(cutA,cutB); 

	var cutAB = maxcutAB/mincutAB ; 
	var numA = 0 ; var numB = 0;

	var inzero = cutZero.substr(0,(cutAB.toString()).length-1);
	var cutLen = (maxcutAB.toString()).length-1;

	if(adot==bdot){
		numA  = parseInt(a.replace(dot,""),10);
		numB  = parseInt(b.replace(dot,""),10);
	} else if(adot>bdot){
		numA  = parseInt(a.replace(dot,""),10);
		numB  = parseInt(b.replace(dot,"")+inzero,10);
	} else{
		numB  = parseInt(b.replace(dot,""),10);
		numA  = parseInt(a.replace(dot,"")+inzero,10);
	}

	var numAB = "0.0";
	var lastN = "0.0";

	switch(n){
		case 0: //加
		numAB = ((numA+numB)/maxcutAB).toString();
		break;

		case 1: //减
		numAB = ((numA-numB)/maxcutAB).toString();
		break;

		case 2: //乘
		numAB = (Math.abs(numA*numB)).toString();
		cutLen = cutLen*2;
		break;

		case 3: //除
		numAB = (numA/numB).toString();
		break;
	}
	//对乘法的特别处理
	if(n==2){
		if (numAB.length<=cutLen){
			numAB = cutZero.substr(0,cutLen-numAB.length+1)+numAB;
		}
		if(Math.abs(numA*numB) !=numA*numB ){
			numAB = "-"+numAB;
		}
		numAB = numAB.slice(0,numAB.length-cutLen)+"."+numAB.slice(numAB.length-cutLen);
	}


	return parseFloat(numAB).toString();
}

//更新后台数据
function UpdateWeb(OptMode, Id)
{
    var stUrl;
    var rootAddress = location.toString();
    var Aexp = /^[\s|\S]*?mngproduct.aspx/g;
    rootAddress = rootAddress + "";
    rootAddress = ""+rootAddress.match(Aexp);
    rootAddress = rootAddress.substring(0, rootAddress.length-15);
    if(OptMode == "Add")
        stUrl = rootAddress + "BuyProduct.aspx?Opt=Add&Id=" + Id + "&Odr_Id=" + Lb_Order_Id.innerText;
    else if(OptMode == "Del")
        stUrl = rootAddress + "BuyProduct.aspx?Opt=Del&Id=" + Id;
    else if(OptMode == "GetCartNumber")
        stUrl = rootAddress + "GetCartNum.aspx";
    var value = openurl(stUrl);
    return value;
}

//计算价格
function CalcPrice(oTable, PriceIndex, NumIndex)
{
  var value = 0;                                    //返回值
  var RowsCount = oTable.rows.length;               //行数
  //建立循环来计算各行的价格之和
  for(var i=0; i<RowsCount; i++)
  {
    var tr = oTable.rows[i];
    var td = tr.cells[PriceIndex];
    var fPrice = parseFloat(td.innerText);
    td = tr.cells[NumIndex];
    var iProductNum = parseInt(td.innerText);
    value = calFloat(value + "", calFloat(fPrice + "", iProductNum + "", 2), 0);
  }
  //返回计算得到的价格
  return value;
}

//删除商品
function DeleteProduct(Id)
{
  var retInfo = UpdateWeb("Del", Id);
  //找到要删除商品所在的行
  var oTable = dgCart;
  var CountIndex = 3;
  var RowsCount = dgCart.rows.length;
  var tr;
  var td;
  var RowIndex;
  for(var i=0; i<RowsCount; i++)
  {
    tr = oTable.rows[i];
    td = tr.cells[1];
    var iId = td.children[0].innerText;
    if(Id == iId)
    {
      RowIndex = i;
      break;
    }
  }
  //根据商品数量进行操作，如果数量为一，则删掉这一行，否则只把数量减少1
  if(tr.cells[CountIndex].innerText == 1)
  {
    oTable.deleteRow(RowIndex);
  }
  else
  {
    var ProdCount = parseInt(tr.cells[CountIndex].innerText) - 1;
    tr.cells[CountIndex].innerText = ProdCount;
  }
  lbPrice.innerText = CalcPrice(dgCart, 2, 3);
  CalcTransFee0();
  if(oTable.rows.length == 0)
  {  
    lbPrice.innerText = "";
    dvTable.removeChild(oTable);
    lbEmptyCart.innerHTML = "购物车中暂时没有商品";
  }
}

//当点击购买商品按钮时执行的操作

function BuyProduct(Id, GoodNum2)
{
    var IdNum = UpdateWeb("GetCartNumber");
    
    var exp = /^\s*[0-9]+\s*$/g;
    if((GoodNum2 + "").match(exp) == null)
    {
        GoodNum2 = 1;
    }

    try
    {
        var a = Cart_Window.Window_Availuable;
        Cart_Window.focus();
        Cart_Window.BuyProduct(Id, GoodNum2);
    }
    catch(e)
    {
        Cart_Window = window.open("Cart.aspx?Id=" + Id + "&Num=" + GoodNum2 + "&IdNum=" + IdNum);        
    }
    
    //
//dd.alert("fff");

//  var retInfo = UpdateWeb("Add", Id);
//  if(retInfo == "Error")
//  {
//      alert("程序出现错误！");
//      return;
//  }
//  var nPos = 0;
//  var nOldPos = 0;
//  nPos = retInfo.indexOf(";");
//  var vPName = retInfo.substring(0, nPos);
//  nOldPos = nPos + 1;
//  nPos = retInfo.indexOf(";", nOldPos);
//  var vPPrice = retInfo.substring(nOldPos, nPos);
//  nOldPos = nPos + 1;
//  nPos = retInfo.indexOf(";", nOldPos);
//  var vPWeight = retInfo.substring(nOldPos, nPos);
//  
//  nOldPos = nPos + 1;
//  nPos = retInfo.indexOf(";", nOldPos);
//  var Order_Id = retInfo.substring(nOldPos, nPos);
//  
//  //PPrice = parseFloat(retInfo);
//  var table, tr, td;
//  if(dvTable.children.length == 0)
//  {
//    //创建一个新的表格并动态的插入一行
//    lbEmptyCart.innerText="";
//    table = document.createElement("table");
//    table.id = "dgCart";
//    table.border=1;
//    table.width="100%";
//    table.cellPadding = "0";
//    table.cellSpacing = "0";
//    table.borderColor = "#CCCCCC";
////	//写入表格的头
////    tr = table.insertRow(0);
////    td = tr.insertCell(0);
////    td.innerText = "商品名称";
////    td = tr.insertCell(1);
////    td.innerText = "单价";
////    td = tr.insertCell(2);
////    td.innerText = "数量";
////    td = tr.insertCell(3);
////    td.innerHTML = "重量";
//    
//    //td = tr.insertCell(4);
//    //td.innerHTML = "操作";
//    //写入第一行
//    tr = table.insertRow(0);
//    tr.align = "center";
//    td = tr.insertCell(0);
//    td.width=110;
//    td.innerHTML = Order_Id;
//    Lb_Order_Id.innerText = Order_Id;
//    td = tr.insertCell(1);
//    td.innerHTML = vPName + "<div style='display:none'>" + Id + "</div>" ;
//    td = tr.insertCell(2);
//    td.innerText = vPPrice;
//    td.width = 50;
//    td = tr.insertCell(3);
//    td.innerText = 1;
//    td.width = 20;
//    td = tr.insertCell(4);
//    td.innerText = vPWeight;
//    td.width = 50;
//    td = tr.insertCell(5);
//    td.width = 60;
//    td.innerHTML = GetLinkString("JavaScript:DeleteProduct(" + Id + ")", "Remove");
//    
//    // 显示表格
//    dvTable.appendChild(table);
//    
//    AddCartInfo();    
//  }
//  else
//  {
//    //增加新的一行
//    var haveOld = false;
//    var oTable = dgCart;
//    var CountIndex = 3;;
//    var Rowscount
//    var RowsCount = oTable.rows.length;           //行数
//    for(var i=0; i<RowsCount; i++)
//    {
//      tr = oTable.rows[i];
//      td = tr.cells[1];
//        var iId = td.children[0].innerText;
//        if(Id == iId)
//        {
//            haveOld = true;
//            break;
//        }
//    }
//    if(!haveOld)                                                //如果没有同种商品
//    {
//      //动态插入一行
//      var pos = dgCart.rows.length;
//      tr = dgCart.insertRow(pos);
//      tr.align="center";
//        td = tr.insertCell(0);
//        td.width=100;
//        td.innerHTML = Order_Id ;
//        td = tr.insertCell(1);
//        td.innerHTML = vPName + "<div style='display:none'>" + Id + "</div>" ;
//        td = tr.insertCell(2);
//        td.innerText = vPPrice;
//        td = tr.insertCell(3);
//        td.innerText = 1;
//        td = tr.insertCell(4);
//        td.innerText = vPWeight;
//        td = tr.insertCell(5);
//        td.innerHTML = GetLinkString("JavaScript:DeleteProduct(" + Id + ")", "Remove");
//    }
//    else                                                        //如果有同种商品
//    {
//      //将相应的行的数目加1
//      var ProdCount = parseInt(tr.cells[CountIndex].innerText) + 1;
//      tr.cells[CountIndex].innerText = ProdCount;
//    }
//  }
//  lbPrice.innerText = CalcPrice(dgCart, 2, 3);
//  lbPay.style.visibility = "visible";
//  CalcTransFee0();
}

// 为从后台取得的购物车信息增添其它信息
function AddCartInfo()
{
	//增加新的一行
//  var oTable = dgCart;
//	//写入表格的头
//    tr = oTable.insertRow(0);
//    td = tr.insertCell(0);
//    td.innerText = "我的购物车";
//    td = tr.insertCell(1);
//	td.colSpan = 4;
//	td.innerText = "保存订单，稍候支付";
//	var table = oTable;
//	
//	var RowsCount = table.rows.length;
//	
//	// 倒数第二行
//    tr = table.insertRow(RowsCount);
//    td = tr.insertCell(0);
//    td.innerHTML = "物品价格(<span id='lbPrice'></span>)+";
//    td.colSpan = 5;
    
//    var buttonToAdd = document.createElement("button");
//    buttonToAdd.value = "运费";
//    buttonToAdd.id = "FeeButton";

//    td.appendChild(buttonToAdd);
//    
//    td.innerHTML += "(<span id='lbTransFee'>?</span>)=";
//    
//    td.innerHTML += "合计(<span id='lbTotalFee'>?</span>)";
//    
//    var newFunction = new Function('divCityList.style.display="inline"');
//    form1.FeeButton.onclick = newFunction;
//    newFunction = null;
//  
//    // 倒数第一行
//    tr = table.insertRow(RowsCount + 1);
//    td = tr.insertCell(0);
//    td.align = "right";
//    td.innerHTML = "<button onclick='lbPay.click()'>支付</a>";
//    td.colSpan = 5;
    
    lbPrice.innerText = CalcPrice(dgCart, 2, 3);
    
    if(lbCityId.innerText != "")
    {
        var CityIdText = lbCityId.innerText;
        lbCityId.innerText = "";
        for(var i=0; i<form1.length; i++)
        {
                if(form1.elements[i].type == "checkbox" && form1.elements[i].id == "gvCheck" && form1.elements[i].value == CityIdText)
                {
                    form1.elements[i].click();
                }
        }
    }
}


// 计算重量
function CalcWeight()
{

    var oTable = dgCart;
    var value = 0;                                    //返回值
    var NumberIndex = 3;
    var RowsCount = oTable.rows.length;           //行数
    var WeightIndex = 4;
    //建立循环来计算各行的价格之和
    for(var i=0; i<RowsCount; i++)
    {
        var tr = oTable.rows[i];
        var td = tr.cells[WeightIndex];
        var fWeight = td.innerText;
        td = tr.cells[NumberIndex];
        var iProductNum = parseInt(td.innerText);
        value = calFloat(value+ "", calFloat(fWeight, iProductNum+"", 2), 0);
    }
    
    var Old_Value = value;
    
    
    value = calFloat(value + "", "2", 2);
    value = parseInt(value) + "";
    value = calFloat(value + "", "2", 3);
    if(parseFloat(value) < parseFloat(Old_Value))
    {
        value = calFloat(value, "0.5", 0);
    }
    
    //返回计算得到的价格
    return value;
}


// 保存城市信息
function TellCity(UsrId, CityId)
{
    for(var i = 0; i<form1.length; i++)
    {
        if(form1.elements[i].type == "checkbox" && form1.elements[i].id == "gvCheck")
            if(form1.elements[i].value == CityId)
                form1.elements[i].checked = true;
            else
                form1.elements[i].checked = false;
    }

    var stUrl;
    var rootAddress = location.toString();
    var Aexp = /^[\s|\S]*?mngproduct.aspx/g;
    rootAddress = rootAddress + "";
    rootAddress = ""+rootAddress.match(Aexp);
    rootAddress = rootAddress.substring(0, rootAddress.length-15);
    stUrl = rootAddress + "TellCity.aspx?usrid=" + UsrId + "&cityid=" + CityId;
    
    var value = openurl(stUrl);
    return value;
}


// 计算运费
// 参数 首重价格、续重价格、首重、计算公式
function CalcTransFee(BasicPrice, AddPrice, BasicWeight, CalcMethod)
{
    var fWeight = 0;
    if(dvTable.children.length != 0)
    {
        fWeight = CalcWeight();
    }
    //CalcMethod = "P1+P2*(MS-M0)";    

    CalcMethod = CalcMethod.replace(/P1/g, BasicPrice);
    CalcMethod = CalcMethod.replace(/P2/g, AddPrice);
    CalcMethod = CalcMethod.replace(/M0/g, BasicWeight);
    
    gCalcMethod = CalcMethod;
    CalcMethod = CalcMethod.replace(/MS/g, calFloat(calFloat(fWeight+"", "2", 2), "0.5", 1));

    gBasicPrice = BasicPrice;
    gAddPrice = AddPrice;
    gBasicWeight = BasicWeight;
    
  
    lbTransFee.innerHTML = eval(CalcMethod);

    if(fWeight == 0)
    {
        lbTransFee.innerText = "0";
    }

    var Pdt_Price = lbPrice.innerText;
    var Pdt_TransFee = lbTransFee.innerText;
    
    var nPos = Pdt_TransFee.indexOf(".");
    var TheChar = Pdt_TransFee.substring(nPos + 3, nPos+4);
    if(TheChar != "" && nPos != -1)
    {
        if(parseInt(TheChar)>=5)
            Pdt_TransFee = calFloat(Pdt_TransFee.substring(0, nPos + 3), "0.1", 0);
        else
            Pdt_TransFee = calFloat(Pdt_TransFee.substring(0, nPos + 3), "0", 0);
        lbTransFee.innerText = Pdt_TransFee;
    }

    
    lbTotalFee.innerText = calFloat(Pdt_Price ,Pdt_TransFee, 0);
}


// 计算运费2
// 参数 首重价格、续重价格、首重、计算公式
function CalcTransFee0()
{
    if(lbTransFee.innerText == "?")
        return;
    var fWeight = CalcWeight();
    var CalcMethod = gCalcMethod;
    CalcMethod = CalcMethod.replace(/MS/g, calFloat(calFloat(fWeight+"", "2", 2), "0.5", 1));
    var Pdt_Price = parseFloat(lbPrice.innerText);
    lbTransFee.innerHTML = eval(CalcMethod);
    if(fWeight == 0)
    {
        lbTransFee.innerText = "0";
    }
    var Pdt_TransFee = lbTransFee.innerText;
        var nPos = Pdt_TransFee.indexOf(".");
        
    var TheChar = Pdt_TransFee.substring(nPos + 3, nPos+4);
    
    if(TheChar != "" && nPos != -1)
    {
        if(parseInt(TheChar)>=5)
            Pdt_TransFee = calFloat(Pdt_TransFee.substring(0, nPos + 3), "0.1", 0);
        else
            Pdt_TransFee = calFloat(Pdt_TransFee.substring(0, nPos + 3), "0", 0);
        lbTransFee.innerText = Pdt_TransFee;
    }

    
    lbTotalFee.innerText = calFloat(Pdt_Price+"" ,Pdt_TransFee, 0);
}


function ChkInfo()
{
    form1.PTotalPrice.value = lbTotalFee.innerText;

    return true;
}

function HideDiv()
{
    divCityList.style.display = "none";
}




function IsEmpty()
{
    var value = true;
    
    if(lbTotalFee.innerText == "" || lbTotalFee.innerText == "0" || lbTotalFee.innerText == "?" || lbTotalFee.innerText == "NaN")
        value = false;
        
    if(value)
    {
        form1.Hf_Tatal_Price.value = lbTotalFee.innerText;
    }
        
    return value;
}

function DoPaypal()
{
    if(!IsEmpty())
        return;
        
    if(form1.Hf_Is_User.value == "False")
    {
        alert("Please register or login first!");
        return;
    }

    var rootAddress = location.toString();
    var Aexp = /^[\s|\S]*?mngproduct.aspx/g;
    rootAddress = rootAddress + "";
    rootAddress = ""+rootAddress.match(Aexp);
    rootAddress = rootAddress.substring(0, rootAddress.length-15);

    var obj = document.all.PaypalForm;
    obj.item_name.value += Lb_Order_Id.innerText;
    obj.amount.value = lbTotalFee.innerText;
    for(var i=0; i<obj.length; i++)
        if(obj.elements[i].name == "return")
            obj.elements[i].value = rootAddress + "PaypalReturn.aspx";
    obj.submit();
}

// 取得购买商品的数量
function GetCount(Id)
{
    BuyProduct(Id, 1);
    return true;
    //return;
    var ExistBefore = document.getElementById("Mb_Div_App");
    if(ExistBefore != null)
        document.body.removeChild(Mb_Div_App);
    var Mb_Div = document.createElement("div");
    Mb_Div.id = "Mb_Div_App";
    Mb_Div.innerHTML = "<center><p>" + "Please input the number of the products." + "</p></center><br>";
    Mb_Div.innerHTML += "<center><p>" + "<input type=\"text\" id=\"Ti_GoodNum\" name=\"Ti_GoodNum\" />" + "</p></center><br>";
    Mb_Div.innerHTML += "<center><button onclick=\"JavaScript:var GoodNum_Input = Ti_GoodNum.value;document.body.removeChild(Mb_Div_App);BuyProduct(" + Id + ", GoodNum_Input);\">确定</button>&nbsp;&nbsp;&nbsp;<button onclick=\"JavaScript:document.body.removeChild(Mb_Div_App);\">取消</button></center>";
    Mb_Div.style.color = "red";
    Mb_Div.style.position = "absolute";
    Mb_Div.style.top = event.clientY + "px";
    Mb_Div.style.left = event.clientX + "px";
    Mb_Div.style.width = "300px";
    Mb_Div.style.borderWidth = "1px";
    Mb_Div.style.borderStyle = "solid";
    Mb_Div.style.borderColor = "#AAAAAA";
    Mb_Div.style.backgroundColor = "#DDDDDD";
    Mb_Div.style.zIndex = "100000";
    document.body.appendChild(Mb_Div);
}

function DoSearch()
{
    SearchWord();
    LinkSearch.click();
}
