//--------------------------------------------------
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 = "javascript:GetDomain('";	//ここを最後に替える
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() {
/*	  $('sld').value=""; $('sld').focus(); 	*/
/*  new Form.Element.Observer("sld", 0.5, soaLookup);*/
  new Form.Element.Observer("sld", 2.0, 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 DsView = "";
	var DsChar = 21;
	Dstring = new Array();
	for (var z = 0; z < sld.length/DsChar; z++) {
		Dstring[z] = sld.substring(DsChar*z,DsChar*(z+1)) 
	}
	for (var y = 0; y < Dstring.length; y++) {
		if(y!=0){
			DsView += '<BR><img src="/common/images/spacer.gif" width="31" height="14" border="0">'
		}
		DsView += Dstring[y]
	}
	/*-------*/


  var resData = '';
  var EO = '';
  resData += "";
  for(i=0; i<names.length; i++) {
    if (i % 2) {
      EO = 'eve'
    } else {
      EO = 'odd'
    }
    resData += "<ol><li>";

    if (sld.length == 0) {
      resData += "<p class='avail'><img src='/common/images/rdom/btn_"+icons[i]+".gif' width='27' height='14' border='0' alt="+icons[i]+"' class='result_icon'>" + "</p></li>";
    } else {
      resData += "<p class='avail'><img src='/common/images/rdom/btn_"+icons[i]+".gif' width='27' height='14' border='0' alt="+icons[i]+" class='result_icon'>" +  DsView + '.' + names[i] + "</p></li>";
    }
    resData += "<li class='RdomStatus'><p class='avail'>.....</p></li></ol>";
  }
  resData += "";
  $('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 += "";

	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'
		}

		/*-------*/
		var DsView = "";
		var DsChar = 21;
		Dstring = new Array();
		for (var z = 0; z < sld.length/DsChar; z++) {
			Dstring[z] = sld.substring(DsChar*z,DsChar*(z+1)) 
		}
		for (var y = 0; y < Dstring.length; y++) {
			if(y!=0){
				DsView += '<BR><img src="/common/images/spacer.gif" width="31" height="14" border="0">'
			}
			DsView += Dstring[y]
		}
		/*-------*/

		resData += "<ol><li><p class='avail'><img src='/common/images/rdom/btn_"+icons[i]+".gif' width='27' height='14' border='0' alt="+icons[i]+"'  class='result_icon'>" + DsView+ "." + tld + "</p></li>";
		resData += "<li class='RdomStatus'>";
		if (data[i].result) {
			resData += '<p class="avail"><a href="'+registURI+data[i].name+'\')">';
//			resData += '<p class="avail">';
		} else {
			resData += "<p class='disavail'>";
		}
		if (data[i].result != 1) {
			resData += '残念、登録済'
		}
		else{
			resData += '登録OK'
		}

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

	}
	  resData += '';

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


//--------------------------------------------------
function clearSLD() {
	var resData = '';
	resData += '<ol><li><p class="avail"><img src="/common/images/rdom/btn_com.gif" width="27" height="14" border="0" alt="com" class="result_icon">.com</p></li><li class="RdomStatus"><p class="avail">.....</p></li></ol><ol><li><p class="avail"><img src="/common/images/rdom/btn_net.gif" width="27" height="14" border="0" alt="net"  class="result_icon">.net</p></li><li class="RdomStatus"><p class="avail">.....</p></li></ol><ol><li><p class="avail"><img src="/common/images/rdom/btn_org.gif" width="27" height="14" border="0" alt="org"  class="result_icon">.org</p></li><li class="RdomStatus"><p class="avail">.....</p></li></ol><ol><li><p class="avail"><img src="/common/images/rdom/btn_info.gif" width="27" height="14" border="0" alt="info"  class="result_icon">.info</p></li><li class="RdomStatus"><p class="avail">.....</p></li></ol><ol><li><p class="avail"><img src="/common/images/rdom/btn_jp.gif" width="27" height="14" border="0" alt="jp" class="result_icon">.jp</p></li><li class="RdomStatus"><p class="avail">.....</p></li></ol>';


  $('result').innerHTML = resData;
  $('suggest').innerHTML = "&nbsp;";
/*  $('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(sld != ''){
	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 = '&nbsp;'; 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 + '\');">';


	/*-------*/
	var DsView = "";
	var DsChar = 21;
	Dstring = new Array();
	for (var z = 0; z < domain.length/DsChar; z++) {
		Dstring[z] = domain.substring(DsChar*z,DsChar*(z+1)) 
	}
	for (var y = 0; y < Dstring.length; y++) {
		if(y!=0){
			DsView += '<BR>'
		}
		DsView += Dstring[y]
	}
	/*-------*/



//    resData += domain;
    resData += DsView;



    resData += "</a>";
    resData += "</p>";
  }
  $('suggest').innerHTML = resData + "<img src='/common/images/spacer.gif' width='60' height='20' border='0' alt=''>";
}

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


function CLSform(){
	document.search.elements[0].value="";
	clearSLD();
	return false;
}


