/* Version: $Id: form.js,v 1.2 2008/08/17 11:08:53 raidam Exp $ */
// global error messages
var msg = '';

var svorka 	='svorka';
var userSpan='isUser';
var firmaSpan ='isFirma';
var textInput ='Input';

//input id
var text	='text';
var email	='kontakt_email';
var support ='selectProblem';
var telefon	='tel_input';
var client 	='client';// company
var userIn 	='supportUser';// member
var captchaP='captcha';
var firma	= 'isFirmaInput'; // isFirmaInput
var person	= userSpan + textInput;
var contaktName	='kontakt_name';

//pro jobs, hotjobs a starou praci
//nova prace viz nize + modaly a YUI
function valide(errorColor, modals) 
{
	//globalni promeny
	msg = '';
	error =false;
	modal			=modals;
	color			=errorColor;	
	
	var textInput	=d(text);
	var emailInput 	=d(email);
	var telInput 	=d(telefon);
	var icoInput	=d(firma);
	
	var dateInput	=d(person);
	var kontaktInput=d(contaktName);
	var captcha		=d(captchaP);	
	var companyId	=d(client);
	var personId	=d(userIn);	
	var emailValid	=is_email(emailInput.value);
		
	//validace vzkazu
	valideInput(textInput, __('Message') );
	
	//validace kontaktni osoby
	valideInput(kontaktInput, __('ContactPerson') );
	
	//vyplneny mail nebo telefon
	if ((emailInput.value == '@' || emailInput.value == '') && !telInput.value) 
	{
		writeMessage( __('EmailOrPhone') );
		error	=true;
		backGroundColor(telInput, null);
		backGroundColor(emailInput, null);
	}
	else if ( emailValid == false && !telInput.value ) 
	{//je email a neni input telefon
		writeMessage( __('ChceckEmailFormat') );
		error	=true;
		backGroundColor(telInput, '-');
		backGroundColor(emailInput, null);
	}
	else if ( !telInput.value.match(/^\+?[0-9]{9,40}$/) == true && emailValid == false ) 
	{//odpovida telefonu
		writeMessage( __('ChceckTelefoneFormat') );
		error	=true;
		backGroundColor(telInput, null);
		backGroundColor(emailInput, '-');
	} 
	else
	{
		backGroundColor(telInput, '-');
		backGroundColor(emailInput, '-');
	}
	
	//alert(companyId.checked && !icoInput.value.match(/^[0-9]{6,}$/) == true);
	
	//je zeskrtnute radio
	if (!personId.checked && !companyId.checked) 
	{		
		backGroundColor(personId, null);
		backGroundColor(icoInput, '-');
		backGroundColor(companyId, null);
		writeMessage( __('CompanyOrUser') );
		error	=true;
	}
	// @TODO 
	// ICO ma 8 cisel komplexnejsi kontrola je napr. http://latrine.dgx.cz/jak-overit-platne-ic-a-rodne-cislo v komentarich
	else if ( companyId.checked && !icoInput.value.match(/^[0-9]{6,}$/) == true ) 
	{//konroluje vyplnene ico
	
		backGroundColor(personId, '-');
		backGroundColor(icoInput, null);
		backGroundColor(companyId, '-');
		// empty 
		if (trim(icoInput.value).length==0) {
			writeMessage( __('ICO') );
		} else {
			// not numbers
			writeMessage( __('IncorrectCompanyId') );
		}
		error	=true;
	} 
	else if (personId.checked && d(support).value == '2'
			&& !dateInput.value.match(/^([1-3]?[0-9])\.(1|2|3|4|5|6|7|8|9|10|11|12)\.(19|20)[0-9]{2}$/)) 
	{//kontroluje vyplnene narozeniny
		backGroundColor(dateInput, null);
		backGroundColor(personId, '-');
		backGroundColor(companyId, '-');
		writeMessage( __('DateOfBirth') );
		error	=true;
	}
	else
	{
		backGroundColor(personId, '-');
		backGroundColor(companyId, '-');
		backGroundColor(dateInput, '-');
		backGroundColor(icoInput, '-');
	}
	
	//captcha
	valideInput(captcha, __('captcha_rewrite_code') );

	if (error) 
	{
		if(modal == true)
		{
			return '<ul>' + msg + '</ul>';
		}
		
		alert(__('FollowingFieldsMustBeFilledOut') + ':\n\n' + msg);
		return false;
	} 
	else 
	{
		return true;
	}
}


function showInput(show, hidden) 
{
	var clientId = d(client);
	
	if (d(userIn).checked == true || clientId.checked == true) 
	{
		var showId		=new Css(show);
		var hiddenId	=new Css(hidden);		
		var showInput	=d(show + textInput);
		var hiddenInput =d(hidden + textInput);

		hiddenInput.disabled = true;
		hiddenId.update('hidden');

		showInput.disabled = false;
		showId.update('show');

		if (clientId.checked == true
				|| (d(support).value == '2' && clientId.checked != true)) 
		{
			d(svorka).className = 'hidden';
		} 
		else 
		{
			d(svorka).className = 'show';

			showInput.disabled = true;
			showId.setNew('hidden');
		}
	}

}


/**
 * na zaklade cheknuteho radia rozhodne zda to jde o firemniho klinta ci
 * uzivatele je dobre ji nacist po obnoveni stranky a dale ji vyuzivaji select
 * se seznamem vzkazu na jobs.cz tobjobs.sk prace.cz ve formulari a u dobreho
 * ducha
 * 
 * @return void
 */
function selectInput() 
{
	var userIDcko	=d(userIn);
	
	if(!userIDcko == false)
	{
		if (d(userIn).checked == true) 
		{
			showInput(userSpan, firmaSpan);
		} 
		else 
		{
			showInput(firmaSpan, userSpan);
		}
	}
}







//--------------------------sdilene jobs.cz prace.cz hotjobs.cz


function valideInput(id, message)
{
	if (trim(id.value) == '') 
	{		
		backGroundColor(id, null);		
		writeMessage(message);
		error	=true;		
	}
	else
	{
		backGroundColor(id, '-');
	}
}

function backGroundColor(cssClass, className)
{
	if(color)
	{
		if(className == null)
		{	
			YAHOO.util.Dom.addClass(cssClass, color);
		}
		else if(className == '-')
		{
			YAHOO.util.Dom.removeClass(cssClass, color);
		}
	}
}

function writeMessage(message)
{
	if(modal == true)
	{
		msg	+='<li>' + message + '</li>';
	}
	else
	{
		msg	+=message + '\n';
	}
}

function is_email(mail) 
{
	var filter	=/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	return filter.test(mail);
}

function d(el) {
	return YAHOO.util.Dom.get(el);
}

function trim(string)
{
	//IE7 a IE 6 neumi '\s'	"proto se pouziva cely zapis \f\n\r\t\v\u00A0\u2028\u2029)
	return string.replace(/^[\f\n\r\t\v\u00A0\u2028\u2029]*|[\f\n\r\t\v\u00A0\u2028\u2029]*$/g, "");
}

function moveCursor(obj)
{
	if(obj.value == '@')
	{
		obj.selectionStart	=0;
		obj.selectionEnd	=0;
	}
}

