var initData = {
  name: '',
  has_loc: 'none',
  voice: '86.53186920439',
  fax: '86.53186920439',
  email: '88997766554@qq.com',
  int: {
    'name': '张三丰',
    'org': '趵突泉旅游文化有限公司',
    'street1': '历下区趵突泉南路1号',
    'street2': '',
    'street3': '',
    'city': '济南市',
    'sp': '山东省',
    'pc': '250000',
    'cc': 'CN'
  },
  value: ''
};

var Create = React.createClass({
    mixins: [FormMixin],
    getInitialState() {
        switch(this.props.obj) {
        case 'domain':
            return {name:'', y:'1', value:''};
        case 'host':
            return {name:'', value:''};
        case 'contact':
            return initData;
        case 'launch':
            return {name:'', y:'1', phase:'open', value:''};
        }
    },
    getPostal(info) {
        return {
            name: info.name,
            org: info.org,
            addr: {
                street: [info.street1, info.street2, info.street3],
                city: info.city,
                sp: info.sp,
                pc: info.pc,
                cc: info.cc
            }
        }
    },
    getParam() {
        switch(this.props.obj) {
        case 'domain':
            return {
                name: TRIM(this.state.name),
                y: this.state.y,
                ns: SPLIT(this.state.ns),
                registrant: TRIM(this.state.registrant),
                admin: TRIM(this.state.admin),
                tech: TRIM(this.state.tech),
                billing: TRIM(this.state.billing),
                pw: randomPWD(8),
                dsData: this.state.dsData
            };
        case 'host':
            return {
                name: TRIM(this.state.name),
                ip: SPLIT(this.state.ip)
            };
        case 'contact':
            var r = {
                name: TRIM(this.state.name),
                int: this.getPostal(this.state.int),
                loc: this.state.has_loc!=='none'
                   ? this.getPostal(this.state.loc)
                   : undefined
            };
            if(TRIM(this.state.voice)){
				if(/^86\.[0-9]{1,14}/.test(TRIM(this.state.voice))){
					r.voice = '+'+TRIM(this.state.voice)+TRIM(this.state.xv);
				}else if(!/^86\.$/.test(TRIM(this.state.voice))){
					r.voice = '+86.'+TRIM(this.state.voice)+TRIM(this.state.xv);
				}else{
                    r.voice = '+86.01012345678';
                }
            }else{
                r.voice = '+86.01012345678';
            }
            if(TRIM(this.state.fax)){
				if(/^86\.[0-9]{1,14}/.test(TRIM(this.state.fax))){
					r.fax = '+'+TRIM(this.state.fax) + TRIM(this.state.xf);
				}else if(!/^86\.$/.test(TRIM(this.state.fax))){
					r.fax ='+86.'+TRIM(this.state.fax) + TRIM(this.state.xf);
				}else{
                    r.fax = '+86.01012345678';
                }
            }else {
                r.fax = '+86.01012345678';
            }
            r.email = TRIM(this.state.email);
            r.pw = randomPWD(8);
			return r;	
        case 'launch':
            return {
                name: TRIM(this.state.name),
                y: this.state.y,
                ns: SPLIT(this.state.ns),
                registrant: TRIM(this.state.registrant),
                admin: TRIM(this.state.admin),
                tech: TRIM(this.state.tech),
                billing: TRIM(this.state.billing),
                pw: randomPWD(8),
                dsData: this.state.dsData,
                phase: this.state.phase,
                encodedSignedMark: this.state.encodedSignedMark
            };
        }
    },
    handleSubmit(e) {
        api.create(this.props.obj==='launch' ? 'domain' : this.props.obj, this.getParam(), function(code, data) {
            switch(code) {
            case '1000':
                this.props.onFinish();
                break;
            case '2501':
                logout();
                break;
            default:
                this.setState({value: data});
            }
        }.bind(this));
    },
    render() {
        switch(this.props.obj) {
        case 'domain':
            return (
                <div>
                <table border="0" align="center">
                <tbody>
                  <tr align="center">
                    <td colSpan="2">{this.props.children}</td>
                  </tr>
                  <tr>
                    <td colSpan="2" height="16"></td>
                  </tr>
                  <tr>
                    <td>域名：</td>
                    <td>
                      <input {...this.linkState({
                          name: 'name',
                          type: 'text',
                          size: '40',
                          maxLength: '255',
                          onFocus: this.onSetState({name:'', value:''})
                      })}/>
                    </td>
                  </tr>
                  <tr>
                    <td>交费：</td>
                    <td><SelectYears {...this.linkState({name: 'y'})}/>年</td>
                  </tr>
                  <tr>
                    <td>NS主机：</td>
                    <td>
                      <textarea {...this.linkState({
                          name: 'ns',
                          rows: '6',
                          cols: '40',
                          onFocus: this.onSetState({ns:'', value:''})
                      })}/>
                    </td>
                  </tr>
                  <tr>
                    <td>登记人：</td>
                    <td>
                      <input {...this.linkState({
                          name: 'registrant',
                          type: 'text',
                          size: '16',
                          maxLength: '16',
                          onFocus: this.onSetState({registrant:'', value:''})
                      })}/>
                    </td>
                  </tr>
                  <tr>
                    <td>管理联系人：</td>
                    <td>
                      <input {...this.linkState({
                          name: 'admin',
                          type: 'text',
                          size: '16',
                          maxLength: '16',
                          onFocus: this.onSetState({admin:'', value:''})
                      })}/>
                    </td>
                  </tr>
                  <tr>
                    <td>交费联系人：</td>
                    <td>
                      <input {...this.linkState({
                          name: 'billing',
                          type: 'text',
                          size: '16',
                          maxLength: '16',
                          onFocus: this.onSetState({billing:'', value:''})
                      })}/>
                    </td>
                  </tr>
                  <tr>
                    <td>技术联系人：</td>
                    <td>
                      <input {...this.linkState({
                          name: 'tech',
                          type: 'text',
                          size: '16',
                          maxLength: '16',
                          onFocus: this.onSetState({tech:'', value:''})
                      })}/>
                    </td>
                  </tr>
                  <tr>
                    <td colSpan="2" height="16"></td>
                  </tr>
                  <tr>
                    <td>secDNS：</td>
                    <td><DsData name="dsData" linkState={this.linkState}/></td>
                  </tr>
                  <tr>
                    <td colSpan="2" height="16"></td>
                  </tr>
                  <tr align="center">
                    <td colSpan="2">
                      <input type="button" value="提交" onClick={this.handleSubmit}/>
                    </td>
                  </tr>
                </tbody>
                </table>
                <OpResult content={this.state.value} />
                </div>
            );
        case 'host':
            return (
                <div>
                <table>
                <tbody>
                  <tr>
                    <td colSpan="2">{this.props.children}</td>
                  </tr>
                  <tr>
                    <td colSpan="2" height="16"></td>
                  </tr>
                  <tr>
                    <td>主机名：</td>
                    <td>
                      <input {...this.linkState({
                          name: 'name',
                          type: 'text',
                          size: '40',
                          maxLength: '255',
                          onFocus: this.onSetState({name:'', value:''})
                      })}/>
                    </td>
                  </tr>
                  <tr>
                    <td>IP地址：</td>
                    <td>
                      <textarea {...this.linkState({
                          name: 'ip',
                          rows: '6',
                          cols: '40',
                          onFocus: this.onSetState({ip:'', value:''})
                      })}/>
                    </td>
                  </tr>
                  <tr>
                    <td colSpan="2" height="16"></td>
                  </tr>
                  <tr align="center">
                    <td colSpan="2"><input type="button" value="提交" onClick={this.handleSubmit} /></td>
                  </tr>
                </tbody>
                </table>
                <OpResult content={this.state.value} />
                </div>
            );
        case 'contact':
            return (
                <div>
                <table border="0" align="center">
                <tbody>
                  <tr align="center">
                    <td colSpan="2"><b>填写联系人信息</b></td>
                  </tr>
                  <tr>
                    <td colSpan="2" height="16"></td>
                  </tr>
                  <tr>
                    <td style={{"vertical-align": 'top'}}>联系人ID：</td>
                    <td>
                      <input style={{width: '286px'}} {...this.linkState({
                          name: 'name',
                          type: 'text',
                          size: '16',
                          maxLength: '16',
                          onFocus: this.onSetState({name:'', value:''})
                      })}/>
                      <label style={{display: 'block', "padding-top":'0.3em'}}>注册人是个人，请填写身份证号码，并去除出生年份的前两位，共计16位，此号码系统将自动引用为实名审核时的身份证号码且不能修改，请认真填写 示例：如果您的身份证号码是：110110196401021234，联系人ID请填写：1101106401021234</label>
                      <label style={{display: 'block', "padding-bottom": '0.3em'}}>注册人非个人，仍按原有规则填写，即：由英文字母、数字和“-”组成的字符串，长度<em className="red">4－16</em>，不能重复，必须是唯一的</label>
                    </td>
                  </tr>
                  <tr>
                    <td colSpan="2"><PostalInfo name="int" linkState={this.linkState} readOnly={false}/></td>
                  </tr>
                  <tr>
                    <td colSpan="2">
                      <input {...this.linkState({
                          name: 'has_loc',
                          type: 'radio',
                          value: 'none'
                      })}/>没有本地语言联系方式
                      <input {...this.linkState({
                          name: 'has_loc',
                          type: 'radio',
                          value: 'table-row'
                      })}/>有本地语言联系方式
                    </td>
                  </tr>
                  <tr style={{display: this.state.has_loc}}>
                    <td colSpan="2"><PostalInfo name="loc" linkState={this.linkState} readOnly={false}/></td>
                  </tr>
                  <tr>
                    <td>电话：</td>
                    <td>
                      <input {...this.linkState({
                          name: 'voice',
                          type: 'text',
                          size: '17',
                          maxLength: '17',
                          onFocus: this.onSetState({voice:'86.', value:''})
                      })}/>
                      转
                      <input {...this.linkState({
                          name: 'xv',
                          type: 'text',
                          size: '5',
                          maxLength: '5',
                          onFocus: this.onSetState({xv:'', value:''})
                      })}/>
                    <label>格式为国别(<strong className="red">86</strong>).区号(<strong className="red">531</strong>)座机号，如：86.53186920439或国别.手机号,如：86.13425668204，电话号码不得是1111111，1234567,00000等无意义的号码</label>
                    </td>
                  </tr>
                  <tr>
                    <td>传真：</td>
                    <td>
                      <input {...this.linkState({
                          name: 'fax',
                          type: 'text',
                          size: '17',
                          maxLength: '17',
                          onFocus: this.onSetState({fax:'86.', value:''})
                      })}/>
                      转
                      <input {...this.linkState({
                          name: 'xf',
                          type: 'text',
                          size: '5',
                          maxLength: '5',
                          onFocus: this.onSetState({xf:'', value:''})
                      })}/>
                    <label>格式为国别(<strong className="red">86</strong>).区号(<strong className="red">531</strong>)座机号，如：86.53186920439或国别.手机号,如：86.13425668204，电话号码不得是1111111，1234567,00000等无意义的号码</label>
                    </td>
                  </tr>
                  <tr>
                    <td>电子邮件：</td>
                    <td>
                      <input {...this.linkState({
                          name: 'email',
                          type: 'text',
                          size: '40',
                          maxLength: '255'
                      })}/>
                    <label>必须真实有效，用于接收有关所注册域名的重要通知，<strong className="red">不可用中文邮箱</strong></label>
                    </td>
                  </tr>
                  <tr>
                    <td colSpan="2" height="16"></td>
                  </tr>
                  <tr align="center">
                    <td colSpan="2"><input type="button" value="提交" onClick={this.handleSubmit} /></td>
                  </tr>
                </tbody>
                </table>
                <OpResult content={this.state.value} />
                </div>
            );
        case 'launch':
            return (
                <div>
                <table border="0" align="center">
                <tbody>
                  <tr align="center">
                    <td colSpan="2">{this.props.children}</td>
                  </tr>
                  <tr>
                    <td colSpan="2" height="16"></td>
                  </tr>
                  <tr>
                    <td>域名：</td>
                    <td>
                      <input {...this.linkState({
                          name: 'name',
                          type: 'text',
                          size: '40',
                          maxLength: '255',
                          onFocus: this.onSetState({name:'', value:''})
                      })}/>
                    </td>
                  </tr>
                  <tr>
                    <td>phase:</td>
                    <td><LaunchPhase {...this.linkState({name: 'phase'})}/></td>
                  </tr>
                  <tr>
                    <td>交费：</td>
                    <td><SelectYears {...this.linkState({name: 'y'})}/>年</td>
                  </tr>
                  <tr>
                    <td>NS主机：</td>
                    <td>
                      <textarea {...this.linkState({
                          name: 'ns',
                          rows: '6',
                          cols: '40',
                          onFocus: this.onSetState({ns:'', value:''})
                      })}/>
                    </td>
                  </tr>
                  <tr>
                    <td>登记人：</td>
                    <td>
                      <input {...this.linkState({
                          name: 'registrant',
                          type: 'text',
                          size: '16',
                          maxLength: '16',
                          onFocus: this.onSetState({registrant:'', value:''})
                      })}/>
                    </td>
                  </tr>
                  <tr>
                    <td>管理联系人：</td>
                    <td>
                      <input {...this.linkState({
                          name: 'admin',
                          type: 'text',
                          size: '16',
                          maxLength: '16',
                          onFocus: this.onSetState({admin:'', value:''})
                      })}/>
                    </td>
                  </tr>
                  <tr>
                    <td>交费联系人：</td>
                    <td>
                      <input {...this.linkState({
                          name: 'billing',
                          type: 'text',
                          size: '16',
                          maxLength: '16',
                          onFocus: this.onSetState({billing:'', value:''})
                      })}/>
                    </td>
                  </tr>
                  <tr>
                    <td>技术联系人：</td>
                    <td>
                      <input {...this.linkState({
                          name: 'tech',
                          type: 'text',
                          size: '16',
                          maxLength: '16',
                          onFocus: this.onSetState({tech:'', value:''})
                      })}/>
                    </td>
                  </tr>
                  <tr>
                    <td colSpan="2" height="16"></td>
                  </tr>
                  <tr>
                    <td>secDNS：</td>
                    <td><DsData name="dsData" linkState={this.linkState}/></td>
                  </tr>
                  <tr>
                    <td colSpan="2" height="16"></td>
                  </tr>
                  <tr>
                    <td>SMD：</td>
                    <td>
                      <input {...this.linkState({
                          name: "encodedSignedMark",
                          type: "file"
                      })}/>
                    </td>
                  </tr>
                  <tr>
                    <td colSpan="2" height="16"></td>
                  </tr>
                  <tr align="center">
                    <td colSpan="2">
                      <input type="button" value="提交" onClick={this.handleSubmit}/>
                    </td>
                  </tr>
                </tbody>
                </table>
                <OpResult content={this.state.value} />
                </div>
            );
        }
    }
});
