var fileImage = false;
var FormObject = false;

function SendFormAjax(form, args){
	args = args || {};
	var defargs = {
		url: location.protocol+'//'+location.host,
		validate: true,
		errorHandler: defErrorHandler,
		onComplete: null,
		disable:'',
		clear:false,
		dontpost: false
	};
	$.extend(defargs, args);
	var errors = false;
	var FormObject = form;
	var i;
	var post = {};
	var disabled = [];
	//FormFileUpload(form);
	if (disable != '') {
		var disable = defargs.disable.split(',');
		for (i = 0; i < disable.length; i++) {
			var e = document.getElementById(disable[i]);
			if (e) {
				e.setAttribute('disabled','disabled');
				disabled.push(e);
			}
		}
	}
	for (i = 0; i < form.elements.length; i++){
		var el = form.elements[i];
		
		if (!el.name || el.type == 'submit' || el.type == 'reset' || el.type == 'button') continue;
		if (defargs.validate) {
			var rule = el.getAttribute('rule');
			if (rule) {
				if (el.type == 'checkbox' || el.type == 'radio') val = el.checked?el.value:'';
				else val = el.value;
				var err = testRules(eval('('+rule+')'), val, 'and');
				if (err != '') {
					defargs.errorHandler(err, el);
					errors = true;
				}
			}
		}
		if(el.tagName.toLowerCase() == 'select'){
		    var rule = el.getAttribute('required');
		    if(el.name == 'fields[0][birthdate][d]' || el.name == 'fields[0][birthdate][m]' || el.name == 'fields[0][birthdate][y]'){
			rule = 'required';
			var errId = 'birthdate';
		    }
		    
		    if(rule == 'required' && el.value == '0'){
			errors = true;

			if(!errId){
			    errId = el.id.substring(0, el.id.length-2);
			}

			$('div#'+errId).html('Поле не может быть пустым');
		    }
		}
		if(el.type == 'file'){
		    var fieldId = el.id.substring(0, el.id.length-2);
		    if(FileImageCheck(el.value, fieldId)){
			errors = true;
			fileImage = false;
		    }
		    else{
			if(el.value){
			    //$('input#'+fieldId+'_hidden_0').val(location.protocol+'//'+location.host+'/photo_resume/'+el.value);
			    fileImage = true;
			}
		    }
		}
		if (el.type == 'checkbox' || el.type == 'radio') {
			if (el.checked) post[el.name] = el.value;
		} else {
			post[el.name] = el.value;
		}
	}
	if (errors) {
		for (i = 0; i < disabled.length; i++) e.removeAttribute('disabled');
		return false;
	}
	if (defargs.dontpost) {
		for (i = 0; i < disabled.length; i++) e.removeAttribute('disabled');
		if (defargs.onComplete) defargs.onComplete();
		return true;
	}

	
	if(fileImage){
	    $('input#ajax_type').val('no');
	    $(form).attr('action', defargs.url);
	}
	else{
	    $.post(defargs.url, post, function(res){

		if (defargs.clear) form.reset();
		    for (i = 0; i < disabled.length; i++) e.removeAttribute('disabled');
		    if (defargs.onComplete) {
			    defargs.onComplete(res);
		    }
	    });
	}
//console.log($('input#ajax_type').val());
//$('input#ajax_type').val('no');
//console.log($('input#ajax_type').val());
	return true;
}

function FileImageCheck(value, id){
    
	if(value){	    
	    var valueLength = value.length;
	    var ext = value.substring((valueLength-4), valueLength);

	    if(ext.toLowerCase() != '.jpg' && ext.toLowerCase() != 'jpeg'){		
				
		$('div#'+id).html('Фотографии разрешены только в JPG формате!');
		return true;
	    }
	    else{
		return false;
	    }
	}
	else{
	    return false;
	}
}

function defErrorHandler(err,el){
    el.className = 'has_error';
    var mes = el.getAttribute('messages');
    var errmes = '';
    if (mes) {
        mes = eval('('+mes+')');
        mes = mes[err] || mes['defmessage'] || '';
    }
    var tip = $(el).attr('tip');
    if (mes != ''){
        if (tip) {
            $("#" + tip).html(mes).show();
        } else {
            alert(mes);
        }
    }
    el.onfocus = hideErrorOnFocus;
}

function hideErrorOnFocus(e) {
	this.onfocus = null;
	this.className = '';
	var tip = this.getAttribute('tip');
	if (tip) {
		document.getElementById(tip).style.display = 'none';
	}
}

function testRules(ru,val,op){
	var last = '';
	for (k in ru){
		var res = '';
		switch (k){
			case 'noempty':	if (val=='') res = k; break;
			case 'minlen':	if (val.length < ru[k]) res = k; break;
			case 'maxlen':	if (val.length > ru[k]) res = k; break;
			case 'numeric':	if (!val.match(/^[0-9]+$/)) res = k; break;
			case 'email':	if (!val.match(/^[\w\.-]+\@[\w\.-]+\.\w+$/)) res = k; break;
			case 'ereg':	if (!val.match(new RegExp(ru[k]))) res = k; break;
			case 'or': 		res = testRules(ru[k], val, 'or'); break;
			case 'and':		res = testRules(ru[k], val, 'and'); break;
			case 'confirm': if (val != document.getElementById(ru[k]).value) res = k; break;
			case 'depend':	res = testRules(ru[k].rule, document.getElementById(ru[k].of).value, 'and'); break;
			case 'not': 	if (testRules(ru[k],val,'and') == '') res = 'not'; break;}
		if (op == 'or' && res == '') return '';
		if (op == 'and' && res != '') return res;
		last = res;
	}
	return last;
}

function ScrollToElement(theElement){
	var selectedPosX = 0;
	var selectedPosY = 0;
	while(theElement != null){
		selectedPosX += theElement.offsetLeft;
		selectedPosY += theElement.offsetTop;
		theElement = theElement.offsetParent;
	}
	window.scrollTo(selectedPosX,selectedPosY);
}

function outSendResult(e){
    $('.err_mes').html('');
    var report = $(e).find('report').text();
    var messblock = document.getElementById('message');
    if (report == 'ok'){
        messblock.innerHTML = 'Ваше письмо отправлено';
        messblock.className = 'normal';
        document.getElementById('testdriveform').reset();
    } else {
	
        messblock.innerHTML = 'При отправке письма возникли ошибки, проверьте пожалуйста введенные данные';
        messblock.className = 'failed';
        var err = $(e).find('required').children();
        $(err).each(function(e){
            if(this.nodeName == 'cbcaptcha'){
                $("#captchaQusetion").html($(this).attr('msg'));
                defErrorHandler('badcaptcha', document.getElementById('cbcaptcha'));
                $("#message_captcha").show();
            } else {
                $('#'+this.nodeName).html($(this).attr('msg'));
            }
        });
    }

}






