var abbyy = {};


abbyy.validateTextField = function(input,required,format)
{
    var value = input.value;
    var valid = true;
    if(value != "")
    {
        switch (format)
        {
            case "phone":
                valid = value.match(/^[\d\-+\s();,*#]+$/) != null;
            break;
            case "email":
                valid = value.match(/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/) != null;
            break;
            case "name":
                valid = value.match(/^[A-Za-zА-Яа-я\s]+$/) != null;
			break;
			case "image":
				valid = value.match(/\.jpg|jpeg|gif|png|bmp|tif|tiff$/i) != null;
            break;
            default:     
            break;    
        }
    }
    if(!valid)
        abbyy.form.wrong(input);
	else if(required && value.match(/\S/) == null)
	{
		abbyy.requiredFields(input);
	}
    else abbyy.form.right(input);
    return valid && !(required && value.match(/\S/) == null);
}


abbyy.validateTextFieldCompany = function(input,required,format)
{
 	if (document.getElementById('youare').selectedIndex==1)
  	{
		return abbyy.validateTextField(input,required,format); 
 	}
	else return true;
}


abbyy.validateSelectField = function(elem)
{
	if (elem.value == "")
	{
		abbyy.requiredFields(elem);
		return false;
	} 
	else {
		abbyy.form.right(elem); 
		return true;
	}
}

abbyy.validateSelectFieldCompany = function(elem)
{
	if (elem.value == "")
	{
		abbyy.requiredFields(elem); 
		return false;
	} 
	else {
		if (elem.value == "a company") 
		{
			document.getElementById('requiredcompany').style.visibility='';
		}
		else document.getElementById('requiredcompany').style.visibility='hidden';
		abbyy.form.right(elem); 
		return true;
	}
}


abbyy.validateTickField = function(elem,imgID)
{
		var block = document.forms[elem.form.name][elem.name];
		for (i=0; i<block.length; i++)
		{
			if (block[i].checked == true) 
			{
				block = true;
			}
		}
		if (block == true) 
		{
			abbyy.form.right(elem,imgID);
			return true;
		}
		else 
		{
			block = false;
			abbyy.requiredFields(elem,imgID);
			return false;
		}
}

abbyy.validateTickFieldExtended = function(elem,imgID)
{
		var block = document.forms[elem.form.name][elem.name];

		for (i=0; i<block.length; i++)
		{
			if (block[i].checked == true || block[i].type == "text" && block[i].value != "") 
			{
				block = true;
			}
		}
		if (block == true) 
		{
			abbyy.form.right(elem,imgID);
			return true;
		}
		else 
		{
			block = false;
			abbyy.requiredFields(elem,imgID);
			return false;
		}
}


abbyy.validateOrderForm = function(form)
{
	this.fromSubmit = true;
	var valid=true;
	for(var k=0; k<form.elements.length; k++)
	{
		var input = form.elements[k];
		if(input.onchange != null)
			valid = input.onchange() && valid;
	}
	this.fromSubmit = false;
	if(valid)
	form.submit() 
}

abbyy.validateFormOnSubmit = function(form)
{
	this.fromSubmit = true;
	var valid = true;
	for(var k=0; k<form.elements.length; k++)
	{
		var input = form.elements[k];
		if(input.onchange != null)
			valid = input.onchange() && valid;
	}
	this.fromSubmit = false;
	if (valid)
	{
		return true;
	}
	else return false;
}



abbyy.validateDownloadForm = function(form,file)
{
	this.fromSubmit = true;
	var valid=true;
	var fileURL = 'http://abbyy.com/' + file;
	for(var k=0; k<form.elements.length; k++)
	{
		var input = form.elements[k];
		if(input.onchange != null) valid = input.onchange() && valid;
	}
	this.fromSubmit = false;
	if(valid)
	{
		window.open(fileURL,'Download');
		form.submit();	
	}
}


abbyy.form = {};

abbyy.form.empty = function(e,imgID)
{
	abbyy.form.setformimg("empty",e,imgID)
}

abbyy.form.wrong = function(e,imgID)
{
	abbyy.form.setformimg("invalid",e,imgID)
}

abbyy.form.right = function(e,imgID)
{
	abbyy.form.setformimg("valid",e,imgID)
}


abbyy.form.setformimg = function(img,e,imgID)
{
	if(imgID)
	{
		i = document.getElementById(imgID);
	}
	else
	{
		var i=e.nextSibling;
		while(i!= null && i.nodeName.toLowerCase()!="img")
		i=i.nextSibling;
	}

	if(i != null)
	{
		i.src = abbyy.form.img.baseurl + abbyy.form.img[img];
		i.title = abbyy.form.msg[img];
		i.alt = abbyy.form.msg[img];
	}
	else
	{
		i = new Image();
		i.src = abbyy.form.img.baseurl + abbyy.form.img[img];
		i.title = abbyy.form.msg[img];
		i.alt = abbyy.form.msg[img];
		e.parentNode.appendChild(i);
	}
}

abbyy.requiredFields = function(input,imgID)
{
	if (abbyy.fromSubmit) abbyy.form.wrong(input,imgID);
	else abbyy.form.empty(input,imgID);
}


abbyy.form.init = function()
{
	var i1 = new Image();
	i1.src = abbyy.form.img.baseurl + abbyy.form.img.required;

	var i2 = new Image();
	i2.src = abbyy.form.img.baseurl + abbyy.form.img.valid;

	var i3 = new Image();
	i3.src = abbyy.form.img.baseurl + abbyy.form.img.empty;

	var i4 = new Image();
	i4.src = abbyy.form.img.baseurl + abbyy.form.img.invalid;
}

abbyy.form.img = {};
abbyy.form.img.baseurl = "http://www.abbyy.com/images/forms/"
abbyy.form.img.required = "required.gif";
abbyy.form.img.valid = "valid.gif";
abbyy.form.img.invalid = "invalid.gif";
abbyy.form.img.empty = "required.gif";


abbyy.form.msg = {};
abbyy.form.msg.required = "required";
abbyy.form.msg.valid = "valid";
abbyy.form.msg.invalid = "invalid";
abbyy.form.msg.empty = "required";

abbyy.form.init();

abbyy.validateSelectFieldsdk = function(elem)
{
	AddProductSuccessSdk();
	if (elem.value == "")
	{
		abbyy.requiredFields(elem);
		return false;
	} 
	else {
		abbyy.form.right(elem); 
		return true;
	}
}

function AddProductSuccessSdk()
{

	var docLoc = document.getElementsByName('request_type');
		
	var selIx = docLoc.selectedIndex;
	var selValue = docLoc.item(selIx).value;
	var str = document.getElementById('backURL').value.toString();
	var tst = str.search('&product=');
	if(tst == -1)
	{
	document.getElementById('backURL').value += "&product=" + selValue;
	}
	
}
