/***************************************************************/
/* onload event
/***************************************************************/

var windowLoadedContainer = { container: new Array() };

function addLoadEvent(func)
{	
	windowLoadedContainer.container.push(func);
}

window.onload = function(){
	for(var i=0;i< windowLoadedContainer.container.length;i++){
		if(typeof windowLoadedContainer.container[i] == "function"){
			windowLoadedContainer.container[i]();
		}
	}
}

/***************************************************************/
/* VARIABLES
/***************************************************************/

var currentLine = 0;


/***************************************************************/
/* BROWSER
/***************************************************************/

if(navigator.userAgent.indexOf("MSIE") != -1){
	var BROWSER = "ie";
}
else if(navigator.userAgent.indexOf("Safari") != -1){
	var BROWSER = "safari";
}
else if(navigator.userAgent.indexOf("Firefox") != -1){
	var BROWSER = "firefox";
}
else {
	var BROWSER = "other";
}

if(BROWSER=="ie"){
	var CLASS = "className";
} else {
	var CLASS = "class";
}


/***************************************************************/
/* getNewFeeld
/***************************************************************/
function getNewFeeld()
{
	
	
	var record = '';
	var attrClass = "class";
	
	var tableRecord = document.createElement("tr");
	tableRecord.setAttribute( "id" , currentLine );
	
	record = '<input type="button" '+attrClass+'="help" value="?" onclick="return helpopen(this)" />';
	var addCell = document.createElement("td");
	addCell.setAttribute( attrClass , "helpwin" );
	tableRecord.insertBefore( addCell , tableRecord.lastChild );
	addCell.innerHTML = record;
	
	record  = '<input type="checkbox" name="selection[]" value="'+currentLine+'" checked="checked" />';
	var addCell = document.createElement("td");
	addCell.setAttribute( attrClass , "checkarea" );
	tableRecord.insertBefore( addCell , tableRecord.lastChild );
	addCell.innerHTML = record;
	
	record = '<input type="text" name="feeldname[]" value="" size="16" />';
	var addCell = document.createElement("td");
	addCell.setAttribute( attrClass , "feeldname" );
	tableRecord.insertBefore( addCell , tableRecord.lastChild );
	addCell.innerHTML = record;
	
	record = '<select name="datatype[]" onchange="changetype(this)">';
	record += '  <option value="null">NULL</option>';
	record += '  <option value="int">INT</option>';
	record += '  <option value="number">NUMBER</option>';
	record += '  <option value="boolean">BOOLEAN</option>';
	record += '  <option value="text">TEXT</option>';
	record += '  <option value="date">DATE</option>';
	record += '  <option value="name">NAME</option>';
	record += '  <option value="occupation">OCCUPATION</option>';
	record += '  <option value="industry">INDUSTRY</option>';
	record += '  <option value="country">COUNTRY</option>';
	record += '  <option value="zipcode">ZIP CODE</option>';
	record += '  <option value="province">PROVINCE</option>';
	record += '  <option value="address">ADDRESS</option>';
	record += '  <option value="phone">PHONE NUMBER</option>';
	record += '  <option value="mail">MAIL ADDRESS</option>';
	record += '  <option value="url">URL</option>';
	record += '</select>';
	var addCell = document.createElement("td");
	addCell.setAttribute( attrClass , "selection" );
	tableRecord.insertBefore( addCell , tableRecord.lastChild );
	addCell.innerHTML = record;
	
	record = '';
	var addCell = document.createElement("td");
	addCell.setAttribute( attrClass , "language" );
	tableRecord.insertBefore( addCell , tableRecord.lastChild );
	addCell.innerHTML = record;
	
	record = '';
	var addCell = document.createElement("td");
	addCell.setAttribute( attrClass , "option" );
	tableRecord.insertBefore( addCell , tableRecord.lastChild );
	addCell.innerHTML = record;
	
	record = '<input type="text" name="format[]" value="\\d{4}" size="50" />';
	var addCell = document.createElement("td");
	addCell.setAttribute( attrClass , "format" );
	tableRecord.insertBefore( addCell , tableRecord.lastChild );
	addCell.innerHTML = record;
	
	currentLine++;
	
	return tableRecord;
}


/***************************************************************/
/* addNewFeeld
/***************************************************************/

function addNewFeeld()
{
	if (!document.getElementsByTagName){ return; }
	var items = document.getElementsByTagName("table");
	
	
	var tableRecord = document.createElement("tr");
	tableRecord.setAttribute( "id" , currentLine );
	
	var leng = items.length;
	for(var i=0;i<leng;i++){
		var element = items[i];
		if (element.getAttribute("id") == "feeld-table"){
			if(BROWSER=="ie"){
				tableRecord = getNewFeeld();
				element.lastChild.insertBefore( tableRecord , element.lastChild.childNodes[element.lastChild.childNodes.length-1] );
				changetype(tableRecord.childNodes[2].firstChild);
			} else if(BROWSER=="safari"){
				tableRecord = getNewFeeld();
				element.lastChild.insertBefore( tableRecord , element.lastChild.childNodes[element.lastChild.childNodes.length-1] );
				changetype(tableRecord.childNodes[2].firstChild);
			} else {
				tableRecord = getNewFeeld();
				element.lastChild.insertBefore( tableRecord , element.lastChild.childNodes[element.lastChild.childNodes.length-1] );
				changetype(tableRecord.childNodes[2].firstChild);
			}
		}
	}
}


/***************************************************************/
/* addNewFeeld
/***************************************************************/

function changetype( scope )
{
	
	var tr = scope.parentNode.parentNode;
	var iLanguage = tr.childNodes[3];
	var iOption = tr.childNodes[4];
	var iFormat = tr.childNodes[5].firstChild;
	
	var lng = "";
	var opt = "";
	var fmt = "";
	
	switch(scope.value){
		case "null" : 
			lng+= '<select name="language[]">';
			lng+= '<option value="none">NONE</option>';
			lng+= '</select>';
			opt+= '<select name="option[]">';
			opt+= '<option value="fixed">FIXED</option>';
			opt+= '</select>';
			fmt+= "";
			break;
		case "int" : 
			lng+= '<select name="language[]">';
			lng+= '<option value="none">NONE</option>';
			lng+= '</select>';
			opt+= '<select name="option[]">';
			opt+= '<option value="asc">ASC</option>';
			opt+= '<option value="desc">DESC</option>';
			opt+= '</select>';
			fmt+= "";
			break;
		case "number" : 
			lng+= '<select name="language[]">';
			lng+= '<option value="none">NONE</option>';
			lng+= '</select>';
			opt+= '<select name="option[]">';
			opt+= '<option value="asc">ASC</option>';
			opt+= '<option value="desc">DESC</option>';
			opt+= '<option value="rand">RANDOM</option>';
			opt+= '<option value="fixed">FIXED</option>';
			opt+= '</select>';
			fmt+= "i+1000";
			break;
		case "boolean" : 
			lng+= '<select name="language[]">';
			lng+= '<option value="bool">BOOL</option>';
			lng+= '<option value="number">NUMBER</option>';
			lng+= '</select>';
			opt+= '<select name="option[]">';
			opt+= '<option value="rand">RANDOM</option>';
			opt+= '<option value="true">TRUE</option>';
			opt+= '<option value="false">FALSE</option>';
			opt+= '</select>';
			fmt+= "";
			break;
		case "text" : 
			lng+= '<select name="language[]">';
			lng+= '<option value="english">ENGLISH</option>';
			lng+= '<option value="japanese">JAPANESE</option>';
			lng+= '</select>';
			opt+= '<select name="option[]">';
			opt+= '<option value="rand">CHARA</option>';
			opt+= '<option value="word">WORD</option>';
			opt+= '<option value="fixed">FIXED</option>';
			opt+= '</select>';
			fmt+= "%w{8,12}";
			break;
		case "date" : 
			lng+= '<select name="language[]">';
			lng+= '<option value="none">NONE</option>';
			lng+= '</select>';
			opt+= '<select name="option[]">';
			opt+= '<option value="asc">ASC</option>';
			opt+= '<option value="desc">DESC</option>';
			opt+= '<option value="rand">RANDOM</option>';
			opt+= '<option value="fixed">FIXED</option>';
			opt+= '</select>';
			fmt+= "Y-m-d H:i:s {19900101-000000,20101231-235959}";
			break;
		case "name" : 
			lng+= '<select name="language[]">';
			lng+= '<option value="english">ENGLISH</option>';
			lng+= '<option value="japanese">JAPANESE</option>';
			lng+= '</select>';
			opt+= '<select name="option[]">';
			opt+= '<option value="rand">RANDOM</option>';
			opt+= '<option value="male">MALE</option>';
			opt+= '<option value="female">FEMALE</option>';
			opt+= '<option value="fixed">FIXED</option>';
			opt+= '</select>';
			fmt+= "%F %L";
			break;
		case "occupation" : 
			lng+= '<select name="language[]">';
			lng+= '<option value="english">ENGLISH</option>';
			lng+= '<option value="japanese">JAPANESE</option>';
			lng+= '</select>';
			opt+= '<select name="option[]">';
			opt+= '<option value="rand">RANDOM</option>';
			opt+= '</select>';
			fmt+= "";
			break;
		case "industry" : 
			lng+= '<select name="language[]">';
			lng+= '<option value="english">ENGLISH</option>';
			lng+= '<option value="japanese">JAPANESE</option>';
			lng+= '</select>';
			opt+= '<select name="option[]">';
			opt+= '<option value="rand">RANDOM</option>';
			opt+= '</select>';
			fmt+= "";
			break;
		case "country" : 
			lng+= '<select name="language[]">';
			lng+= '<option value="english">ENGLISH</option>';
			lng+= '<option value="japanese">JAPANESE</option>';
			lng+= '</select>';
			opt+= '<select name="option[]">';
			opt+= '<option value="rand">RANDOM</option>';
			opt+= '</select>';
			fmt+= "";
			break;
		case "zipcode" : 
			lng+= '<select name="language[]">';
			lng+= '<option value="NONE">NONE</option>';
			lng+= '</select>';
			opt+= '<select name="option[]">';
			opt+= '<option value="rand">RANDOM</option>';
			opt+= '<option value="fixed">FIXED</option>';
			opt+= '</select>';
			fmt+= "%d{3}-%d{4}";
			break;
		case "province" : 
			lng+= '<select name="language[]">';
			lng+= '<option value="english">USA</option>';
			lng+= '<option value="japanese">JAPAN</option>';
			lng+= '</select>';
			opt+= '<select name="option[]">';
			opt+= '<option value="rand">RANDOM</option>';
			opt+= '</select>';
			fmt+= "";
			break;
		case "address" : 
			lng+= '<select name="language[]">';
			lng+= '<option value="japanese">JAPANESE</option>';
			lng+= '</select>';
			opt+= '<select name="option[]">';
			opt+= '<option value="rand">RANDOM</option>';
			opt+= '<option value="fixed">FIXED</option>';
			opt+= '</select>';
			fmt+= "XXXXXX XXXXXX %d{1}-%d{2,6}(-%d{2}-%d{3})?";
			break;
		case "phone" : 
			lng+= '<select name="language[]">';
			lng+= '<option value="NONE">NONE</option>';
			lng+= '</select>';
			opt+= '<select name="option[]">';
			opt+= '<option value="rand">RANDOM</option>';
			opt+= '<option value="fixed">FIXED</option>';
			opt+= '</select>';
			fmt+= "%d{2,4}-%d{2,4}-%d{4}";
			break;
		case "mail" : 
			lng+= '<select name="language[]">';
			lng+= '<option value="NONE">NONE</option>';
			lng+= '</select>';
			opt+= '<select name="option[]">';
			opt+= '<option value="rand">RANDOM</option>';
			opt+= '<option value="fixed">FIXED</option>';
			opt+= '</select>';
			fmt+= "%w{3,12}@%w{3,12}.(%w{2,12}.)?%M";
			break;
		case "url" : 
			lng+= '<select name="language[]">';
			lng+= '<option value="NONE">NONE</option>';
			lng+= '</select>';
			opt+= '<select name="option[]">';
			opt+= '<option value="rand">RANDOM</option>';
			opt+= '<option value="fixed">FIXED</option>';
			opt+= '</select>';
			fmt+= "(https?|ftp)://(www.)?(%w{2,8}.)?%w{2,16}.%m/(%w{2,8}/)?(%W{3,8}.html?)?";
			break;	
	}
	
	iLanguage.innerHTML = lng;
	iOption.innerHTML = opt;
	iFormat.value = fmt;
	
}

/***************************************************************/
/* helpopen
/***************************************************************/

function helpopen( scope )
{
	var tr = scope.parentNode.parentNode;
	var data_type = tr.childNodes[2].firstChild.value;
	
	if(BROWSER=="safari"){
		window.open( "help.html#"+data_type , "helpwin" , "width=450,height=400,status=no,scrollbars=yes" );
	} else {
		window.open( "help.html#"+data_type , "helpwin" , "width=450,height=400,status=no,scrollbars=yes" );
	}
	return false;
}

/***************************************************************/
/* setmode
/***************************************************************/

function setmode( param )
{
	if (!document.getElementsByTagName){ return false; }
	document.datafeelds.mode.value = param;
	
	return true;
}

/***************************************************************/
/* initFeeld
/***************************************************************/

function initFeeld()
{
	addNewFeeld();
}

addLoadEvent( initFeeld );

