/* 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 vzkaz   ='selectProblem';
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';
var person	= userSpan + textInput;
var contaktName	='kontakt_name';
var browserInfo ='browser';

//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 vzkazSelect =d(vzkaz);
	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);
	var browser     =d(browserInfo);
		
	// validate typu vzkazu
	validaSelect(vzkazSelect, 0, __('SUP_T_FORM_MODAL_VALIDACE_TOPIC'));
	
	//validace vzkazu
	valideInput(textInput, __('SUP_T_FORM_MODAL_VALIDACE_MESSAGE') );
	
	//validace kontaktni osoby
	valideInput(kontaktInput, __('SUP_T_FORM_MODAL_VALIDACE_PERSON') );
	
	// je vyplneny mail nebo telefon?
	if ((emailInput.value == '@' || emailInput.value == '')) {
		writeMessage(__('SUP_T_FORM_MODAL_VALIDACE_EMAIL'));
		error = true;
		backGroundColor(emailInput, null);
	} else if ( emailValid == false) {
		// je email a neni input telefon
		writeMessage(__('SUP_T_FORM_MODAL_VALIDACE_EMAIL'));
		error = true;
		backGroundColor(emailInput, null);
	} else {		
		backGroundColor(emailInput, '-');
	}
	
	// phone
	if (telInput.value) {
		if (!/^\+?[0-9]{9,40}$/.test(telInput.value)) {
			writeMessage(__('SUP_T_FORM_MODAL_VALIDACE_PHONE'));
			error = true;
			backGroundColor(telInput, null);
		} else {
			backGroundColor(telInput, '-');
		}
	} else {
		backGroundColor(telInput, '-');
	}
	
	//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( __('SUP_T_FORM_MODAL_VALIDACE_USERTYPE') );
		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( __('SUP_T_FORM_MODAL_VALIDACE_IC') );
		} else {
			// not numbers
			writeMessage(__('SUP_T_FORM_MODAL_VALIDACE_IC'));
		}
		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( __('SUP_T_FORM_MODAL_VALIDACE_BIRTHDATE') );
		error	=true;
	}
	else
	{
		backGroundColor(personId, '-');
		backGroundColor(companyId, '-');
		backGroundColor(dateInput, '-');
		backGroundColor(icoInput, '-');
	}
	
	//captcha
	valideInput(captcha, __('SUP_T_FORM_MODAL_VALIDACE_CAPTCHA') );

	// add JS info in browser
	browser.value = 'JS On |' + FlashDetect.raw;
	
	if (error) 
	{
		if(modal == true)
		{
			return '<ul>' + msg + '</ul>';
		}
		
		alert(__('SUP_T_FORM_MODAL_VALIDACE_') + '\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');
		}
	}

}

/*
function userOrCompany(self) {
	var companyArea = document.getElementById('isFirma');
	if (self.id == 'client') { // company
		companyArea.style.display = 'block';
	} else { // user
		companyArea.style.display = 'none';
	}
}
*/

/**
 * 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 validaSelect(id, wrongValue, message)
{
	if (id.value == wrongValue) {
		backGroundColor(id, null);		
		writeMessage(message);
		error	=true;		
	} else {
		backGroundColor(id, '-');
	}
}

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;
	}
}

function counter(obj, max) {
	if (obj.value.length > max) {
		obj.value = obj.value.substr(0, max);
	} else {
		document.getElementById('counter').innerHTML = max - obj.value.length;
	}
}


window.onload = function()
{
	// default js for reload form
	if (document.getElementById('client').checked) {
	  document.getElementById('isFirma').style.display = 'block';
	}
	counter(document.getElementById('text'), 2500);
};
