//Check out 相关函数处理

//提交执行订单时进行ajax检测
function checkout_confirm_order(t)
{
	var url = "index.php?main_page=ajax&action=checkout_check";
	var notemsg = getid("notemsg").value;
	
	var payment = document.getElementsByName("payment");
　　for(i=0;i<payment.length;i++){
		if(payment[i].checked){
			select_payment = payment[i].value;	
　　	}
	}

	url += "&payment=" + select_payment;

	if(notemsg){
		url += "&notemsg="+EncodeUtf8(notemsg) + "&payment=" + select_payment;
	}

	var msg = get_ajax(url);
	if(msg == "ok")
	{
		var url = https + "index.php?main_page=checkout_confirmation";
		window.location.href = url;
		return true;
	}
	else
	{
		if(!msg) msg = "Error:please contact us";
		alert(msg);
		return false;
	}
}

//会员登录JS验证
function checkout_login_submit()
{
	checkout_login();
	return false;
}

function checkout_login(){
	var email = getid("login-email-address").value;
	if(!email || email.search(/^\w+((-\w+)|(\.\w+))*\@\w+((-\w+)|(\.\w+))*\.\w+$/) == -1){
		alert("Please type in a valid email address, such as sales@phpeshop.com");
		return false;
	}

	var pass = getid("login-password").value;
	if(!pass){
		alert("Please type in your password.");
		return false;
	}
	var url = "index.php?main_page=ajax&action=login_register_edit&email="+EncodeUtf8(email)+"&pass="+EncodeUtf8(pass);
	url += "&act=login";
	var loginok = get_ajax(url);
	if(loginok == "ok"){
		window.location.href = window.location.href;
		return true;
	}else{
		if(!loginok) loginok = "Error: login fail, Please check your email or password.";
		alert(loginok);
		return false;
	}
	return false;
}

//登记或更新 billing address
function checkout_billing_address(isuser)
{
	var ajaxurl = "index.php?main_page=ajax&action=checkout_billingaddress";
	var reg = (isuser || getid("login_guest").checked) ? false : true;//判断是否要登记为会员，已是会员不用登记
	var titlemsg = "";
	//[登记相关的billing address 信息]
	var male = getid("billing:male").checked;
	var m = male ? "m" : "f";
	ajaxurl += "&gender="+m;
	var firstname = getid("billing:firstname").value;
	if(!firstname){
		alert("First name is empty.");
		return false;
	}
	titlemsg += firstname + " ";
	ajaxurl += "&firstname="+EncodeUtf8(firstname);
	var lastname = getid("billing:lastname").value;
	if(!lastname){
		alert("Last name is empty.");
		return false;
	}
	titlemsg += lastname;
	ajaxurl += "&lastname="+EncodeUtf8(lastname);
	var address = getid("billing:street1").value;
	address = address.replace(/#/ig,"%23");
	address = address.replace(/&/ig,"%26");
	ajaxurl += "&address="+(address);
	titlemsg += ", "+address;
	var suburb = getid("billing:street2").value;
	suburb = suburb.replace(/#/ig,"%23");
	suburb = suburb.replace(/&/ig,"%26");
	ajaxurl += "&suburb="+(suburb);
	var countryid = getid("billing:country_id").value;
	ajaxurl += "&countryid="+parseInt(countryid);
	var city = getid("billing:city").value;
	if(!city){
		alert("City is empty!");
		return false;
	}
	ajaxurl += "&city="+EncodeUtf8(city);
	titlemsg += ", "+city;
	var postcode = getid("billing:postcode").value;
	if(!postcode){
		alert("Postcode is empty.");
		return false;
	}
	ajaxurl += "&postcode="+EncodeUtf8(postcode);
	titlemsg += ", "+postcode;
	titlemsg += ", ...";
	var zoneid = getid("bill_zone_id");
	if(zoneid){
		var zoneid_val = zoneid.value;
		if(!zoneid_val){
			alert("Error: State/Province not selected");
			return false;
		}
		ajaxurl += "&zone_id="+parseInt(zoneid_val);
	}else{
		var stateid = getid("bill_state");
		if(!stateid || stateid == "undefined"){
			alert("Error: State/Province not written");
			return false;
		}
		var stateid_val = stateid.value;
		if(!stateid_val || stateid_val == "undefined"){
			alert("Error: State/Province not selected OR written");
			return false;
		}
		ajaxurl += "&state="+EncodeUtf8(stateid_val);
	}
	var phone = getid("billing:telephone").value;
	if(!phone || !chk_telephone(phone)){
		alert("Telephone is empty or not valid.");
		return false;
	}
	ajaxurl += "&phone="+EncodeUtf8(phone);
	//如果是要注册成为会员
	if(reg){
		var password1 = getid("billing:customer_password").value;
		if(!password1){
			alert("Password is empty!");
			return false;
		}
		var password2 = getid("billing:confirm_password").value;
		if(!password2){
			alert("Confirm password is empty!");
			return false;
		}
		if(password1 != password2){
			alert("The password is different from the first time you filled in.");
		}
		ajaxurl += "&password1="+EncodeUtf8(password1);
		ajaxurl += "&password2="+EncodeUtf8(password2);
	}
	if(!isuser){
		var email = getid("billing:email").value;
		if(!email || email.search(/^\w+((-\w+)|(\.\w+))*\@\w+((-\w+)|(\.\w+))*\.\w+$/) == -1){
			alert("Please type in a valid email address, such as sales@totobay.com");
			return false;
		}

		ajaxurl += "&email="+EncodeUtf8(email);
	}
	//如果需要注册，加上参数
	if(reg)
	{
		ajaxurl += "&createuser=1";
	}
	var usebill = getid("billing:use_for_shipping_yes").checked ? 1 : 0;
	ajaxurl += "&usebill="+usebill;
	
	var msg = get_ajax(ajaxurl);//执行js动作
	if(msg == "ok")
	{
		//更新 check_li2_step2 里的内容
		getid("check_li2_step2").innerHTML = titlemsg;//更新第二步 title 里的提示内容
		checkout_shipping_method_reload();//重新加载计算 shipping method
		if(usebill)
		{
			getid("checksameas:billing").checked = true;
			//更新第三步信息
			getid("check_li2_step3").innerHTML = titlemsg;
			checkout_show_hidden("check_achieve_step3","check_unful_step3");
			//显示第四步
			checkout_div_show_hidden(4,350);
		}
		else
		{
			getid("checksameas:billing").checked = false;
			//显示第三步
			checkout_div_show_hidden(3,710);
		}
		return true;
	}
	else
	{
		if(!msg) msg = "Error: Failed...";
		alert(msg);
		return false;
	}
}

//登记或更新 shipping address
function checkout_shipping_address()
{
	var ajaxurl = "index.php?main_page=ajax&action=checkout_shippingaddress_save";
	var titlemsg = "";
	//[登记相关的billing address 信息]
	var male = getid("shipping:male").checked;
	var m = male ? "m" : "f";
	ajaxurl += "&gender="+m;
	var firstname = getid("shipping:firstname").value;
	if(!firstname)
	{
		alert("First name is empty.");
		return false;
	}
	titlemsg += firstname + " ";
	ajaxurl += "&firstname="+EncodeUtf8(firstname);
	var lastname = getid("shipping:lastname").value;
	if(!lastname)
	{
		alert("Last name is empty.");
		return false;
	}
	titlemsg += lastname;
	ajaxurl += "&lastname="+EncodeUtf8(lastname);
	var address = getid("shipping:street1").value;
	address = address.replace(/#/ig,"%23");
	address = address.replace(/&/ig,"%26");
	ajaxurl += "&address="+(address);
	titlemsg += ", "+address;
	var suburb = getid("shipping:street2").value;
	suburb = suburb.replace(/#/ig,"%23");
	suburb = suburb.replace(/&/ig,"%26");
	ajaxurl += "&suburb="+(suburb);
	var countryid = getid("shipping:country_id").value;
	ajaxurl += "&countryid="+parseInt(countryid);
	var city = getid("shipping:city").value;
	if(!city)
	{
		alert("City is empty!");
		return false;
	}
	ajaxurl += "&city="+EncodeUtf8(city);
	titlemsg += ", "+city;
	var postcode = getid("shipping:postcode").value;
	if(!postcode || postcode == "")
	{
		alert("Postcode is empty.");
		return false;
	}
	ajaxurl += "&postcode="+EncodeUtf8(postcode);
	titlemsg += ", "+postcode;
	titlemsg += ", ...";
	var zoneid = getid("ship_zone_id");
	if(zoneid)
	{
		var zoneid_val = zoneid.value;
		if(!zoneid_val)
		{
			alert("Error: State/Province not selected");
			return false;
		}
		ajaxurl += "&zone_id="+parseInt(zoneid_val);
	}
	else
	{
		var stateid = getid("ship_state");
		if(!stateid || stateid == "undefined")
		{
			alert("Error: State/Province not written");
			return false;
		}
		var stateid_val = stateid.value;
		if(!stateid_val || stateid_val == "undefined")
		{
			alert("Error: State/Province not selected OR written");
			return false;
		}
		ajaxurl += "&state="+EncodeUtf8(stateid_val);
	}
	var phone = getid("shipping:telephone").value;
	if(!phone || !chk_telephone(phone))
	{
		alert("Telephone is empty OR not valid");
		return false;
	}
	ajaxurl += "&phone="+EncodeUtf8(phone);
	var msg = get_ajax(ajaxurl);//执行js动作
	if(msg == "ok" || msg == "ok:refresh")
	{
		checkout_shipping_method_reload();//重新加载计算 shipping method
		//更新 check_li2_step2 里的内容
		getid("check_li2_step3").innerHTML = titlemsg;//更新第三步 title 里的提示内容
		//更新三步里的信息
		if(msg == "ok:refresh")
		{
			checkout_show_shipping_address("contact_info_shipping_address");
		}
		//显示第四步
		checkout_div_show_hidden(4,650);
		return true;
	}
	else
	{
		if(!msg) msg = "Error: Failed...";
		alert(msg);
		return false;
	}
}


function checkout_show_shipping_address(id,val)
{
	if(!id)
	{
		return false;
	}
	var url = "index.php?main_page=ajax&action=checkout_shippingaddress";
	if(val && val != "undefined")
	{
		url += "&address_bookid="+val;
	}
	var msg = get_ajax(url);
	getid(id).innerHTML = msg;
	return true;
}

function checkout_use_billing()
{
	var chk = getid("checksameas:billing").checked;
	if(chk)
	{
		//存储session id 告诉 下一步将使用 billing address 替换 shipping address
		var url = "index.php?main_page=ajax&action=checkout_setshippingid&usebill=1";
		get_ajax(url);
		var titlemsg = "";
		var firstname = getid("billing:firstname").value;
		titlemsg += firstname + " ";
		var lastname = getid("billing:lastname").value;
		titlemsg += lastname;
		var address = getid("billing:street1").value;
		titlemsg += ", "+address;
		var city = getid("billing:city").value;
		titlemsg += ", "+city;
		var postcode = getid("billing:postcode").value;
		titlemsg += ", "+postcode;
		titlemsg += ", ...";
		checkout_shipping_method_reload();//重新加载计算 shipping method
		getid("check_li2_step3").innerHTML = titlemsg;//更新第三步 title 里的提示内容
		checkout_div_show_hidden(4,650);
	}
}

//设置shipping method 信息
function checkout_shipping_method(str)
{
	if(!str || str == "undefined" || str == "")
	{
		alert("Please select a logistics");
		return false;
	}
	var id_array = str.split(",");
	var len = id_array.length;
	//弹出窗口窗为
	var op = true;
	for(var i=0;i<len;i++)
	{
		var shipping = id_array[i].split("|");
		var id = "shipping_method_"+shipping[0];
		if(getid(id).checked){
			op = false;
			var url = "index.php?main_page=ajax&action=checkout_shippingmethod_save&shipping="+shipping[1];
			var msg = get_ajax(url);
			if(msg.substr(0,2) == "ok"){
				getid("check_li2_step4").innerHTML = msg.substr(3);
				checkout_div_show_hidden(5,480);
				return true;
			}else{
				if(!msg) msg = "Error:failed.";
				alert(msg);
				return false;
			}
		}
	}
	if(op)
	{
		alert("Please select a logistics");
		return false;
	}
}

function show_this_payment(tid)
{
	if(!tid || tid == "undefined")
	{
		alert("Error: Forbidden");
		return false;
	}
	var url = "index.php?main_page=ajax&action=set_paymentid&id="+tid;
	var setmsg = get_ajax(url);
	var getmsg = getid("description_"+tid).innerHTML;
	if(getmsg)
	{
		getid("radio_"+tid).checked = true;
		getid("summary").innerHTML = getmsg;
		getid("summary").style.display = "";
	}
	else
	{
		getid("summary").style.display = "none";
	}
	return true;
}


//重新载入shipping method 内容信息
function checkout_shipping_method_reload()
{
	var url = "index.php?main_page=ajax&action=checkout_shipping_method";
	var msg = get_ajax(url);
	getid("checkout_step_shipping_method").innerHTML = msg;
	return true;
}

//重设 shipping address 处理方式
function checkout_shipping_address_reset()
{
	getid("checksameas:billing").checked = false;
	checkout_div_show_hidden(3,710);
	return true;
}

//重设 shipping method 处理方式
function checkout_shipping_method_reset()
{
	checkout_div_show_hidden(4,484);
	return true;
}

//重设 billing address 处理方式
function checkout_billing_address_reset()
{
	checkout_div_show_hidden(2,710);
	return true;
}


//设置 checkout method 是以何种方式处理
//支持的方式有：1、游客下单，2、注册为新会员后下单，3、会员登录下单
function checkout_setmethod(){
	//判断状态
	var guest = getid("login_guest").checked;
	if(guest){
		set_cookie("login_method","guest");
		getid("check_li2_step1").innerHTML = "Checkout as guest.";
		//用户禁用输入密码
		getid("register-customer-password").style.display = "none";
		var next_height = 710;
	}else{
		set_cookie("login_method","user");
		getid("check_li2_step1").innerHTML = "Creating an account.";
		//用户需要输入密码
		getid("register-customer-password").style.display = "";
		var next_height = 710;
	}
	//隐藏登录窗口的样式
	checkout_div_show_hidden(2,next_height);
	return true;
}

//重设 checkout method 处理方式，默认
function checkout_setmethod_reset()
{
	checkout_div_show_hidden(1,350);
	return true;
}

//公用的样式

//逐渐显示菜单
//ID:指定的ID
//height:当前高度
//maxheight:最大高度
function checkout_show_list(id,height,maxheight,show_title_id,hidden_title_id)
{
	var p = 50; //每次递增50像素
	if(height>=maxheight)
	{
		return true;
	}
	if(height<1)
	{
		checkout_show_hidden(show_title_id,hidden_title_id);
	}
	getid(id).style.display = "";
	getid(id).style.overflow = "hidden";
	var mheight = parseInt(height) + p;
	if(mheight>maxheight)
	{
		getid(id).style.height = maxheight + "px";
		checkout_show_hidden(show_title_id,hidden_title_id);
		return true;
	}
	else
	{
		getid(id).style.height = mheight + "px";
		//每隔40毫秒执行一次
		evaljs("checkout_show_list('"+id+"',"+mheight+","+maxheight+",'"+show_title_id+"','"+hidden_title_id+"')",100);
	}
}

//逐渐隐藏菜单
function checkout_hidden_list(id,height,show_title_id,hidden_title_id)
{
	if(!id)
	{
		return false;
	}
	var id_array = id.split(",");
	var id_length = id_array.length;
	for(var i=0;i<id_length;i++)
	{
		_checkout_hidden_list(id_array[i],height);
	}
	checkout_show_hidden(show_title_id,hidden_title_id);
	return true;
}

//逐渐隐藏菜单
function _checkout_hidden_list(id,height)
{
	//判断ID
	var p = 50;
	if(height<=0)
	{
		getid(id).style.display = "none";
		return true;
	}
	var mheight = parseInt(height) - p;
	if(mheight <= 0)
	{
		getid(id).style.display = "none";
		return true;
	}
	else
	{
		getid(id).style.display = "";
		getid(id).style.overflow = "hidden";
		getid(id).style.height = mheight + "px";
		evaljs("_checkout_hidden_list('"+id+"',"+mheight+")",100);
	}
}

//显示或隐藏指定菜单
function checkout_show_hidden(show_id_list,hidden_id_list)
{
	if(show_id_list && show_id_list != "undefined")
	{
		var id_array = show_id_list.split(",");
		var len = id_array.length;
		for(var i=0;i<len;i++)
		{
			getid(id_array[i]).style.display = "";
		}
	}
	if(hidden_id_list && hidden_id_list != "undefined")
	{
		var id_array = hidden_id_list.split(",");
		var len = id_array.length;
		for(var i = 0; i<len;i++)
		{
			getid(id_array[i]).style.display = "none";
		}
	}
	return true;
}

//判断是显示或是隐藏相关内容
//num参数表示要显示的步骤
function checkout_div_show_hidden(num,maxheight)
{
	var max = 5;
	var showid;//指定要显示的内容ID
	var title_showid;//指定要显示的主题ID
	var title_hiddenid;//指定要显示的
	var hiddenid;
	var title_showid_2;
	var title_hidden_2;
	var hidden_height;
	for(var i=1;i<=5;i++){
		if(i == num){
			showid = "one-page-checkout-step"+i;//要显示的内容ID
			title_showid = "check_un_title_step"+i+",check_under_step"+i;//要显示的头部ID
			if(i>1){
				if(i<5){
					title_hiddenid = "check_achieve_step"+i+",check_unful_step"+i;
				}else{
					title_hiddenid = "check_unful_step"+i;
				}
			}else{
				title_hiddenid = "check_achieve_step"+i;
			}
		}else{
			var tmp_hiddenid = "one-page-checkout-step"+i;
			var tmp_under = "check_under_step"+i;
			if(getid(tmp_under).style.display != "none"){
				hiddenid = tmp_hiddenid;
				hidden_height = getid(hiddenid).scrollHeight;
				if(i<num){
					title_showid_2 = "check_achieve_step"+i;
					if(num>1 && i>1){
						title_hiddenid_2 = "check_under_step"+i+",check_un_title_step"+i+",check_unful_step"+i;
					}else{
						title_hiddenid_2 = "check_under_step"+i+",check_un_title_step"+i;
					}
				}else{
					title_showid_2 = i>1 ? "check_unful_step"+i : "check_achieve_step"+i;
					if(i<5){
						title_hiddenid_2 = "check_under_step"+i+",check_un_title_step"+i+",check_achieve_step"+i;
					}else{
						title_hiddenid_2 = "check_under_step"+i+",check_un_title_step"+i;
					}
				}
			}
		}
	}
	checkout_show_list(showid,0,maxheight,title_showid,title_hiddenid);
	checkout_hidden_list(hiddenid,hidden_height,title_showid_2,title_hiddenid_2);
	return true;
}

