/*  createPintypeMarkerIcon
http://tenderfeel.xsrv.jp/googlemap/896/

syntax:
var marker = createPintypeMarkerIcon([marker options] [,PinIcon options]);

Marker options
MarkerOptions objectの仕様と同じ。mapとposition必須。
iconとshadowプロパティはPinicon optionsを設定すると上書きされます。

PinIcon options
Properties 	Type 	Description
fillColor 	string 	アイコンの中の色をシャープ無しの16進数カラーコードで指定。デフォルトは#FF776D
letter 	string 	アイコンのラベルテキスト。文字のみ
letterColor 	string 	アイコンのラベル色をシャープ無しの16進数カラーコードで指定。デフォルトは#000000
icon 	string 	アイコンに表示するラベル画像。Chart APIにあるリストから画像名で指定する。
pinStyle 	string 	アイコンのスタイル。
					pinStyle:pin … 直立(デフォルト)
					pinSyyle:star … 星付き
					pinStyle:left　… 右に傾く
					pinStyle:right … 左に傾く
starFillColor 	string 	pinStyle:starした場合の星の色。シャープ無しの16進数カラーコードで指定。デフォルトは#FFFF00

Google Chart APIドメイン
旧：chart.apis.google.com
新：chart.googleapis.com

*/


var createPintypeMarkerIcon = function (mopts, opts) {
	opts = (opts)? opts : {};
	var fillColor = opts.fillColor || "FF776D";
	var letter = escapeUserText_(opts.letter) || "";
	var letterColor = opts.letterColor || "000000";
	var icon = opts.icon || "";
	var pinStyle = "pin";
	var starFillColor = (opts.pinStyle==="star" && !opts.starFillColor)?"FFFF00":opts.starFillColor;
	var label = (letter||icon)?(letter||icon):"+";
	switch(opts.pinStyle){
		case "star": pinStyle = "pin_star"; break;
		case "left": pinStyle = "pin_sleft"; break;
		case "right": pinStyle = "pin_sright"; break;
		default: pinStyle = "pin";
	}
	var pinProgram = (icon) ? "_icon":"_letter";
	var baseUrl = "https://chart.googleapis.com/chart?chst=d_map_xpin"+pinProgram+"&chld=";
//	var baseUrl = "https://chart.apis.google.com/chart?chst=d_map_xpin"+pinProgram+"&chld=";
	var iconUrl = baseUrl+""+pinStyle+"|"+(label)+"|"+fillColor;
	if(label==="+") iconUrl += "|"; else if(letter) iconUrl += "|"+letterColor;
	if(opts.pinStyle==="star") iconUrl += "|"+starFillColor;
	if(isEmpty(opts)===false) mopts.icon=iconUrl;
	if(isEmpty(opts)===false && mopts.flat!==false){
		var shadowUrl = (pinStyle === "pin"||opts.pinStyle==="star")? "https://maps.google.com/mapfiles/shadow50.png":"https://chart.googleapis.com/chart?chst=d_map_xpin_shadow&chld="+pinStyle;
		var anc = (pinStyle === "pin"||opts.pinStyle==="star")? new google.maps.Point(10, 34):new google.maps.Point(14, 35)
		var shadow = new google.maps.MarkerImage(shadowUrl,
		new google.maps.Size(37, 34), new google.maps.Point(0,0), anc);
		mopts.shadow = shadow;
	}
	var m = new google.maps.Marker(mopts);
	return m;
	function escapeUserText_(text) {
	  if (text === undefined) {
		return null;
	  }
	  text = text.replace(/@/g, "@@");
	  text = text.replace(/\\/g, "@\\");
	  text = text.replace(/'/g, "@'");
	  text = text.replace(/\[/g, "@[");
	  text = text.replace(/\]/g, "@]");
	  return encodeURIComponent(text);
	};
	function isEmpty(hash) {
	  for ( var i in hash ) return false;
	  return true;
	};
};
