// Place your application-specific JavaScript functions and classes here
// This file is automatically included by javascript_include_tag :defaults

//クッキーの設定
function setCookie(key, val, hour) {
   var d = new Date();
   var expireSec = d.getTime()+hour*60*60*1000;
   var expires = new Date(expireSec);
   document.cookie = key + "=" + val + ";expires="+expires.toGMTString()+";";
}

//クッキーの取得
function getCookie(key) {
   var tem = document.cookie;
   if (-1 < tem.indexOf(key)) {
	  temAry = new Array();
	  temAry = tem.split(";");
	  for (i = 0; i < temAry.length; i++) {
		  if (-1 < temAry[i].indexOf(key)) {
			 var value = temAry[i].substring((temAry[i].indexOf("=") + 1), temAry[i].length);
		  }
	  }
   } else {
	  var value = "";
   }
   return value;
}
//コメントスクロールのjs

function flash_comment(number) {
   var flash_base = document.getElementById('flashTL');
   select_comment(number,flash_base);
}
	
function select_comment(number,base) {
   target = document.form.article_id;
   for(i=0;i<target.options.length;i++){
       if(target.options[i].value == arguments[0]){
           target.options[i].selected = true;
       }
   }
   var eventTimer;    // タイマー変数
   var restScroll=0;    // スクロール残量

   // 移動元(base)要素＆オブジェクトを取得
   var obj_base = getElemPosition(base);
   // 移動先(move)要素＆オブジェクトを取得
   var elem_move = document.getElementById('commentTop');
   var obj_move = getElemPosition(elem_move);
   restScroll = obj_move.y-obj_base.y;
   eventTimer = setInterval(setScrollPosition,10);

   // スクロール処理をする
   function setScrollPosition() {
       var moveValue=0;
       // スクロール残量が80以上の場合、スクロール量を変える
       // Math.abs()では値の絶対値を取得
       if(Math.abs(restScroll)>80){
           moveValue = (restScroll>0)?20:-20;
       }else{
           moveValue = Math.round(restScroll/4);
       }
       // スクロールを処理
       parent.scrollBy(0,moveValue);
       // スクロール残量を計算して、残りが無ければタイマー解除
       restScroll = (restScroll>0)?restScroll-moveValue:restScroll-moveValue;
       if(moveValue==0){
           clearInterval(eventTimer);
           restScroll=0;
       }
   }
   
   // 要素の位置を取得し、オブジェクトとして返す
   function getElemPosition(elem) {
       var obj = new Object();
       obj.x = elem.offsetLeft;
       obj.y = elem.offsetTop;
       // 親要素を取得して位置情報を修正する
       while(elem.offsetParent) {
           elem = elem.offsetParent;
           obj.x += elem.offsetLeft;
           obj.y += elem.offsetTop;
       }
       return obj;
   }
}

function findFirstElement(_parent, expr){
  return (new Selector(expr)).findElements(_parent).shift();
}

var BlogpartsEditor = Class.create();
BlogpartsEditor.prototype = {
  initialize: function(target_form, url_base){ 
    this.target_form = $(target_form);
    this.url_base = url_base ;
    this.preview_window = null;

    this.apply_function_to_inputs(this);
  },

  apply_function_to_inputs: function(receiver){
    findFirstElement(this.target_form, "button.update_blogparts").onclick = function(){return receiver.update_blogparts();}
    findFirstElement(this.target_form, "button.preview_blogparts").onclick = function(){return receiver.preview_blogparts();}
    this.toggle_buttons().each( function(el){ el.onclick = function(){return receiver.toggle_detail()} } );

    this.target_form.blogpartsurl.onfocus = function(){this.select() };
  },

  toggle_buttons: function(){
    return (new Selector("a.toggle")).findElements(this.target_form);
  },

  url: function(){ return this.url_base + '?' + Form.serialize(this.target_form) ; },
  height: function(){ return this.target_form.height.value; },

  update_blogparts: function(){
    var input_tag = this.target_form.blogpartsurl;
    input_tag.value = '<div style="width:100%;"><iframe src="'+this.url()+'" width="100%" height="'+this.height()+'" scrolling="no" frameborder="0"></iframe></div>';
    input_tag.visualEffect('Highlight');
    return false;
  },

  preview_blogparts: function(){
    if(this.preview_window) this.preview_window.close();
    this.preview_window = window.open(this.url(), "_preview", "width=600, height=" + this.height() + ", scrollbars=yes, resizable=yes, toolbar=no, status=no");
    return false;
  },

  toggle_detail: function (){
    findFirstElement(this.target_form, "div.customize").toggle();
    this.toggle_buttons().each(function(el){el.toggle()}) ;
    return false ;
  }
}

