
function setSortableAreaHeight() {
	var maxHeight = 0;
		
	jQuery('div.connectedSortable').each(function(idx){
		if(idx == 0){
			maxHeight = jQuery(this).height();
		}else{
			if(maxHeight < jQuery(this).height())
				maxHeight = jQuery(this).height();
		}
	});
		
	jQuery('div.connectedSortable').height(maxHeight);
		
};

function resetHeight() {
	var Height = "100%";
		
	jQuery('div.connectedSortable').height(Height);
		
};

function saveGadgetInfo(){

	var right = "R";		//位置情報　右領域
	var left = "L";			//位置情報　左領域
	var str;
	var data = [];	//cookieデータ 領域(L or R)：番号：ID:表示(0)非表示(1):非アイコン化(0)アイコン化(1)の組み合わせのCSVデータ
	
	//mootools利用
	$("gadgetLeft").getElements(".gadget").each(function(item,idx){
		var closed = item.get("closed");
		
		if(closed == null){
			closed = "0";
		};
		
		var toggled = item.getElement(".gadgetInner").get("toggled");
		if(toggled == null){
			toggled = "0";
		};
		
		str = left+":"+idx+":"+item.get("id")+":"+closed+":"+toggled;
		data.push(str);
	});
	
	$("gadgetRight").getElements(".gadget").each(function(item,idx){
		var closed = item.get("closed");
		if(closed == null){
			closed = "0";
		};
		
		var toggled = item.getElement(".gadgetInner").get("toggled");
		if(toggled == null){
			toggled = "0";
		};
		
		str = right+":"+idx+":"+item.get("id")+":"+closed+":"+toggled;
		data.push(str);
	});
	
	//CSV作成
	str = data.join(",");
	
	//alert(str);

	//cookie保存(20年保存)
	jQuery.cookie('raysol_gadget',str,{ expires: 7200 });
};

function loadGadgetPosition(){
	
	var right = "#gadgetRight";
	var left = "#gadgetLeft";
	var data = [];
	
	//cookie取得
	//cookieデータ 領域(L or R)：番号：ID:表示(0)非表示(1):非アイコン化(0)アイコン化(1)の組み合わせのCSVデータ
	var str = jQuery.cookie('raysol_gadget');
	
	//alert(str);
	
	//配列へ変換
	if (str) {
		data = str.split(",");
	};
	
	//alert(print_r(data,true));
	
	//画面の再構築
	data.each(function(item,idx){
		var a_gadget = [];
		var element = [];
		
		a_gadget = item.split(":");
		
		/*			
		alert(
			a_gadget[0]
			+":"+a_gadget[1]
			+":"+a_gadget[2]
			+":"+a_gadget[3]
			+":"+a_gadget[4]
		);
		*/
		
		//要素を取得する
		element = document.getElementById(a_gadget[2]);
		
		//要素を削除する
		jQuery(a_gadget[2]).remove();
		
		if (a_gadget[0] == "L") {
			//左領域(gadgetLeft)
			//要素を追加する
			jQuery(left).append(element);
		}
		else {
			//右領域(gadgetRight)
			//要素を追加する
			jQuery(right).append(element);	
		}
		
		//非表示の場合
		if(a_gadget[3] == "1"){
			//チェックボックス処理(チェックを外す)
			jQuery('.gadget_slide[value='+a_gadget[2]+']').removeAttr('checked');
			
			jQuery('#'+a_gadget[2]).hide('blind');
			
			//属性値(closed=1)をセット
			jQuery('#'+a_gadget[2]).attr('closed','1');
			
		}
		
		//アイコン化の場合
		if(a_gadget[4] == "1"){
			var toggle_element = $(element).getElement('.gadgetInner');
			var mySlide = new Fx.Slide(toggle_element, {mode: 'vertical'});

			mySlide.toggle();
			
			//属性値取得
			var toggled = toggle_element.get('toggled');
			
			//属性値(toggled)をセット
			if(toggled == null)
			{
				toggle_element.set('toggled',1);
			}else if (toggled == '1'){
				toggle_element.set('toggled',0);
			}else{
				toggle_element.set('toggled',1);
			}
		}
	});
	
	//alert(print_r(data,true));
};

window.addEvent('domready', function(){
	var btns = $$('.toggle');
	var btns2 = $$('.close');
	var btns_open = $$('.open');
	var divs = $$('.gadgetInner');
	//var divs2 = $$('.gadget');
	var divs2 = jQuery('.gadget');
	var check = $$('.gadget_slide');

	//cookie取得
	loadGadgetPosition();

	//setSortableAreaHeight();
	
	//フローティングガジェット処理	
	jQuery(function() {
		
		jQuery("#gadgetLeft, #gadgetRight").sortable({
			connectWith: '.connectedSortable',
			placeholder : 'sortable-hover',
			handle : '.gadget-head',
			start : function(ev,ui){
				var height = ui.helper.height() - 4;
				var width = ui.helper.width() - 4;
				
				jQuery('.sortable-hover').css({'width' : width,'height': height });
				setSortableAreaHeight();	
				resetHeight();
				//setSortableAreaHeight();
			},
			stop : function(ev,ui){
				setSortableAreaHeight();
				//resetHeight();	
				saveGadgetInfo();
			}		
		});
	});
	
	//ガジェットtoggle
	btns.each(function(el,index){
		var mySlide = new Fx.Slide(divs[index], {mode: 'vertical'});

		btns[index].addEvent('click', function(e){
			e = new Event(e);
			mySlide.toggle();
			
			//属性値取得
			var toggled = $(divs[index]).get('toggled');
			
			//属性値(toggled)をセット
			if(toggled == null)
			{
				$(divs[index]).set('toggled',1);
			}else if (toggled == '1'){
				$(divs[index]).set('toggled',0);
			}else{
				$(divs[index]).set('toggled',1);
			}
			
			resetHeight();
			//setSortableAreaHeight();
			
			//ガジェット情報を記憶
			saveGadgetInfo();
			
			e.stop();
		});
	});

	//ガジェットクローズ処理
	btns2.each(function(el,index){
		btns2[index].addEvent('click', function(e){
			e = new Event(e);
			var id = jQuery(divs2[index]).attr('id');
			
			//チェックボックス処理(チェックを外す)
			jQuery('.gadget_slide[value='+id+']').removeAttr('checked');
			
			jQuery(divs2[index]).hide('blind');
			
			//属性値(closed=1)をセット
			jQuery(divs2[index]).attr('closed','1');
			
			resetHeight();
			//setSortableAreaHeight();
			
			//ガジェット情報を記憶
			saveGadgetInfo();
			
			e.stop();
		});
	});

	//ガジェットオープンクローズチェックボックス
	check.each(function(el,index){
		
		check[index].addEvent('click', function(e){
			
			var checked = check[index].get('checked');
			var id = check[index].get('value');
			
			if(checked)	{
				jQuery("#"+id).show('blind');
				//属性値(closed=0)をセット
				jQuery("#"+id).attr('closed','0');
			}
			else{
				jQuery("#"+id).hide('blind');
				//属性値(closed=1)をセット
				jQuery("#"+id).attr('closed','1');
			}
			
			saveGadgetInfo();
			resetHeight();

		});
	});
	
});
