// form 객체를 통해 서비스 요청을 한다.
// mothod   : 전송방식으로 "get" 또는 "post"을 사용 할 수 있으며, form 객체의 method 속성과 동일하게 동작한다.
//            주의. post, get 방식을 제외한 어떠한 전송방식도 지원하지 않으며, 지원형식이 아닐 경우 기본 값으로 설정된다. 기본 값은 get 방식이다.
// action   : 서비스 요청 주소 파라미터이다.
//            일반적인 http 주소형식을 사용하며, 복수의 값을 전송할 경우 "key1=value1&key2=value2..."와 같이  & 문자로 연결해 준다.
//            단, value 값에 & 문자를 사용할 경우 %26으로 대체 사용하여야 한다.
// target   : 서비스 요청에 대한 응답 페이지를 출력할 목적지를 설정하며, form 객체의 target 속성과 동일하게 동작한다.
// onSubmit : 서비스 요청 즉시(페이지 분기 전) 실행할 handler 함수를 정의한다. form 객체의 onSubmit 이벤트와 동일하게 동작한다.
//            단, handler함수는 return 값을 가져야 하고 항상 boolean 타입 이어야 한다.
function forward(method,url,target,onSubmit) {
  var inputCnt = 0;

  // object가 null 이거나 문자열 또는 배열인 경우 길이가 0인 경우 true를 반환한다.
  // 두번째 argument가 있을 경우 결과가 true 이면 두번째 argument를 반환한다. 
  var isEmpty = function(object, value) {
    var retValue = null;
    switch(arguments.length) {
      case 1 :
        retValue = (object == null || (typeof object == "string" && object.length <= 0)) ? true : false;
        break;
      case 2 :
        retValue = this.isEmpty(object) ? value : object;
        break;
    }
    return retValue;
  }

  // input 객체를 생성한다.
  var createInput = function(type, name, value) {
    var input = document.createElement("input");
    input.setAttribute("id", "tmp_"+inputCnt++);
    input.setAttribute("type", type);
    input.setAttribute("name", name);
    input.setAttribute("value", value);
    return input;
  }

  // form 객체를 생성한다.
  var createForm = function(method,action,target,onSubmit) {
    method = isEmpty(method.match(/^(get|post)$/gi)) ? "get" : method.match(/^(get|post)$/gi).toString().toLowerCase();
    var form = document.createElement("form");
    form.setAttribute("method", method);
    form.setAttribute("action", action);
    if(!isEmpty(target)) form.setAttribute("target", target);
    if(!isEmpty(onSubmit)) form.setAttribute("onSubmit", onSubmit);
    return form;
  }

  var index = url.indexOf("?");
  var action = url;
  var param = "";
  if(index >= 0) {
    action = url.substring(0,index);
    param = url.slice(index+1).replace(/&amp;(amp;)*/gi,"&");
  }
  var form = createForm(method,action,target);
  if(!isEmpty(param)) {
    param = param.replace(/&(([^&=]+)=)/gi,String.fromCharCode("31")+"$1");
    var params = param.split(String.fromCharCode("31"));
    for(var i = 0; i < params.length; i++) {
      index = params[i].indexOf("=");
      form.appendChild(createInput("hidden",params[i].substring(0,index),params[i].slice(index+1).replace(/%26/gi,"&").replace(/%25/gi,"%")));
    }
  }
  document.body.appendChild(form);
  if(isEmpty(onSubmit)) form.submit();
  else if(typeof onSubmit == "function" && onSubmit()) form.submit();
  else if(typeof onSubmit == "string") {
    var isSubmit = eval(onSubmit);
    if( typeof isSubmit == "boolean" && isSubmit) form.submit();
  }
}

function errorHandler(message,exception) {
  switch(message) {
  case 'Access is denied' :
    alert('접근 권한이 없습니다.');
    break;
  case 'Timeout' :
    alert('응답시간을 초과하였습니다');
    break;
  default:
    alert(message);
  }
}

function research(uri){
	if($("._RESEARCH input[name='point']:checked").size() == 0) {
		alert("만족도를 선택해주세요.");
		return false;
	}
  var research = $("._RESEARCH").values();
	research.uri = uri;
	research.point = parseInt($("._RESEARCH input[name='point']").fieldValue());
  Statistics.addResearch(research, {
    timeout:60000,
    errorHandler:errorHandler,
    callback:function(isSuccess) {
			if(isSuccess) {
	      if($("#email").size() <= 0) {
	        var style =
	          '<style id="email_style" type="text/css">' +
	          '  .ui-dialog-titlebar {' +
	          '    display: none;' +
	          '  }' +
	          '  .ui-dialog-container .btm img {' +
	          '    cursor: pointer;' +
	          '  } ' +
	          '</style>';
	        var html =
	          '<div id="email">' +
	          '  <div class="itemarea">' +
	          '    <div class="item_con">' +
	          '      <div class="gismap_tit">만족도 평가</div>' +
	          '      <div class="subbox">만족도 평가에 응해주셔서 감사합니다.</div>' +
	          '    </div>' +
	          '  </div>' +
	          '  <div class="btm">' +
	          '    <img src="/images/use/gismap/btn_close.gif" width="51" height="30" alt="close" onclick="$(\'#email\').dialog(\'close\');" />' +
	          '  </div>' +
	          '</div>';
	        $('head:first').append(style);
	        $('body:first').append(html);
	        $('#email').dialog({
	          width:390,
	          height:210,
	          resizable: false,
	          draggable : true,
	          modal: true,
	          overlay: {
	            background:'#FFFFFF',
	            opacity:'0.5'
	          },
	          close:function() {
	            $('#email').remove();
	            $('#email_style').remove();
	          }
	        });
	      }
			} else {
        if($("#email").size() <= 0) {
          var style =
            '<style id="email_style" type="text/css">' +
            '  .ui-dialog-titlebar {' +
            '    display: none;' +
            '  }' +
            '  .ui-dialog-container .btm img {' +
            '    cursor: pointer;' +
            '  } ' +
            '</style>';
          var html =
            '<div id="email">' +
            '  <div class="itemarea">' +
            '    <div class="item_con">' +
            '      <div class="gismap_tit">만족도 평가</div>' +
            '      <div class="subbox">이미 만족도 평가에 참여하셨습니다.</div>' +
            '    </div>' +
            '  </div>' +
            '  <div class="btm">' +
            '    <img src="/images/use/gismap/btn_close.gif" width="51" height="30" alt="close" onclick="$(\'#email\').dialog(\'close\');" />' +
            '  </div>' +
            '</div>';
          $('head:first').append(style);
          $('body:first').append(html);
          $('#email').dialog({
            width:390,
            height:210,
            resizable: false,
            draggable : true,
            modal: true,
            overlay: {
              background:'#FFFFFF',
              opacity:'0.5'
            },
            close:function() {
              $('#email').remove();
              $('#email_style').remove();
            }
          });
        }
			}
    }
  });
}

(function($){
  $.fn.float = function() {
    this.each(function() {
      var target = $(this);
      var param = {
        base : null,
        gap : 30,
        top : 155,  //시작위치
        left : 943,
        buttom : 200,  //끝위치
        activateSpeed : 100,
        scrollSpeed : 2,
        timer : null,
        enable : true
      };
      target.css("display", "inline");
      if ( param.base == null ) param.base = param.top;
      target.css("top", param.base);
      var RefreshStaticMenu = function() {
        if (param.enable) {
          var startPoint, endPoint, refreshTimer;
          startPoint = parseInt(target.css("top"), 10);
          endPoint = document.documentElement.scrollTop + param.gap;
    
          if (endPoint < param.base) endPoint = param.base;
          refreshTimer = param.activateSpeed;
          if ( startPoint != endPoint && endPoint <= (document.documentElement.scrollHeight - param.buttom) ) {
           scrollAmount = Math.ceil( Math.abs( endPoint - startPoint ) / 15 );
           target.css("top", parseInt(target.css("top"), 10) + ( ( endPoint<startPoint ) ? -scrollAmount : scrollAmount ));
           refreshTimer = param.scrollSpeed;
          }
          param.timer = setTimeout (RefreshStaticMenu, refreshTimer);
        }
       }
      RefreshStaticMenu();
    });
    return this;
  };
  
  $.fn.defaultInputMessage = function() {
    this.focus(function() {
      var target = $(this);
      var data = target.metadata().focus;
      if(typeof(data) == 'string') {
        target.val(data);
      } else {
        for(var name in data) {
          target.css(name,data[name]);
        }
      }
    });
    this.blur(function() {
      var target = $(this);
      var data = target.metadata().blur;
      if($.trim(target.val()).length <= 0) {
        if(typeof(data) == 'string') {
          target.val(data);
        } else {
          for(var name in data) {
            target.css(name,data[name]);
          }
        }
      }
    });
    this.blur();
    return this;
  };
})(jQuery);

$(function() {
  $(".swf").media();
  $('#quickMenu').float();
  $('#leftArea .left_search input, #left_search input').defaultInputMessage();
  $("*[onclick]").css('cursor','pointer');
	$('#bannerImageListBox').cycle({ 
    fx : 'turnLeft', 
    speed : 'fast', 
    timeout : 10000, 
    pager : '#bannerNavi',
    pagerEvent : 'mouseover',
    pagerAnchorBuilder: function(idx, slide) {
      var idx = $('#bannerNavi li').size() - idx - 1;
      return '#bannerNavi li:eq(' + idx + ') a';
    }
  });
  var sort = new Array();
  $('span.sort').css('cursor','pointer').click(function(event) {
    var target = $(event.target);
    var id = target.attr('id');
    var regExp = new RegExp('^'+id+' .*','gim');
    switch(target.text()) {
    case '■' : 
      target.text('▲');
      sort = $.grep(sort, function(value) {
        return value.match(regExp);
      }, true);
      sort.push(id+' asc');
      break;
    case '▲' : 
      target.text('▼');
      sort = $.grep(sort, function(value) {
        return value.match(regExp);
      }, true);
      sort.push(id+' desc');
      break;
    case '▼' : 
    default : 
      target.text('■');
      sort = $.grep(sort, function(value) {
        return value.match(regExp);
      }, true);
    }
  });
  $('form#listSearch').submit(function(event) {
    var target = $(event.target);
    var formName = $('select[name=\'formName\']:first').val();
    $('select[name=\'formName\']:first').attr('disabled','disabled');
    if(formName == 'undefined' || formName == '') {
      $('input[name=\'formValue\']').attr('disabled','disabled');
    } else  {
      $('input[name=\'formValue\']').attr('name',formName);
    }
    $.each(sort, function(index, value) {
      target.append('<input type="hidden" name="sort" value="'+value+'"></input>');
    });
  });
  //var width = ($('#bannerItems > li:first').width()+23) * -1;
  window.bWidth = -870;
  $('#bannerItems > li').each(function(index, value) {
    window.bWidth += $(value).width()+24;
  });
  window.bWidth = window.bWidth * -1;
  if(window.bWidth < 0) {
    $('#bannerItems').animate({
      marginLeft : window.bWidth
    }, 12000, 'swing', tScroll);
  }
});

function tScroll() {
  //$('#bannerItems').append($('#bannerItems > li:first'));
  //$('#bannerItems').css("marginLeft",0);
  //var width = ($('#bannerItems > li:first').width()+23) * -1;
  var width = 0;
  if(window.parseInt($('#bannerItems').css("marginLeft"),10) >= 0) {
    width = window.bWidth;
  }
  $('#bannerItems').animate({ marginLeft : width }, 12000, 'swing', tScroll);
}

//스크롤 있는 새창 
function openWin(url, winname, width, height){
	window.open(url, winname, "top=100,left=100,toolbar=no,derectories=no,status=no,menubar=no,width="+width+",height="+height+",scrollbars=yes");
}
//스크롤 없는 새창 
function openWinNo(url, winname, width, height){
	window.open(url, winname, "top=100,left=100,toolbar=no,derectories=no,status=no,menubar=no,width="+width+",height="+height+",scrollbars=no");
}

// index 상세검색 펼침
function LayShow(val){
	document.getElementById('btn_ds').className = "";
	switch(val){
		case "1":
			ds_con.style.display = "block";	
	}
}

function sd_close(){
	ds_con.style.display = "none";	
}

var stmnGAP1 = 129; // 위쪽 여백 (메뉴가 위에서 10픽셀 떨어진 곳에 보여집니다) 
var stmnGAP2 = 0; // 스크롤시 브라우저 위쪽과 떨어지는 거리 
var stmnBASE = 0; // 스크롤 시작위치 
var stmnActivateSpeed = 20; 
var stmnScrollSpeed = 20; 

var stmnTimer; 
		
function RefreshquickMenu() { 
  var stmnStartPoint, stmnEndPoint; 
  
  stmnStartPoint = parseInt(document.getElementById('quick').style.top, 10); 
  stmnEndPoint = Math.max(document.documentElement.scrollTop, document.body.scrollTop) + stmnGAP2; 
  if (stmnEndPoint < stmnGAP1) stmnEndPoint = stmnGAP1; 
  
  if (stmnStartPoint != stmnEndPoint) { 
    stmnScrollAmount = Math.ceil( Math.abs( stmnEndPoint - stmnStartPoint ) / 15 ); 
    document.getElementById('quick').style.top = parseInt(document.getElementById('quick').style.top, 10) + ( ( stmnEndPoint<stmnStartPoint ) ? -stmnScrollAmount : stmnScrollAmount ) + 'px'; 
    stmnRefreshTimer = stmnScrollSpeed; 
  }
  
  stmnTimer = setTimeout('RefreshquickMenu();', stmnActivateSpeed); 
} 

function InitializequickMenu() {
  document.getElementById('quick').style.top = document.body.scrollTop + stmnBASE + 'px'; 
  RefreshquickMenu();
}

$(function() {
  if($("#quick").size() > 0) InitializequickMenu();
});
