
var Prototype = {
  Version: '1.5.0',
  BrowserFeatures: {
    XPath: !!document.evaluate
  },

  ScriptFragment: '(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)',
  emptyFunction: function() {},
  K: function(x) { return x }
}

var Class = {
  create: function() {
    return function() {
      this.initialize.apply(this, arguments);
    }
  }
}

var Abstract = new Object();

Object.extend = function(destination, source) {
  for (var property in source) {
    destination[property] = source[property];
  }
  return destination;
}

Object.extend(Object, {
  inspect: function(object) {
    try {
      if (object === undefined) return 'undefined';
      if (object === null) return 'null';
      return object.inspect ? object.inspect() : object.toString();
    } catch (e) {
      if (e instanceof RangeError) return '...';
      throw e;
    }
  },

  keys: function(object) {
    var keys = [];
    for (var property in object)
      keys.push(property);
    return keys;
  },

  values: function(object) {
    var values = [];
    for (var property in object)
      values.push(object[property]);
    return values;
  },

  clone: function(object) {
    return Object.extend({}, object);
  }
});

Function.prototype.bind = function() {
  var __method = this, args = $A(arguments), object = args.shift();
  return function() {
    return __method.apply(object, args.concat($A(arguments)));
  }
}

Function.prototype.bindAsEventListener = function(object) {
  var __method = this, args = $A(arguments), object = args.shift();
  return function(event) {
    return __method.apply(object, [( event || window.event)].concat(args).concat($A(arguments)));
  }
}

Object.extend(Number.prototype, {
  toColorPart: function() {
    var digits = this.toString(16);
    if (this < 16) return '0' + digits;
    return digits;
  },

  succ: function() {
    return this + 1;
  },

  times: function(iterator) {
    $R(0, this, true).each(iterator);
    return this;
  }
});

var Try = {
  these: function() {
    var returnValue;

    for (var i = 0, length = arguments.length; i < length; i++) {
      var lambda = arguments[i];
      try {
        returnValue = lambda();
        break;
      } catch (e) {}
    }

    return returnValue;
  }
}

/*--------------------------------------------------------------------------*/





/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function keywordKeyDown(){
    var keyCode = window.event.keyCode;
    //Keydown ÀÌº¥Æ® ¹ß»ý ½ÃÁ¡¿¡´Â ¾ÆÁ÷ TextField¿¡ »ç¿ëÀÚ°¡ ÀÔ·ÂÇÑ Å° °ªÀÌ ¼³Á¤µÇÁö ¾Ê¾Ò±â ¶§¹®¿¡
    //ºê¶ó¿ìÀú°¡ ÀÌº¥Æ®¿¡ ¹ÝÀÀÇÏ¿© °ªÀ» ¼³Á¤ÇÒ¶§ ±îÁö Àá½Ã ±â´Ù¸°´Ù.
    //setTimeout('submitSearchKeyword()', 0);     // 250msÀÌÈÄ¿¡ submitSearchKeyword½ÇÇà
}


var fnAjax = new Object();


var fnAjax = function(url,obj,layer,hit) {
  var Req = newXMLHttp();
  var rand_key	= 'rand_key=' + parseInt(Math.random() * 1000000);

  var url		= url ;


  if(typeof obj == null) {
	var method = 'GET';
	var data   = null;
	url   += '&' + obj;
	var historyData = encodeURIComponent(url); //form.replace(/([^&]*)=([^=]*)&?/g,'$1:$2&');
  }
  else {
	try {
	  form_tmp = $(obj);
	  form_tmp.search_word.value = obj.search_word.value;
	  form_tmp.search_opt.value  = obj.search_opt.value;
	}catch (e) {}

	var method		= "POST";
	var data		= dataEncode(obj);
	var historyData = data;


	//var data = data_array[0];
	//var historyData = data_array[1];
  }


	
//  var reqBody = Req.responseText;
 // var message = reqBody.match(/alert\((.*)\)/i);



  Req.onreadystatechange = function () {

	if(Req.readyState == 4) {
	  try {
		var error = (Req.status != 200 && Req.statusText);
		if(error == false) ReqDataParser(Req, historyData, hit,layer);
		//else alert(Req.status +' : '+ Req.statusText);
	  } catch(e) {
		if(Req.status == 200){
			ReqDataParser(Req, historyData, hit,layer);
		}
	  }
	}
  }



  Req.open(method, url, true);
  sendHeader(Req);
  Req.send(data);
 // fnAjax.History.add(url)


  return false;
}


var historyUpdate = function(hash) {
	new fnAjax.Req()
}

function dataEncode(docForm) { // FORM µ¥ÀÌÅÍ¸¦ escape ÇÏ¿© »ý¼º
   var formElement = '';
   var lastElementName = '';
   var submitString = '';
   for(i = 0 ; i < docForm.elements.length ; i++) {
     formElement = docForm.elements[i];

     switch(formElement.type){ 
        case 'hidden': 

			submitString += encodeURIComponent(formElement.name) + '=' + encodeURIComponent(formElement.value) + '&';
		   break;
        case 'text':
           submitString += encodeURIComponent(formElement.name) + '=' + encodeURIComponent(formElement.value) + '&';
           break;
        case 'password':
           submitString += encodeURIComponent(formElement.name) + '=' + encodeURIComponent(formElement.value) + '&';
			break;
	 } 

   }
	   submitString = submitString.substring(0, submitString.length -1 ); // ¸ÇµÚ¿¡ &°¡ ÀÖÀ¸¹Ç·Î ÇÏ³ª¸¦ »©°í ÀúÀå
	   return submitString; 
	   

}


function ReqDataParser(Req, historyData, hit, layer) {
    // ¿©±â¼­ result´Â http://jaso.co.kr/searchKeyword.jsp·ÎºÎÅÍ ¹Þ¾Æ¿Â °á°ú

  
	var historystr = "/cti/";
	var searchKeywordDiv				= document.getElementById(layer);


	  if(hit == false) {
		dhtmlHistory.add('SESSION:'+historystr, true);
		//historyStorage.put('SESSION:intranet-'+layer, true);
	  }


	if(historyData == "") {  // result°¡ ¾ø´Ù¸é hiddenÀ¸·Î º¸¿©ÁÜ 

		searchKeywordDiv.innerHTML			= "";
		searchKeywordDiv.style.visibility	= "hidden";
    }
    else  {   // ¹Þ¾Æ¿Â °á°ú°¡ ÀÖ´Ù¸é result ¸®½ºÆ®¿¡ '|'À¸·Î ³ª´©¾î ÀúÀå
        searchKeywordDiv.innerHTML			= Req.responseText; // DIV¿µ¿ª¿¡ viewResult°ªÀ» innerHTMLÇüÅÂ·Î »ðÀÔÇÔ
        searchKeywordDiv.style.visibility	= "visible"; // DIV¿µ¿ª¿¡ View¼Ó¼º
    }
}



function newXMLHttp() {
  var xmlHttpRequest = false;
  if(window.ActiveXObject) { // IE
    try {
      xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
      try {
          xmlHttpRequest = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (e) {}
    }
  }
  else if(window.XMLHttpRequest) { // Mozilla, Safari,...
    xmlHttpRequest = new XMLHttpRequest();
    if(xmlHttpRequest.overrideMimeType) {
      xmlHttpRequest.overrideMimeType('text/html');  // See note below about this line
    }
  } 
  if(!xmlHttpRequest) {
    alert('ºê¶ó¿ìÀú°¡ AJAX¸¦ Áö¿øÇÏÁö ¾Ê½À´Ï´Ù'); //alert('This browser does not support XMLHttpRequest.');
    return false;
  }
  return xmlHttpRequest;
}


function sendHeader(Req) {
  Req.setRequestHeader("Pragma","no-cache");
  Req.setRequestHeader("Cache-control","no-cache");
  Req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
}


function getuserAgent() {
 //opera´Â onreadystatechange¿¡ Áßº¹ ÀÀ´äÀÌ ÀÖÀ» ¼ö ÀÖ¾î onload°¡ ¾ÈÀü
  //Moz,FireFox´Â oj.readyState==3¿¡¼­µµ ¼ö½ÅÇÏ¹Ç·Î º¸ÅëÀº onload°¡ ¾ÈÀü
  //KonquerorÀº onload°¡ ¾ÈÀü
  //Win ie¿¡¼­´Â onload°¡ µ¿ÀÛÇÏÁö ¾Ê´Â´Ù
  //http://jsgt.org/ajax/ref/test/response/responsetext/try1.php
  var ua = navigator.userAgent
  var safari    = ua.indexOf("Safari")!=-1
  var konqueror = ua.indexOf("Konqueror")!=-1
  var mozes     = ((a=navigator.userAgent.split("Gecko/")[1] )?a.split(" ")[0]:0) >= 20011128 
  return (window.opera || safari || konqueror || mozes) ? false : true;
}

function $() { // id,name ÀÇ object¸¦ Ã£¾Æ ¸®ÅÏ
  var element = arguments[0];
  var elength = document.getElementsByName(element).length;
  //var gid = document.getElementById(element).attributes['18'].nodeValue;
  //if(gid == element) return document.getElementById(element);
  return (elength > 1) ? document.getElementsByName(element) : document.getElementById(element);
}


//================== ¸Þ´º ¿À¹ö½Ã »ö»ó º¯È­ =======================	
function fnOver1(obj,layer,tag){
	var menu_z		= document.getElementById(layer);			//ÀüÃ¼ Å×ÀÌºí
	var menu_len	= menu_z.getElementsByTagName(tag);			//»óÀ§ ·¹ÀÌ¾î
	var menu_child	= menu_z.childNodes;
	for(k=0;k<menu_len.length;k++){
		if(obj!=menu_len[k]){
			menu_len[k].style.color = "#ffffff";
		}else{
			menu_len[k].style.color = "#EDDB7A";
		}
	}
}

function fnOut1(obj,layer,tag){
	var menu_z		= document.getElementById(layer);			//ÀüÃ¼ Å×ÀÌºí
	var menu_len	= menu_z.getElementsByTagName(tag);			//»óÀ§ ·¹ÀÌ¾î
	var menu_child	= menu_z.childNodes;
	for(k=0;k<menu_len.length;k++){
		if(obj!=menu_len[k]){
			menu_len[k].style.color = "#ffffff";
		}else{
			menu_len[k].style.color = "#EDDB7A";
		}
	}
}
//================== ¸Þ´º ¿À¹ö½Ã »ö»ó º¯È­ =======================	
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////








// Author: Siegfried Puchbauer <rails-spinoffs@lists.rubyonrails.org>
fnAjax.History = {
    initialize: function(options) {
        this.options = Object.extend({
            interval: 200
        },options||{});
        this.callback = this.options.callback || Prototype.emtpyfunction;
        if(navigator.userAgent.toLowerCase().indexOf('msie') > 0)
            this.locator = new fnAjax.History.Iframe('ajaxHistoryHandler', this.options.iframeSrc);
        else
            this.locator = new fnAjax.History.Hash();
        this.currentHash = '';
        this.locked = false;
    },
    add: function(hash) {
        this.locked = true;
        clearTimeout(this.timer);
        this.currentHash = hash;
        this.locator.setHash(hash);
        this.timer = setTimeout(this.checkHash.bind(this), this.options.interval);
        this.locked = false;
    },
    checkHash: function(){
        if(!locked){
            var check = this.locator.getHash();

            if(check != this.currentHash){
                this.callback(check);
                this.currentHash = check;
            }
        }
        this.timer = setTimeout(this.checkHash.bind(this), this.options.interval);
    },
    getBookmark: function(){
        return this.locator.getBookmark();
    }
};

// Hash Handler for IE (Tested with IE6)
fnAjax.History.Iframe = Class.create();
fnAjax.History.Iframe.prototype = {
    initialize: function(id, src) {
        this.url = '';
        this.id = id || 'ajaxHistoryHandler';
        this.src = src || '';
        document.write('<iframe src="'+this.src+'" id="'+this.id+'"name="'+this.id+'" style="display: none;" ></iframe>');
    },
    setHash: function(hash){
        try {
            $(this.id).setAttribute('src', this.src + '?' + hash);
        }catch(e) {}
        window.location.href = this.url + '#' + hash;
    },
    getHash: function(){
        try {
            return (document.frames[this.id].location.href||'?').split('?')[1];
        }catch(e){ return ''; }
    },
    getBookmark: function(){
        try{
            return window.location.href.split('#')[1]||'';
        }catch(e){ return ''; }
    }
};

// Hash Handler for a modern browser (tested with firefox 1.5)
fnAjax.History.Hash = Class.create();
fnAjax.History.Hash.prototype = {
    initialize: function(){
    },
    setHash: function(hash){
        window.location.hash = hash;
    },
    getHash: function(){
        return window.location.hash.substring(1)||'';
    },
    getBookmark: function(){
        try{
            return window.location.hash.substring(1)||'';
        }catch(e){ return ''; }
    }
};



