//--------------------------------------------------
var req, ser, old;
var reg = /^[a-z0-9][a-z0-9-]*[a-z0-9]$/;
var status = Array('残念、登録済','登録へ進む');
var names  = Array('com', 'net', 'org', 'info', 'jp');
var minmax = 3;
var registURI = '/app/domain?MODE=search&amp;type=new&amp;keyword=';
var price = {'com':'945', 'net':'945', 'org':'945', 'info':'945', 'jp':'3,280'};
var words = Array('expert', 'master', 'kouryaku', 'koryaku', 'Tokyo', 'pics', 'photo', 'image', 'hotel', 'intl', 'division', 'navi', 'team', 'group', 'guide', 'sugoi', 'kawaii', 'dinner', 'diner', 'restaurant', 'hq', 'branch', 'er', '123', '777', '247', '365', '24', 'abc', 'celeb', 'cool', 'zero', 'wizard', 'park', 'fan', 'freak', 'enthusiast', 'addict', 'crazy', 'otaku', 'wota', 'study', 'mart', 'cart', 'quick', 'fast', '919', 'friends', 'family', 'alumni', 'ancient', 'antique', 'old', 'young', 'speed', 'deep', 'after', 'before', 'slow', 'direction', 'direct', '4you', 'lovesyou', 'forever', 'andme', 'dear', 'foryou', 'light', 'lite', 'zero', 'field', 'kid', 'kids', 'mt', 'lab', 'tune', 'loan', 'hack', 'learn', 'forget', 'get', 'not', 'well-known', 'famous', 'affiliate', 'hot', 'san', 'kun', 'sama', 'chan', 'dono', 'e', 'ex', 'anti', 'pre', 'pro', 'no', 'non', 'plus', 'prime', 'world', 'japan', 'earth', 'psychedelic', 'fabulous', 'excellent', 'glamourous', 'great', 'rich', 'fantastic', 'awesome', 'zoom', 'boom', 'st', 'park', 'tips', 'tools', 'town', 'museum', 'shop', 'office', 'store', 'paradise', 'sea', 'wind', 'wind', 'state', 'spoke', 'speak', 'collection', 'hybrid', 'reserch', 'development', 'kk', 'jp', 'inc', 'co', 'or', 'ne', 'net', 'info', 'view', 'sounds', 'sound', 'forever', 'illusion', 'relax', 'outlet', 'watch', 'plaza', 'bomb', 'star', 'super', 'hyper', 'eco', 'clean', 'weapon', 'queen', 'king', 'god', 'isgod', 'isdead', 'isalive', 'walker', 'factory', 'place', 'life', 'alias', 'upper', 'mama', 'papa', 'madam', 'grand', 'st', 'dr', 'bu', 'about', 'for', 'update', 'square', 'season', 'smart', 'channel', 'lohas', 'soho', 'design', 'arts', 'art', 'money', 'dish', 'deli', 'taste', 'junky', 'junkie', 'business', 'biz', 'cast', 'program', 'share', 'trends', 'club', 'planning', 'manage', 'management', 'marketing', 'forest', 'series', 'mail', 'blog', 'clinic', 'e', 'woods', 'athletes', 'sports', 'ball', 'tech', 'chao', 'nihao', 'hello', 'tech', 'beginners', 'cafe', 'latest', 'derby', 'new', 'news', 'console', 'city', 'portal', 'liveat', 'gallery', 'multi', 'media', 'max', 'products', 'service', 'ceo', 'best', 'support', 'engine', 'finder', 'finder', 'time', 'times', 'project', 'journal', 'room', 'tips', 'alpha', 'beta', 'mega', 'giga', 'big', 'small', 'space', 'aero', 'brain', 'paper', 'event', 'base', 'trip', 'tour', 'travel', 'vision', 'wire', 'ichiba', 'holdings', 'zon', 'oo', 'door', 'live', 'beauty', 'cosme', 'cosmetics', 'cosmic', 'planet', 'zone', 'ultra', 'platinum', 'venture', 'adventure', 'magic', 'search', 'index', 'direct', 'auto', 'map', 'firm', 'farm', 'cheap', 'luxury', 'lux', 'deluxe', 'lucky', 'luck', 'hills', 'treasure', 'pleasure', 'dollar', 'yen', 'pound', 'euro', 'currency', 'market', 'stock', 'land', 'stock', 'focus', 'mr', 'madam', 'tube', 'game', 'road', 'load', 'street', 'under', 'dedicated', 'tribute', 'featuring', 'future', 'line', 'far-east', 'asia', 'online', '5star', 'age', 'bb', 'tools', 'beach', 'style', 'typhoon', 'mobi', 'wireless', 'ktai', 'keitai', 'no1', 'superior', 'highest', 'largest', 'supreme', 'premium', 'ultimate', 'magazine');
var icons = Array('com','net','org','info','jp')

//--------------------------------------------------
window.onload=function() {
  if (!$('sld')) { return; }
  //$('sld').value=""; $('sld').focus(); 
  $('sld').focus(); 
  soaLookup();
  new Form.Element.Observer("sld", 5, soaLookup);
}

//----------------------------------------------------------------------
// domain name search
//----------------------------------------------------------------------

//--------------------------------------------------
function getNormalizedSLD() {
  var sld = $('sld').value;
  sld = sld.toLowerCase().replace(/ /g,'');
  if(sld.indexOf('.') != -1) sld = sld.split('.')[0];
  return sld;
}

//--------------------------------------------------
function getTLD(name) {
  var entity = name.split('.');
  return entity[entity.length - 1];
}

//--------------------------------------------------
function validateSLD() {
  var ret = 0;
//  $('progress').style.display = 'none';
  var sld = getNormalizedSLD();

  // length?
  $('err-length').style.display = 'none';
  if(sld.length == 0) {
    ret = 1;
  } else if(sld.length < minmax) {
    $('err-length').style.display = '';
    ret = 1;
  }

  // regex
  $('err-valid').style.display = 'none';
  if (!ret && !reg.test(sld)) {
    $('err-valid').style.display = '';
    ret = 1;
  }

  return !ret;
}


//--------------------------------------------------
function previousShow() {
//  if (validateSLD()) { $('progress').style.display = ''; }

  var sld = getNormalizedSLD();

  // same?
  //  if (old == sld) return; old = sld;
  // no need?
  //$('debug').innerHTML = sld.length + 'char(s)';

  // need to search

  var resData = '';
  var EO = '';
  resData += "<ol>";
  for(i=0; i<names.length; i++) {
    if (i % 2) {
      EO = 'eve'
    } else {
      EO = 'odd'
    }
    resData += "<li class='"+EO+"_domainname'>";
    if (sld.length == 0) {
      resData += "<img src='/campaign/index/img/btn_"+icons[i]+".gif' width='27' height='16' border='0' alt="+icons[i]+"' align='left' class='result_icon' /><font style='font-size: 13px;font-weight: bold;'>" + "</font></li>";
    } else {
      resData += "<img src='/campaign/index/img/btn_"+icons[i]+".gif' width='27' height='16' border='0' alt="+icons[i]+"' align='left' class='result_icon' /><font style='font-size: 13px;font-weight: bold;'>" +  sld + '.' + names[i] + "</font></li>";
    }
    if (validateSLD()) {
      resData += "<li class='"+EO+"_cost'></li>";
      resData += "<li class='"+EO+"_status'><img src='/common/img/rickdom_searching.gif'></li>";
    } else {
      resData += "<li class='"+EO+"_cost'><font style='font-size: 13px;font-weight: bold;'>.....</font></li>";
      resData += "<li class='"+EO+"_status'><font style='font-size: 13px;font-weight: bold;'>.....</font></li>";
    }
  }
  resData += "</ol>";
  $('result').innerHTML = resData;
}


//--------------------------------------------------
function soaLookup() {
  if (!validateSLD()) { return; }

  // 見た目のリストを表示
  var sld = getNormalizedSLD();

  // 結果を置き換える
  var url  = '/api/search/json';
  var pars = 'sld='+ sld;
  new Ajax.Request( url, { method: 'get', parameters: pars, onComplete: out });
}

//--------------------------------------------------
function out(val) {	
  var sld = getNormalizedSLD();
  var data = eval("("+ val.responseText +")");
  $('result').style.display      = '';

	var resData = '';
	var EO = '';

	resData += "<ol>";
	for (var i = 0; i < data.length; i++) {
		var tld = getTLD(data[i].name);
		if (sld + "." + tld != data[i].name) { return false; }

		if (i % 2) {
			EO = 'eve'
		} else {
			EO = 'odd'
		}

		resData += "<li class='"+EO+"_domainname'>";
		resData += "<img src='/campaign/index/img/btn_"+icons[i]+".gif' width='27' height='16' border='0' alt="+icons[i]+"' align='left' class='result_icon' />"
		resData += "<font style='font-size: 13px;font-weight: bold;'>" + data[i].name + "</font></li>";

		resData += "<li class='"+EO+"_cost'>";
		if (data[i].result) {
			resData +="<p class='avail'>"+ price[ tld ] + "円/年";
		} else {
			resData += "<p class='disavail'>-";
		}
		resData += "</p></li>";

		resData += "<li class='"+EO+"_status'>";
		if (data[i].result) {
			resData += "<p class='avail'><a href='" + registURI + data[i].name + "&amp;sld=" + sld + "'>";
		} else {
			resData += "<p class='disavail'>";
		}
/*
		resData += status[data[i].result];
*/
			if (data[i].result != 1) {
				resData += '残念、登録済'
			}
			else{
				resData += '登録OK'
			}

		if (data[i].result) {
			resData += "</a>";
		}
		resData += "</p></li>";

	}
	  resData += '</ol>';

  $('result').innerHTML = resData;
}


//--------------------------------------------------
function clearSLD() {
	var resData = '';
	resData += '<ol><li class="odd_domainname"><img src="/campaign/index/img/btn_com.gif" width="27" height="16" border="0" alt="com" align="left" class="result_icon" /><p class="avail">.com</p></li><li class="odd_cost"><p class="avail">.....</p></li><li class="odd_status"><p class="avail">.....</p></li></ol><ol><li class="eve_domainname"><img src="/campaign/index/img/btn_net.gif" width="27" height="16" border="0" alt="net" align="left" class="result_icon" /><p class="avail">.net</p></li><li class="eve_cost"><p class="avail">.....</p></li><li class="eve_status"><p class="avail">.....</p></li></ol><ol><li class="odd_domainname"><img src="/campaign/index/img/btn_org.gif" width="27" height="16" border="0" alt="org" align="left" class="result_icon" /><p class="avail">.org</p></li><li class="odd_cost"><p class="avail">.....</p></li><li class="odd_status"><p class="avail">.....</p></li></ol><ol><li class="eve_domainname"><img src="/campaign/index/img/btn_info.gif" width="27" height="16" border="0" alt="info" align="left" class="result_icon" /><p class="avail">.info</p></li><li class="eve_cost"><p class="avail">.....</p></li><li class="eve_status"><p class="avail">.....</p></li></ol><ol><li class="odd_domainname"><img src="/campaign/index/img/btn_jp.gif" width="27" height="16" border="0" alt="jp" align="left" class="result_icon" /><p class="avail">.jp</p></li><li class="odd_cost"><p class="avail">.....</p></li><li class="odd_status"><p class="avail">.....</p></li></ol>';


  $('result').innerHTML = resData;
  $('suggest').innerHTML = "";
  $('sld').value=""; $('sld').focus(); 
}



//----------------------------------------------------------------------
// suggestion
//----------------------------------------------------------------------

//--------------------------------------------------
function setSuggestedSLD(name) {
  var sld = name.toLowerCase().replace(/ /g,'');
  if(sld.indexOf('.') != -1) sld = sld.split('.')[0];
  $('sld').value = sld;
}



//--------------------------------------------------
function getSuggestedDomain(sld, tld) {
  var offset = Math.floor(Math.random() * words.length);
  var name = sld + '-' + words[offset] + '.' + tld;
  if(name.length > 63) {
    name = getSuggestedName(sld, tld);
  }
  return name;
}


//--------------------------------------------------
function suggestDomain() {
  var resData = '';
  var sld      = getNormalizedSLD();

  if (sld.length > 32) { return; }
  if (sld.length == 0) { $('suggest').innerHTML = ''; return; } 

  var resData = '';
  for (var i = 0; i < names.length; i++) {
    var domain = getSuggestedDomain(sld, names[i]);
    resData += "<p>";
//    resData += "<a href="javascript:setSuggestedSLD('" + domain + "');previousShow();suggestDomain();">";
    resData += '<a href="javascript:suggestDomainByName(\'' + domain + '\');">';
    resData += domain;
    resData += "</a>";
    resData += "</p>";
  }
  $('suggest').innerHTML = resData;
}

//--------------------------------------------------
function suggestDomainByName(domain) {
  setSuggestedSLD(domain);
  previousShow();
  suggestDomain();
}


function CLSform(){
	clearSLD();return false;
}


