var host = document.location.hostname;
var url = ""+document.location;
var rootPath = url.substr(url.indexOf(host)+1+host.length);
var rootDir = rootPath.split("/")[0];

var AMETSU = {};
AMETSU.LOGIN_URL 				= "https://"+host+"/"+rootDir+"/app.php?a=login";
AMETSU.ORDER_HISTORY_URL 		= "https://"+host+"/"+rootDir+"/app.php?a=order_history";
AMETSU.ORDER_STATUS_URL 		= "/"+rootDir+"/app.php?a=order_status";
AMETSU.ORDER_SEARCH_PRODUCT_URL = "/"+rootDir+"/app.php?a=search_product";
AMETSU.CHECKOUT_URL 			= "https://"+host+"/"+rootDir+"/app.php?a=checkout";
AMETSU.SHOPPING_CART_URL		= "http://"+host+"/"+rootDir+"/app.php?a=shopping_cart";
AMETSU.ORDER_CONFIRMATION_URL	= "http://"+host+"/"+rootDir+"/app.php?a=order_confirmation";

var ORDER_CHANGES = {};

function goHome(){
	document.location = "http://"+host+"/"+rootDir+"/";
}
function searchProduct(name){
	//alert("product: "+name);
	document.location = AMETSU.ORDER_SEARCH_PRODUCT_URL+'&target='+name;
	return false;
}

function searchOrder(id){
	document.location = AMETSU.ORDER_STATUS_URL+"&id="+id;
}

function showOrderStatus(id){
	document.location = AMETSU.ORDER_STATUS_URL+'&id='+id;
	return false;
}
function showOrderHistory(email, pass){
	var p = {};
	p['email'] = email;
	p['pass'] = pass;
	doPost(AMETSU.ORDER_HISTORY_URL, p);
}

function login(email, pass, onsuccess, onfailure){
	var url = "/"+rootDir+"/app.php";
	var p = {};
	
	p["email"] 	= email;
	p["pass"] 	= pass;
	p["a"] 		= "do_login";
	
	$.post(url, p, function(res){
		if (res.success) {
			if (onsuccess)
				onsuccess(res.user);
   		}
		else {
			if (onfailure)
				onfailure(res.errorCode, res.errorMessage);
		}
	}, "json");
}
function logout(onsuccess, onfailure){
	var url = "/"+rootDir+"/app.php";
	var p = {};
	p["a"] 		= "do_logout";
	
	$.post(url, p, function(res){
		if (res.success) {
			if (onsuccess)
				onsuccess(res.user);
   		}
		else {
			if (onfailure)
				onfailure(res.errorCode, res.errorMessage);
		}
	}, "json");
}
function closeAccount(onsuccess, onfailure){
	var url = "/"+rootDir+"/app.php";
	var p = {};
	p["a"] 		= "close_account";
	
	$.post(url, p, function(res){
		if (res.success) {
			if (onsuccess)
				onsuccess(res.user);
   		}
		else {
			if (onfailure)
				onfailure(res.errorCode, res.errorMessage);
		}
	}, "json");
}

function retrievePassword(email, dob, onsuccess, onfailure){
	var url = "/"+rootDir+"/app.php";
	var params = { 
			a: 'retrieve_password',
			email: email,
			dob: dob};
	
	$.post(url, params, function(res){
		if (res.success) {
			if (onsuccess){
				onsuccess();
			}
   		}
		else {
			if (onfailure){
				onfailure(res.errorCode, res.errorMessage);
			}
		}
	}, "json");
}

function checkout(rate, items, onsuccess, onfailure){
	var url = "/"+rootDir+"/app.php";
	var params = { 
			a: 'proceed_to_checkout',
			rate: rate,
			items: items };
	
	$.post(url, params, function(res){
		if (res.success) {
			if (onsuccess){
				onsuccess();
			}
			document.location = AMETSU.CHECKOUT_URL+'&id='+res.id;
   		}
		else {
			if (res.errorCode==-102){ // invalid login
				document.location = AMETSU.LOGIN_URL;
				return;
			}
			if (onfailure)
				onfailure(res.errorCode, res.errorMessage);
		}
	}, "json");
}

function deleteFromShoppingCart(index, id, packNum, quantity, onsuccess, onfailure){
	var url = "/"+rootDir+"/app.php";
	var params = { 
			a: 'remove_from_shoppingcart',
			index: index,
			pack: packNum,
			quantity: quantity,
			remove: id };
	
	$.post(url, params, function(res){
		if (res.success) {
			if (onsuccess){
				onsuccess();
			}
			document.location = AMETSU.SHOPPING_CART_URL;
   		}
		else {
			if (res.errorCode==-102){ // invalid login
				document.location = AMETSU.LOGIN_URL;
				return;
			}
			if (onfailure)
				onfailure(res.errorCode, res.errorMessage);
		}
	}, "json");
}
function addToShoppingCart(id, quantity1, quantity2, onsuccess, onfailure){
	if (quantity2==null) {
		quantity2=0;
	}
	if (quantity1==0 && quantity2==0){
		alert("購入数を選択してください");
	}
	else {
		var url = "/"+rootDir+"/app.php";
		var params = { 
				a: 'add_to_shoppingcart',
				single: quantity1,
				double: quantity2,
				add: id };
		
		$.post(url, params, function(res){
			if (res.success) {
				//confirm("追加されました");
				/*if (onsuccess){
					try { onsuccess(); 	}
					catch(ex) {} // ignore.
				}*/
				document.location = AMETSU.SHOPPING_CART_URL;
	   		}
			else {
				if (res.errorCode==-102){ // invalid login
					document.location = AMETSU.LOGIN_URL;
				}
				else {
					if (onfailure)
						onfailure(res.errorCode, res.errorMessage);
				}
			}
		}, "json");
	}
}
function urldecode(str){
	 return decodeURIComponent(str.replace(/\+/g, '%20'));
}
function un(val){
	return urldecode(val);
	//var decode = val != null ? urldecode(val) : val;
	//return decode;
}
function sizeof(obj) {
    var size = 0, key;
    for (key in obj) {
        if (obj.hasOwnProperty(key)) size++;
    }
    return size;
}


function isNumeric(sText)
{
   var ValidChars = "0123456789.";
   var IsNumber=true;
   var Char;

 
   for (i = 0; i < sText.length && IsNumber == true; i++) 
      { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
         {
         IsNumber = false;
         }
      }
   return IsNumber;
  
}

function validDate(yyyy, mm, dd){
	var date = new Date(yyyy, mm-1, dd)
	if ((date.getMonth()+1!=mm)||(date.getDate()!=dd)||(date.getFullYear()!=yyyy))
		return false;
	else
		return true;
}

function addOrderChange(input){
	var name = input.attr('name');
	var value = input.val();
	if (name == 'dob_yyyy' || name == 'dob_mm' || name == 'dob_dd'){
		var yyyy = $('#dob_yyyy').val();
		var mm = $('#dob_mm').val();
		var dd = $('#dob_dd').val();
		if(validDate(yyyy,mm,dd)){
			var dob = yyyy+"-"+dd+"-"+mm;
			ORDER_CHANGES['dob'] = dob;
		}
		else {
			//alert('誕生日を正しく入力してください');
		}
	}
	else  {
		ORDER_CHANGES[name] = value;
	}
}
function updateOrderEntry(onsuccess, onfailure){
	var msg = "";
	for(var k in ORDER_CHANGES){
		var v = ORDER_CHANGES[k];
		msg += k +" = "+v +"<br />";
	}
	if(sizeof(ORDER_CHANGES) ==0){
		if ($('#email').val() && onsuccess){
			// this is where the user came back to this page
			// after all the inputs were entered previously.
			// let the user go to the next page.
			onsuccess();
		}
	}
	else {
		var id = $('#id').val();
		ORDER_CHANGES['login_id'] = $('#login_id').val();
		updateOrder(id, ORDER_CHANGES, onsuccess, onfailure);
	}
	return false;
}

function updateOrder(id, params, onsuccess, onfailure){
	var url = "/"+rootDir+"/app.php?a=update_order&id="+id;
	$.post(url, params, function(res){
		if (res.success) {
			ORDER_CHANGES = {};
			if (onsuccess)
				onsuccess();
   		}
		else {
			if (onfailure)
				onfailure(res.errorCode, res.errorMessage);
		}
	}, "json");
}

function updatePassword(id, pass, onsuccess, onfailure){
	var url = "/"+rootDir+"/app.php?a=change_password_submit";
	if (pass.length<6 || pass.length>8){
		alert("パスワードは6文字以上、8文字以下の半角英数字を入力してください。");
		return;
	}
	else {
		var params={id: id, pass: pass};
		$.post(url, params, function(res){
			if (res.success) {
				if (onsuccess)
					onsuccess();
	   		}
			else {
				if (onfailure)
					onfailure(res.errorCode, res.errorMessage);
			}
		}, "json");
	}	
}

function updateAccountInfo(params, onsuccess, onfailure){
	var url = "/"+rootDir+"/app.php?a=update_account_submit";
	$.post(url, params, function(res){
		if (res.success) {
			if (onsuccess)
				onsuccess();
   		}
		else {
			if (onfailure)
				onfailure(res.errorCode, res.errorMessage);
		}
	}, "json");
}

function commitOrder(){
	var status = $('#status').val();
	{
		$('.column').css('display', 'none');
		$("<div style='margin:100px 0px;font-size:24px'>しばらくお待ちください・・・<br/><img style='margin:40px;' src='/"+rootDir+"/image/loading_30.gif'></img></div>").insertAfter('.column');
		var url = "/"+rootDir+"/app.php?a=commit_order";
		var params = {};
		$.post(url, params, function(res){
			if (res.success) {
				//setTimeout("gotoOrderConfirmation("+res.order_id+")", 500);
				gotoOrderConfirmation(res.order_id);
	   		}
			else {
				alert(decodeURIComponent(res.errorMessage));
				if(res.redirect != null){
					document.location = res.redirect;
				}
				else {
					document.location = AMETSU.SHOPPING_CART_URL;
					//$('.column').css('display', 'block');
					//$('#message').remove();
				}
			}
		}, "json");
	}
	return false;
}
function gotoOrderConfirmation(id){
	document.location = AMETSU.ORDER_CONFIRMATION_URL+'&id='+id;
}
function doGet(url, params){
	doHttpRequset(url, params, "get");
}
function doPost(url, params){
	doHttpRequset(url, params, "post");
}
function doHttpRequset(url, params, method) {
    method = method || "post"; // Set method to post by default, if not specified.
    
    // The rest of this code assumes you are not using a library.
    // It can be made less wordy if you use one.
    var form = document.createElement("form");
    form.setAttribute("method", method);
    form.setAttribute("action", url);

    for(var key in params) {
        var hiddenField = document.createElement("input");
        hiddenField.setAttribute("type", "hidden");
        hiddenField.setAttribute("name", key);
        hiddenField.setAttribute("value", params[key]);

        form.appendChild(hiddenField);
    }

    document.body.appendChild(form);    // need this firefox
    form.submit();
}

function getClientSize() {
     var dimensions = {width: 0, height: 0};
     if (document.documentElement) {
          dimensions.width = document.documentElement.offsetWidth;
          dimensions.height = document.documentElement.offsetHeight;
     } else if (window.innerWidth && window.innerHeight) {
          dimensions.width = window.innerWidth;
          dimensions.height = window.innerHeight;
     }
     return dimensions;
}

