/* 
	file: main.js
	author: Tomas Penc (tomas@tomaspenc.com)
	date: 2006/12/03
	
	Basic JavaScript functions.
*/

// set new value i.e. for textbox
function ClearBox(box, hodnota)
{
	box.value = hodnota;
}

// Check form data
function CheckCartForm(t)
{
	for(var i = 0; i < document.getElementById("delka").value; i++)
		if(!isNumeric(document.getElementById("ks"+i).value))
		{
			alert("Počet kusů musí být celé číslo.");
			return false;
		}	
	
	return true;
}

// check form data
function validate_form(formular)
{
	if(formular.email.value == "")
	{
		alert("Musíte zadat email!");
		formular.email.focus();
		return false;
	}
	else if (window.RegExp)
	{
		re = new RegExp("^[^@]+@[^.]+\..+$");
		if(!re.test(formular.email.value))
		{
			alert("Zadaný email není platný!");
			formular.email.focus();
			return false;
		}
	}
	else
	return true;
}

function CheckGuestBookForm(formular)
{
    if(formular.email.value == "")
	{
		alert("Empty email.");
		formular.email.focus();
		return false;
	}
	else if(formular.text.value == "")
	{
		alert("Empty text.");
		formular.email.focus();
		return false;
	}
	else if(formular.captcha.value == "")
	{
		alert("Empty captcha text.");
		formular.email.focus();
		return false;
	}
	else
	return true;
}

function getCheckedValue(radioObj) {
	if(!radioObj)
		return "";
	var radioLength = radioObj.length;
	if(radioLength == undefined)
		if(radioObj.checked)
			return radioObj.value;
		else
			return "";
	for(var i = 0; i < radioLength; i++) {
		if(radioObj[i].checked) {
			return radioObj[i].value;
		}
	}
	return "";
}

function CheckSearch(f)
{
    if(f['F[date_from]'].value != "" && !isDate(f['F[date_from]'].value)) {
        alert('Arrival date format is wrong!');
        f['F[date_from]'].focus();
        return false;
    }
    if(f['F[date_to]'].value != "" && !isDate(f['F[date_to]'].value)) {
        alert('Departure date format is wrong!');
        f['F[date_to]'].focus();
        return false;
    }
    if(f['F[price_limit]'].value != "" && !isInteger(f['F[price_limit]'].value)) {
        alert('Max price limit must be number!');
        f['F[price_limit]'].focus();
        return false;
    }
}

var dtCh= "/";
var minYear=1900;
var maxYear=2100;

function isInteger(s){
	var i;
    for (i = 0; i < s.length; i++){
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

function stripCharsInBag(s, bag){
	var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++){
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function daysInFebruary (year){
	// February has 29 days in any year evenly divisible by four,
    // EXCEPT for centurial years which are not also divisible by 400.
    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}

function DaysArray(n) {
	for (var i = 1; i <= n; i++) {
		this[i] = 31
		if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
		if (i==2) {this[i] = 29}
   }
   return this
}

function isDate(dtStr){
	var daysInMonth = DaysArray(12)
	var pos1=dtStr.indexOf(dtCh)
	var pos2=dtStr.indexOf(dtCh,pos1+1)
	var strDay=dtStr.substring(0,pos1)
	var strMonth=dtStr.substring(pos1+1,pos2)
	var strYear=dtStr.substring(pos2+1)
	strYr=strYear
	if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)
	if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)
	for (var i = 1; i <= 3; i++) {
		if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
	}
	month=parseInt(strMonth)
	day=parseInt(strDay)
	year=parseInt(strYr)
	if (pos1==-1 || pos2==-1){
		alert("The date format should be : mm/dd/yyyy")
		return false
	}
	if (strMonth.length<1 || month<1 || month>12){
		alert("Please enter a valid month")
		return false
	}
	if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
		alert("Please enter a valid day")
		return false
	}
	if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){
		alert("Please enter a valid 4 digit year between "+minYear+" and "+maxYear)
		return false
	}
	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
		alert("Please enter a valid date")
		return false
	}
return true
}


function CheckBookForm(f)
{
	var elements = f.getElementsByTagName("input");
	for(i = 0; i < elements.length; i++)
		if(elements[i].type == "text")
			elements[i].style.background = "#fff";
	
	var msg = "";
	if(f.adults.value == "" || !isInt(f.adults.value))
	{
		msg += " - number of adults is empty or not a number\n";
		f.adults.style.background = "red";
	}
	if(f.children.value == "" || !isInt(f.children.value))
	{
		msg += " - number of children is empty or not a number\n";
		f.children.style.background = "red";
	}
	if(f.name.value == "")
	{
		msg += " - name is empty\n";
		f.name.style.background = "red";
	}
	if(f.surname.value == "")
	{
		msg += " - surname is empty\n";
		f.surname.style.background = "red";
	}
	if(f.street.value == "")
	{
		msg += " - street is empty\n";
		f.street.style.background = "red";
	}
	if(f.city.value == "")
	{
		msg += " - city is empty\n";
		f.city.style.background = "red";
	}
	if(f.country.value == "")
	{
		msg += " - country is empty\n";
		f.country.style.background = "red";
	}
	if(f.email.value == "")
	{
		msg += " - email is empty\n";
		f.email.style.background = "red";
	}
	if (window.RegExp)
	{
		re = new RegExp("^[^@]+@[^.]+\..+$");
		if(!re.test(f.email.value))
		{
			msg += " - wrong email format\n";
			f.email.style.background = "red";
		}
	}
	if(f.phone.value == "")
	{
		msg += " - phone is empty\n";
		f.phone.style.background = "red";
	}
	if(f.captcha.value == "")
	{
		msg += " - empty captcha text\n";
		f.captcha.style.background = "red";
	}
	if(getCheckedValue(f.guarantee) == "XXcredit_card")
	{
		if(f.credit_card_number.value == "")
		{
			msg += " - empty credit card number\n";
			f.credit_card_number.style.background = "red";
		}
		if(f.credit_card_cvc.value == "")
		{
			msg += " - empty credit card cvc\n";
			f.credit_card_cvc.style.background = "red";
		}	
		if(f.credit_card_cvc.value.length != 3)
		{
			msg += " - credit card cvc must have 3 numbers\n";
			f.credit_card_cvc.style.background = "red";
		}
		if(f.credit_card_valid.value == "")
		{
			msg += " - empty credit card valid\n";
			f.credit_card_valid.style.background = "red";
		}	
		if (window.RegExp)
		{
			re = new RegExp("^[0-9][0-9]/[0-9][0-9]$");
			if(!re.test(f.credit_card_valid.value))
			{
				msg += " - wrong credit card valid format (mm/yy)\n";
				f.credit_card_valid.style.background = "red";
			}
		}
		if(f.agree.checked == false)
			msg += " - you have to agree with contract conditions"
	}
	
	if(msg == "")
		return true;
	else
	{
		alert("Check form errors:\n"+msg);
		return false;
	}
}

// hide/show object
function menu(id)
{
	el = document.getElementById(id);
	var display = el.style.display ? '' : 'none';
	el.style.display = display;
}

function CheckRegisterForm(formular)
{
	var msg = "Nevyplnili jste: \n";
	if (formular.jmeno.value == "")
	{
		msg += "- jméno\n";
	}
	if (formular.prijmeni.value == "")
	{
		msg += "- příjmení\n";
	}
	if (formular.ulice.value == "")
	{
		msg += "- ulici\n";
	}
	if (formular.mesto.value == "")
	{
		msg += "- město\n";
	}
	if (formular.psc.value == "")
	{
		msg += "- PSČ\n";
	}
	if (formular.email.value == "")
	{
		msg += "- email\n";
	}
	if (formular.username.value == "")
	{
		msg += "- uživatelské jméno\n";
	}
	if (formular.xpass.value == "")
	{
		msg += "- heslo\n";
	}
	if (formular.captcha.value == "")
	{
		msg += "- musíte správně opsat text na obrázku\n";
	}
	if (formular.xpass.value != formular.xpass2.value)
	{
		msg += "- zadaná hesla se neshodují\n";
	}
	if(formular.xpass.value.length < 6)
		msg += "- minimální délka hesla je 6 znaků\n";
	
	if(msg == "Nevyplnili jste: \n")
		return true;
	else
	{
		alert(msg);
		return false;
	}
}

function CheckDateForm(formular)
{
	var msg = "";
	if (document.getElementById("f[date_from]").value == "")
	{
		msg += "- date from\n";
	}
	if (document.getElementById("f[date_to]").value == "")
	{
		msg += "- date to\n";
	}
	
	if(msg == "")
		return true;
	else
	{
		alert("Error in form. Empty fields:\n" + msg);
		return false;
	}
}

function isInt(sText)
{
   var ValidChars = "0123456789";
   var IsNumber=true;
   var Char;

 
   for (i = 0; i < sText.length && IsNumber == true; i++) 
      { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
         {
         IsNumber = false;
         }
      }
   return IsNumber;
}

function isNumeric(sText)
{
   var ValidChars = "0123456789.";
   var IsNumber=true;
   var Char;

 
   for (i = 0; i < sText.length && IsNumber == true; i++) 
      { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
         {
         IsNumber = false;
         }
      }
   return IsNumber;
}