// -*- coding: utf-8 -*-
var delm = "\n";
var ua = navigator.userAgent;
if(ua.indexOf("Mac") != -1 && ua.indexOf('MSIE') != -1){
  delm = "\r";
}

function tag_str2tags(str){
  var tags = str.split(delm);
  var ret = new Array();
  for(var i = 0;i < tags.length;i++){
    if(tags[i].length > 0){ ret[ret.length] = tags[i] }
  }
  return ret;
}

function add_tag(form, tag_name, hidden_name){
    var t = document.forms[form].elements[tag_name];
    if (!t) {
	t = document.getElementById(tag_name);
    }
    var input = t.value;
    input = input.replace(/^[\s　]*|[\s　]*$/g, "");  // trim
    if(input.length > 0){
	set_tag(form, tag_name, hidden_name, input);
    }
}

function set_tag(form, tag_name, hidden_name, input){
  var f      = document.forms[form];
  var t      = f.elements[tag_name]; 
  var h      = f.elements[hidden_name]; // hidden
  if (!t) {
      t = document.getElementById(tag_name);
  }
  if (!h) {
      h = document.getElementById(hidden_name);
  }
  var viewer = document.getElementById(tag_name + '_viewer');

  var tags = tag_str2tags(h.value);

  tags[tags.length] = input;

  var tags_str = tags.join(delm);

  reset_tag_viewer(form, tag_name, hidden_name, tags_str);

  h.value = tags_str;
  t.value    = '';
}

function remove_tag(form, tag_name, hidden_name, rid){
  var f      = document.forms[form];
  var h      = f.elements[hidden_name]; // hidden
  if (! h) {
      h = document.getElementById(hidden_name);
  }
  var viewer = document.getElementById(tag_name + '_viewer');
  var tags   = tag_str2tags(h.value);

  // clear
  h.value = '';
  viewer.innerHTML = '';

  for(var i = 0; i < tags.length; i++){
    if(i != rid){ set_tag(form, tag_name, hidden_name, tags[i]) }
  }
  if (tags.length <= 1) {
      check_tag_difference(hidden_name,viewer,[]);
  }
}

function reset_tag_viewer(form, tag_name, hidden_name, tags_str,reset) {
  var f      = document.forms[form];
  var viewer = document.getElementById(tag_name + '_viewer');
  var tags   = tag_str2tags(tags_str);
  check_tag_difference(hidden_name,viewer,tags,reset);
  if(tags.length > 0){
    var html = new String();
    for(var i = 0; i < tags.length; i++){
      var t = tags[i].replace(/^\s*|\s*$/g, "");
      var str = '&nbsp;<span>' + escapeHTML(t) + '</span> <a href="" onclick="remove_tag(\'' + form + '\',' + '\'' + tag_name + '\',' + '\'' + hidden_name + '\',' + i + ');return false;" class="xSmall"><img src="/_common/img/icon_delete.gif" alt="delete" /></a>' ;
      html = html + str;
    }
    viewer.innerHTML = html;
  }
}

function escapeHTML(str) {
    var div = document.createElement('div');
    var text = document.createTextNode(str);
    div.appendChild(text);
    return div.innerHTML;
}

function getKeyCode(evt){
  evt = (evt) ? evt : event;
  var charCode=(evt.charCode) ? evt.charCode :
    ((evt.which) ? evt.which : evt.keyCode);
  return Number(charCode);
}

function check_tag_difference(hidden_name,viewer,tags,forceResetBackup) {
    var initBackupId = hidden_name + '-init-backup';
    var backupId     = hidden_name + '-backup';
    var changeId     = hidden_name + '-change';
    var dummyId      = hidden_name + '-dummy';
    var initBackup   = document.getElementById(initBackupId);
    var backup       = document.getElementById(backupId);
    var change       = document.getElementById(changeId);
    var dummy        = document.getElementById(dummyId);
    var resetBackup;
    if (!dummy) {
        dummy = document.createElement('span');
	dummy.id = dummyId;
	viewer.parentNode.appendChild(dummy);
	resetBackup = 1;
    }
    if (!initBackup) {
	initBackup = document.createElement('input');
	initBackup.id    = initBackupId;
	var val = tags.join(":").replace(/\r\n|\r|\n/g,"");
	initBackup.value = (val == '') ? 'seesaa-no-val' : val;
	initBackup.name  = hidden_name + '-init-backuped';
	initBackup.type  = 'hidden';
	backup.parentNode.appendChild(initBackup);
    } else {
	if (forceResetBackup) {
	    var val = tags.join(":").replace(/\r\n|\r|\n/g,"");
	    initBackup.value = (val == '') ? 'seesaa-no-val' : val;
	    resetBackup = true;
	} else {
	    backup.value = (initBackup.value == 'seesaa-no-val') ? '' : initBackup.value;
	    resetBackup = false;
	}
    }

    if (resetBackup) {
	backup.value = tags.join(":").replace(/\r\n|\r|\n/g,"");
	change.value = 0;
    } else {
	if (backup.value == tags.join(":").replace(/\r\n|\r|\n/g,"")) {
	    change.value = 0;
	    //alert('not changed');
	} else {
	    change.value = 1;
	    //alert('changed');
	}
    }
}


