function addBookmark(title,url) {
	if (window.sidebar) {
		window.sidebar.addPanel(title, url,"");
	} else if( document.all ) {
		window.external.AddFavorite( url, title);
	} else if( window.opera && window.print ) {
		return true;
	}
}

function make_zero_padding(keta, num){
	var src = new String(num);
	var cnt = keta - src.length;
	if (cnt <= 0) return src;
	while (cnt-- > 0) src = "0" + src; return src;
}

function addComma(value){
    for(commaIdx=0;commaIdx<value.length/3;commaIdx++){
        value = value.replace(/^([+-]?\d+)(\d\d\d)/,"$1,$2");
    }
    return value;
}

function removeComma(value) {
    return value.split(",").join("")
}

function select_box_clear(name) {
  var selectbox = document.getElementById(name);
	selectbox.options.length = 1;
}

function radio_value_get(form_name, elm_name) {
	var nodes = Form.getInputs($(form_name), 'radio', elm_name);
	var selectedItem = $A(nodes).find(function(aNode) { return aNode.checked; });
	return selectedItem.value;
}

function encode_stn_code_type1() {
	var stn_code_flag = false;
	var tmp_stn_hash = new Object;

	ret_code = '';
	line_len = $('line_len').value;
  stone_cm = $('stone_cm').value;
	try{
		assent = radio_value_get('form1', 'assent');
	}catch(e){
		assent = 0;
	}

	for(stIdx=0;stIdx<line_len;stIdx++){
		if (checked_stone[stIdx]['id'] && checked_stone[stIdx]['id'] != '') {
			tmpId = checked_stone[stIdx]['id'];
			stn_code_flag = true;
		} else {
			tmpId = '0';
		}
		add_str = '';
		if(tmp_stn_hash[tmpId]){
			add_str = add_str+tmp_stn_hash[tmpId];
		}

		tmp_str = make_zero_padding(2, parseInt(stIdx).toString(16));
		tmp_stn_hash[tmpId] = add_str+tmp_str;
	}

// 先頭1bit 予約(=1)
// 2bit     許諾（0:いいえ　1:はい）
// 3bit     type（0:type1　 1:type2）
// 4bit     予約
// 5～8bit  石サイズ
	head_code = '1'+assent+'00';
  ret_code  = parseInt(head_code+make_zero_padding(4, parseInt(stone_cm).toString(2)), 2).toString(16);
// 石個数
//  ret_code = ret_code + make_zero_padding(2, parseInt(line_len).toString(16));

// 石コードを2進数文字列で4×○bitになるか を接頭bit
// これを元に石コードを抽出
// この石が何個配置されているかを8bitで表記
// この石が何番目に配置されているかを8bitで個数分連続表記
	for (var keyString in tmp_stn_hash) {
		tmp_stn_code_len = parseInt(keyString).toString(2).length;
		tmp_stn_code_l   = Math.ceil(tmp_stn_code_len / 4);

		tmp_stn_code     = parseInt(keyString).toString(2);
		tmp_stn_code     = make_zero_padding(tmp_stn_code_l * 4, tmp_stn_code);

		tmp_stn_code     = make_zero_padding(4, parseInt(tmp_stn_code_l).toString(2))+''+tmp_stn_code;
		tmp_stn_code     = parseInt(tmp_stn_code, 2).toString(16);
		tmp_stn_code     = tmp_stn_code+''+make_zero_padding(2, parseInt(tmp_stn_hash[keyString].toString().length/2).toString(16));
		tmp_stn_code     = tmp_stn_code+''+tmp_stn_hash[keyString];
		ret_code = ret_code + tmp_stn_code;
	}

	if(!stn_code_flag){
		ret_code = '';
	}
	return ret_code;
}

function encode_stn_code_type2() {

	var stn_code_flag = false;
	var add_stn_index  = new Array();
	var add_stn_num    = new Array();

	ret_code = '';
	line_len = $('line_len').value;
  stone_cm = $('stone_cm').value;
	try{
		assent = radio_value_get('form1', 'assent');
	}catch(e){
		assent = 0;
	}

	tmpId   = -1;
	add_num = 0;
	add_index = -1;

	for(stIdx=0;stIdx<line_len;stIdx++){
		if (checked_stone[stIdx]['id'] && checked_stone[stIdx]['id'] != '') {
			stn_code_flag = true;
		} else {
			checked_stone[stIdx]['id'] = 0;
		}

		if(tmpId == checked_stone[stIdx]['id']){
		}else{
			add_index = add_index + 1;
			add_num = 0;
		}

		add_num = add_num+1;

		add_stn_index[add_index] = checked_stone[stIdx]['id'];
		add_stn_num[add_index]   = add_num;

		tmpId = checked_stone[stIdx]['id'];
	}

// 先頭1bit 予約(=1)
// 2bit     許諾（0:いいえ　1:はい）
// 3bit     type（0:type1　 1:type2）
// 4bit     予約
// 5～8bit  石サイズ
	head_code = '1'+assent+'10';
  ret_code = parseInt(head_code+make_zero_padding(4, parseInt(stone_cm).toString(2)), 2).toString(16);
// 石個数
//  ret_code = ret_code + make_zero_padding(2, parseInt(line_len).toString(16));

// 石コードを2進数文字列で4×○bitになるか を接頭bit
// これを元に石コードを抽出
// この石が何個並んでいるかを8bitiで表記
	for (stIdx=0;stIdx<add_stn_index.length;stIdx++) {
		stIdString       = add_stn_index[stIdx];
		tmp_stn_code_len = parseInt(stIdString).toString(2).length;
		tmp_stn_code_l   = Math.ceil(tmp_stn_code_len / 4);

		tmp_stn_code     = parseInt(stIdString).toString(2);
		tmp_stn_code     = make_zero_padding(tmp_stn_code_l * 4, tmp_stn_code);

		tmp_stn_code     = make_zero_padding(4, parseInt(tmp_stn_code_l).toString(2))+''+tmp_stn_code;
		tmp_stn_code     = parseInt(tmp_stn_code, 2).toString(16);
		tmp_stn_code     = tmp_stn_code+''+make_zero_padding(2,parseInt(add_stn_num[stIdx]).toString(16));
		ret_code = ret_code + tmp_stn_code;
	}

	if(!stn_code_flag){
		ret_code = '';
	}
	return ret_code;
}

// ※サーバから取得するためJavaScriptにてdecodeすることはない
function decode_stn_code(enc_stn_code) {
	stn_code_byte = set16bit_to_2bit(enc_stn_code);
	enc_type = parseInt(stn_code_byte.substr(2, 1), 2);
	stone_cm = parseInt(stn_code_byte.substr(4, 4), 2);
//	line_len = parseInt(stn_code_byte.substr(8, 8), 2);

  $('stone_cm').value = stone_cm;

//	len_cnt = 16;
	len_cnt = 8;

	stn_idx = 0;
	while(len_cnt < stn_code_byte.length){
		tmp_code_len = parseInt(stn_code_byte.substr(len_cnt, 4), 2);
		len_cnt = len_cnt + 4;

		tmp_stn_code = parseInt(stn_code_byte.substr(len_cnt, tmp_code_len*4), 2);
		len_cnt = len_cnt + tmp_code_len*4;

		tmp_stn_cnt = parseInt(stn_code_byte.substr(len_cnt, 8), 2);
		len_cnt = len_cnt + 8;

		if(enc_type == 0){
			for(stn_idx=0;stn_idx<tmp_stn_cnt;stn_idx++){
				tmp_stn_pos = parseInt(stn_code_byte.substr(len_cnt, 8), 2);
				len_cnt = len_cnt + 8;
			}
		}else{
		}
		stn_idx = stn_idx + 1;
	}

}

function set16bit_to_2bit(enc_stn_code) {
	ret_code = ''
	for(bit_len=0;bit_len<enc_stn_code.toString().length;bit_len++){
		ret_code = ret_code + make_zero_padding(4, parseInt(enc_stn_code.substr(bit_len, 1), 16).toString(2));
	}
	return ret_code;
}

var tweet_window;
  function tweet(redirect_url) {
    var login  = 'tenchoatpst'; // ← bitly に登録したユーザ名
    var apiKey = 'R_9776f837973120e62af50bfa811b0483'; // ← bitly API Key
    bitly = 'http://api.bit.ly/shorten' 
        + '?version=2.0.1&format=json&callback=callback'
        + '&login=' + login
        + '&apiKey=' + apiKey + '&longUrl=';
    var script = document.createElement('script');
    script.type = 'text/javascript';
    script.src = bitly + encodeURIComponent($('stn_design_url').value) ;
    document.body.appendChild(script);

		try{
			opn_tweet_wdw_flag = 0
			if(tweet_window != null){
				if(tweet_window.closed == true){
					opn_tweet_wdw_flag = 1
					tweet_window = null;
				}
				else{
					if(tweet_window.name != 'tweet_window'){
						opn_tweet_wdw_flag = 1
						tweet_window = null;
					}
				}
			}
			else{
				opn_tweet_wdw_flag = 1
			}
			if(opn_tweet_wdw_flag == 1){
				tweet_window = window.open("about:blank", "tweet_window");
			}
		}catch(e){}
  }

  function callback(bitlyResponse) {
    var title = $('tweet_title').value;
    var url = 'http://twitter.com/home/?status=' 
        + encodeURIComponent(
             title + ' ' 
               + bitlyResponse.results[$('stn_design_url').value]['shortUrl'] + ' #ordermade'
          );
//    window.open(url);
		try{
			tweet_window.location.href=url;
			tweet_window.focus();
		}catch(e){}
  }

