
var prefixes=new Array();

prefixes["_nonempty_"]=validate_nonempty;
prefixes["_nonemptyen_"]=validate_nonempty;
prefixes["_email_"]=validate_email;
prefixes["_date_"]=validate_date;
prefixes["_time_"]=validate_time;
prefixes["_datetime_"]=validate_datetime;
prefixes["_timestamp_"]=validate_timestamp;
prefixes["_number_"]=validate_number;
prefixes["_select_"]=validate_select;
prefixes["_radio_"]=validate_radio;
prefixes["_alphastring_"]=validate_alphastring;
prefixes["_dirname_"]=validate_dirname;

warnings=new Array();
warnings["_nonempty_"]="Не заполнено обязательное поле";
warnings["_nonemptyen_"]="Please fill all (*) fields";
warnings["_email_"]="Неверный формат email";
warnings["_date_"]="Неверный формат даты(DD.MM.YYYY)";
warnings["_time_"]="Неверный формат времени(HH:MM)";
warnings["_datetime_"]="Неверный формат даты и времени(DD.MM.YYYY HH:MM)";
warnings["_timestamp_"]="Неверный формат даты и времени(DD.MM.YYYY HH:MM:SS)";
warnings["_number_"]="Неверный формат числа";
warnings["_select_"]="Не выбрано поле";
warnings["_radio_"]="Не выбрано поле";
warnings["_alphastring_"]="Неверный формат(строка из латинских букв)";
warnings["_dirname_"]="Неверный формат названия директории (строка из латинских букв без пробелов)";

var GetPrefixPos=0;
var f;

function CheckMandatoryFields(form) {
	f=document.forms[form];
	var prefix;
	var c;
	var i;
	var flag=true;
	for(c=0;c<f.elements.length;c++) {
		while((prefix=getNextPrefix(f.elements[c].name))!="" && f.elements[c].disabled == false) {
			if(!(prefixes[prefix](f.elements[c]))) {
				alert(warnings[prefix]);
				f.elements[c].focus();
				GetPrefixPos=0;
				return false;
			}
		}
	}
	
	while(flag) {
		flag=false;
		for(c=0;c<f.elements.length;c++) {
			for(prefix in prefixes) {
				if(f.elements[c].name.substring(0,prefix.length)==prefix) {
					f.elements[c].name=f.elements[c].name.substring(prefix.length,f.elements[c].name.length);
					flag=true;
				}
			}
		}
	} 
	return true;
}

function getNextPrefix(name) {
	var prefix;
	for(prefix in prefixes) {
		if(name.substring(GetPrefixPos,GetPrefixPos+prefix.length)==prefix) {
			GetPrefixPos+=prefix.length;
			return prefix;
		}
	}
	GetPrefixPos=0;
	prefix="";
	return prefix;
}

function validate_email(obj) {
	var i;
	var val=obj.value;
	var state=0;
	if(val=="") return true;
	for(i=0;i<val.length;i++) {
		// alert("state="+state+" val["+i+"]="+val.charAt(i));
		switch(state) {
			case 0: // waiting @
				if(val.charAt(i)=="@") {
					state=1;
				} else { 
					if(!is_alnum2(val.charAt(i))) return false;
				}
				break;
			case 1: // waiting .
				if(val.charAt(i)==".") {
					state=2;
				} else {
					if(!is_alnum2(val.charAt(i))) return false;
				}
				break;
			case 2: // waiting for some chars... or .
				if(is_alnum2(val.charAt(i))) {
					state=1;
				} else {
					return false;
				}
				break;
		}
	}
	if(state==1) return true;
	return false;
}
			
function validate_date(obj) {
	var i,state=0;
	var val=obj.value;
	var dd="",mm="",yyyy="";
	if(val=="") return true;
	for(i=0;i<val.length;i++) {
		switch(state) {
			case 0:
				if(val.charAt(i)==".") state=1;
				else if("0123456789".indexOf(val.charAt(i))==-1) return false;
				else dd+=val.charAt(i);
				break;
			case 1:
				if(val.charAt(i)==".") state=2;
				else if("0123456789".indexOf(val.charAt(i))==-1) return false;
				else mm+=val.charAt(i);
				break;
			case 2:
				if("0123456789".indexOf(val.charAt(i))==-1) return false;
				else yyyy+=val.charAt(i);
		}
	}
	if(state!=2) return false;

    if(dd.length != 2) return false; 
    if(mm.length != 2) return false;
    if(yyyy.length != 4) return false;

	if(isNaN(parseInt(dd)) || isNaN(parseInt(mm)) || isNaN(parseInt(yyyy))) return false;
	if(dd.length != 2 || mm.length !=2 || yyyy.length != 4) return false;
	if(parseInt(dd) < 0 || parseInt(mm) < 0 || parseInt(dd) > 31 || parseInt(mm) > 12) return false;
	return true;
}

function validate_time(obj) {
	var i,state=0;
	var val=obj.value;
	var hh="",mi="";
	if(val=="") return true;
	for(i=0;i<val.length;i++) {
		switch(state) {
			case 0:
				if(val.charAt(i)==":") state=1;
				else if("0123456789".indexOf(val.charAt(i))==-1) return false;
				else hh+=val.charAt(i);
				break;
			case 1:
				if("0123456789".indexOf(val.charAt(i))==-1) return false;
				else mi+=val.charAt(i);
		}
	}
	if(state!=1) return false;
    if(hh.length != 2) return false;
	if(mi.length != 2) return false;

	if(isNaN(parseInt(hh)) || isNaN(parseInt(mi))) return false;
	if(parseInt(hh)>23 || parseInt(mi)<0 || parseInt(mi)>59) return false;
	return true;
}


function validate_datetime(obj) {
	var i,state=0;
	var val=obj.value;
	var dd="",mm="",yyyy="",hh="",mi="";
	if(val=="") return true;
	for(i=0;i<val.length;i++) {
		switch(state) {
			case 0:
				if(val.charAt(i)==".") state=1;
				else if("0123456789".indexOf(val.charAt(i))==-1) return false;
				else dd+=val.charAt(i);
				break;
			case 1:
				if(val.charAt(i)==".") state=2;
				else if("0123456789".indexOf(val.charAt(i))==-1) return false;
				else mm+=val.charAt(i);
				break;
			case 2:
				if(val.charAt(i)==" ") state=3;
				else if("0123456789".indexOf(val.charAt(i))==-1) return false;
				else yyyy+=val.charAt(i);
				break;
			case 3:
				if(val.charAt(i)==":") state=4;
				else if("0123456789".indexOf(val.charAt(i))==-1) return false;
				else hh+=val.charAt(i);
				break;
			case 4:
				if("0123456789".indexOf(val.charAt(i))==-1) return false;
				else mi+=val.charAt(i);
		}
	}
	if(state!=4) return false;

    if(dd.length != 2) return false; 
    if(mm.length != 2) return false;
    if(yyyy.length != 4) return false;
    if(hh.length != 2) return false;
	if(mi.length != 2) return false;

	
	if(isNaN(parseInt(dd)) || isNaN(parseInt(mm)) || isNaN(parseInt(yyyy))) return false;
	if(parseInt(dd) < 0 || parseInt(mm) < 0 || parseInt(dd) > 31 || parseInt(mm) > 12) return false;
	if(isNaN(parseInt(hh)) || isNaN(parseInt(mi))) return false;
	if(parseInt(hh)>23 || parseInt(mi)<0 || parseInt(mi)>59) return false;
	return true;
}


function validate_timestamp(obj) {
	var i,state=0;
	var val=obj.value;
	var dd="",mm="",yyyy="",hh="",mi="",ss="";
	if(val=="") return true;
	for(i=0;i<val.length;i++) {
		switch(state) {
			case 0:
				if(val.charAt(i)==".") state=1;
				else if("0123456789".indexOf(val.charAt(i))==-1) return false;
				else dd+=val.charAt(i);
				break;
			case 1:
				if(val.charAt(i)==".") state=2;
				else if("0123456789".indexOf(val.charAt(i))==-1) return false;
				else mm+=val.charAt(i);
				break;
			case 2:
				if(val.charAt(i)==" ") state=3;
				else if("0123456789".indexOf(val.charAt(i))==-1) return false;
				else yyyy+=val.charAt(i);
				break;
			case 3:
				if(val.charAt(i)==":") state=4;
				else if("0123456789".indexOf(val.charAt(i))==-1) return false;
				else hh+=val.charAt(i);
				break;
			case 4:
				if(val.charAt(i)==":") state=5;
				else if("0123456789".indexOf(val.charAt(i))==-1) return false;
				else mi+=val.charAt(i);
				break;
			case 5:
				if("0123456789".indexOf(val.charAt(i))==-1) return false;
				else ss+=val.charAt(i);
		}
	}
	if(state!=5) return false;

    if(dd.length != 2) return false; 
    if(mm.length != 2) return false;
    if(yyyy.length != 4) return false;
    if(hh.length != 2) return false;
	if(mi.length != 2) return false;
    if(ss.length != 2) return false;
	
    if(isNaN(parseInt(dd)) || isNaN(parseInt(mm)) || isNaN(parseInt(yyyy))) return false;
	if(parseInt(dd) < 0 || parseInt(mm) < 0 || parseInt(dd) > 31 || parseInt(mm) > 12) return false;
	if(isNaN(parseInt(hh)) || isNaN(parseInt(mi)) || isNaN(parseInt(ss))) return false;
	if(parseInt(hh)>23 || parseInt(mi)<0 || parseInt(mi)>59 || parseInt(ss)<0 || parseInt(ss)>59) return false;
	return true;
}


function validate_nonempty(obj) {
	var val=obj.value;
	if(val=="") return false;
	return true;
}

function validate_number(obj) {
	var val=obj.value;
	if(val=="") return true;
	if(isNaN(parseFloat(val))) return false;
	return true;
}

function validate_select(obj) {
	var val=obj.options[obj.selectedIndex].value;
	if(val==-1 || val=="") return false;
	return true;
}

function validate_radio(obj) {
	obj = f[obj.name];
  	for (var i = 0;i<obj.length; i++) 
	{
   		if (obj[i].checked) return true;
	}
        return false;
}

function validate_alphastring(obj) {
	var val=obj.value;
	for(i=0;i<val.length;i++) {
        	if(!is_alpha(val.charAt(i))&&!is_number(val.charAt(i))&&!is_addsymb(val.charAt(i))) return false;
	}
	return true;
}

function validate_dirname(obj) {
	var val=obj.value;
	for(i=0;i<val.length;i++) {
        	if(!is_alnum2(val.charAt(i))) return false;
	}
	return true;
}

function is_alpha(c) {
	if("qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM".indexOf(c)!=-1) return true;
	return false;
}

function is_number(c) {
	if("0123456789".indexOf(c)!=-1) return true;
	else return false;
}

function is_alnum(c) {
	if(is_alpha(c) || is_number(c)) return true;
	return false;
}		

function is_alnum2(c) {
	if(is_alnum(c) || c=="_" || c=="-" || c==".") return true;
	return false;
}		

function is_addsymb(c) {
	if("_-\.\ ".indexOf(c)!=-1) return true;
	else return false;
}


function set_payment_type_en(v) {
	var s = '';
	if (v == '1') {
		s = '<option value="1.1">Western Union or MoneyGram money transfer</option><option value="1.2">On-line Payment via Webmoney, Moneybookers, Paypal etc</option><option value="1.3">Money transfer  on bank account</option>';
		
	}
	else if (v == '2') {
		s = '<option value="2.1">Western Union or MoneyGram money transfer</option><option value="2.2">Payment via Webmoney</option><option value="2.3">Payment by Bank transfer</option>';
	}
	else if (v == '3') {
		s = '<option value="3.1">Payment via Western Union or MoneyGram</option><option value="3.2">Payment via Webmoney</option><option value="3.3">Payment by Bank transfer</option>';
	}
	else {
		s = '';
	}
	document.getElementById("pay_type_td").innerHTML = '<select name="_nonemptyen_pay_type" class="input">'+s+'</select>';
}

function set_payment_type_ru(v) {
	var s = '';
	if (v == '1') {
		s = '<option value="1.1">Наложенный платеж (Оплата при получении в почтовом отделении)</option><option value="1.2">Оплата по безналичному расчету  (только для юридических лиц)</option><option value="1.3">Оплата через любую систему денежных переводов (Western Union, MoneyGram, Contact, Migom, почтовый перевод и т.д.)</option><option value="1.4">Оплата через любую систему электронных денежных переводов (WebMoney, Яндекс деньги, Money Mail и т д)</option><option value="1.5">Иное</option>';
		toggle_other_tr('1.1', "ru");
	}
	else if (v == '2') {
		s = '<option value="2.1">Оплата наличными курьеру при получении заказа</option><option value="2.2">Оплата по безналичному расчету</option><option value="2.3">Оплата через любую систему денежных переводов (Western Union, MoneyGram, Contact, Migom, почтовый перевод и т.д.)</option><option value="2.4">Оплата через любую систему электронных денежных переводов (WebMoney, Яндекс деньги, пополнение счета мобильного телефона)</option><option value="2.5">Иное</option>';
		toggle_other_tr('2.1', "ru");
	}
	else if (v == '3') {
		s = '<option value="3.1">Оплата по безналичному расчету</option><option value="3.2">Оплата через любую систему денежных переводов (Western Union, MoneyGram, Contact, Migom, почтовый перевод и т.д.)</option><option value="3.3">Оплата через любую систему электронных денежных переводов (WebMoney, Яндекс деньги, пополнение счета мобильного телефона)</option><option value="3.4">Иное</option>';
		toggle_other_tr('3.1', "ru");
	}
	else if (v == '4') {
		s = '<option value="4.1">Оплата по безналичному расчету</option><option value="4.2">Оплата через любую систему денежных переводов (Western Union, MoneyGram, Contact, Migom, почтовый перевод и т.д.)</option><option value="4.3">Оплата через любую систему электронных денежных переводов (WebMoney, Яндекс деньги, пополнение счета мобильного телефона)</option><option value="4.4">Иное</option>';
		toggle_other_tr('4.1', "ru");
	}
	else if (v == '5') {
		s = '<option value="5.1">Оплата по безналичному расчету</option><option value="5.2">Оплата через любую систему денежных переводов (Western Union, MoneyGram, Contact, Migom, почтовый перевод и т.д.)</option><option value="5.3">Оплата через любую систему электронных денежных переводов (WebMoney, Яндекс деньги, пополнение счета мобильного телефона)</option><option value="5.4">Иное</option>';
		toggle_other_tr('5.1', "ru");
	}
	else if (v == '6') {
		s = '<option value="6.1">Иное</option>';
		toggle_other_tr('6.1', "ru");
	}
	else if (v == '7') {
		s = '<option value="7.1">Оплата наличными курьеру при получении заказа</option><option value="7.2">Оплата через любую систему денежных переводов (Western Union, MoneyGram, Contact, Migom, почтовый перевод и т.д.)</option><option value="7.3">Оплата через любую систему электронных денежных переводов (WebMoney, Яндекс деньги, пополнение счета мобильного телефона)</option>';
		toggle_other_tr('5.1', "ru");
	}
	else {
		s = '';
	}
	document.getElementById("pay_type_td").innerHTML = '<select name="_nonempty_pay_type" class="input" onchange="toggle_other_tr(this.value, \'ru\');">'+s+'</select>';
}

function toggle_other_tr(v, lang) {
	if (lang == 'ru') {
		if (v == '1.5' || v == '2.5' || v == '3.4' || v == '4.4' || v == '5.4' || v == '6.1') { 
			$("#other_tr").html('<td class="param_mail_head" style="vertical-align: top;" valign="top" width="250">Иное:<sup>*</sup></td><td valign="top" id="pay_type_td"><input type="text" name="_nonempty_pay_type_other" class="input"></td>').show();
		}
		else {
			$("#other_tr").html('').hide();
		}
	}
	else {
		if (v == '1.5' || v == '2.5' || v == '3.4' || v == '4.4' || v == '5.4' || v == '6.1') {
			$("#other_tr").html('<td class="param_mail_head" style="vertical-align: top;" valign="top" width="250">Other type:<sup>*</sup></td><td valign="top" id="pay_type_td"><input type="text" name="_nonemptyen_pay_type_other" class="input"></td>').show();
		}
		else {
			$("#other_tr").html('').hide();
		}
	}
}