/**
 * Utility javascript functions for gefeliciTAART.
 *
 * Copyright (C) 2010 codefish.nl - All rights reserved
 */

/***** Common functions *****/

function openDiv(id)
{
    obj_div = document.getElementById(id);

    if (obj_div.style.display == 'none')
    {
        obj_div.style.display = 'block';
    }
    else
    {
        obj_div.style.display = 'none';
    }
}

function showDiv(id) {
	div = document.getElementById(id);
	div.style.display = 'block';
}

function hideDiv(id) {
	div = document.getElementById(id);
	div.style.display = 'none';
}

function disableButton(id, msg) {
	btn = document.getElementById(id);
        btn.disabled = true;
        btn.value = msg;
}

/***** Login functions *****/

// Check login form when it is submitted
function checkLoginForm(form) {
    if( form.customer_code.value == 'Uw klantcode' || form.customer_code.value == '' ) {
        alert('Vul uw klantode in');
        return false;
         } else {
                return true;
        }
}

/***** Product detail page functions *****/

function checkForm(form) {

    form.amount.required = true;
    form.amount.requiredError = 'Geef het aantal taarten op dat u wilt bestellen.';
    form.amount.pattern = 'numeric';
    form.amount.patternError = 'Het aantal taarten mag alleen numeriek zijn.';

    if( form.text.checked ) {
        form.myText.required = true;
        form.myText.requiredError = 'Veld \'Tekst op taart\' is niet ingevuld';
    }
    form.cakeCart.maxlength = 100;
    form.cakeCart.maxlengthError = 'De tekst op het kaartje is te lang. De tekst is nu ' + form.cakeCart.value.length + ' karakters, ' +
                                   'maar mag maximaal ' + form.cakeCart.maxlength + ' karakters lang zijn.';

    var errors = getFormErrors(form);

    /* custom errors */
    if( form.image.checked ) {

        // there should be an image
        if( form.myImage.value == '' && !form.useExistingImage.checked ) {
            errors[errors.length] = 'Er is geen plaatje aangegeven welke op de taart moet komen.';
        } else if( form.myImage.value != '' && form.useExistingImage.checked ) {
            errors[errors.length] = 'Selecteer 1 optie voor het plaatje';
        }
            
    }
    if ( form.amount.value != '' && form.amount.value == 0 ) {
        errors[errors.length] = 'Veld aantal is ongeldig.';
    }

    /* show errors */
    if (errors.length > 0) {
        var errorMessage = 'Het formulier is niet verstuurd door onderstaande fout' + ((errors.length > 1) ? 'en' : '') + ':\n\n';
        for (var errorIndex = 0; errorIndex < errors.length; errorIndex++) {
            errorMessage += '* ' + errors[errorIndex] + '\n';
        }
        errorMessage += '\nPas de gegevens op het formulier aan en verstuur het opnieuw.';
        alert(errorMessage);
        return false;
    }

    // no errors: return true
    return true;
}

function limitText(limitField, limitNum) {
    if (limitField.value.length > limitNum) {
        limitField.value = limitField.value.substring(0, limitNum);
    }
}

/**
 * Build quote from the form data.
 */
function requestQuote(form, productName) {
    quote  = "Product: " + productName;
    if ( form.type.selectedIndex != null ) {
        quote += " (" + form.type.options[ form.type.selectedIndex ].text + ")";
    }    
    quote += "\nAantal: " + form.amount.value;
    quote += "\nPlaatje: " + (form.image.checked ? "Ja" : "Nee" );
    if ( form.text.checked ) {
        quote += "\nTekstje: " + form.myText.value;
    }
    quote += "\nKaartje: " + form.cakeCart.value;
    window.location = "/offerte.html?freetext=" + escape(quote);
    return true;
}

/***** Calendar functions *****/

// source: http://developer.apple.com/internet/javascript/nn6dhtml.html
var isNS4 = (document.layers) ? true : false;
var isIE4 = (document.all && !document.getElementById) ? true : false;
var isIE5 = (document.all && document.getElementById) ? true : false;
var isNS6 = (!document.all && document.getElementById) ? true : false;


function openCalendar(datefield) {
    var size = isNS6 ? 350 : 250;
    var f = getFieldByName(document,datefield);
    // alert(f.name + ': '+ f.value);
    win = openCenteredWindow('./kalender.html?date=' + f.value + '&field=' + datefield,'Kalender',size,size,'false','false','resizable=0,scrollbars=0,menu=0,status=0,fullscreen=0','main');
    win.focus();
}

function returnDate(datefield,y,m,d) {
    if (window.opener) {
        var f = getFieldByName(window.opener.document,datefield);
        f.value = d + "-" + m + "-" + y;
        f.focus();
        //window.opener.document.frmMain.elements[datefield].value = d + "-" + m + "-" + y;
        //window.opener.document.frmMain.elements[datefield].focus();
        updateWeekday(d+'-'+m+'-'+y);
        self.close();
    }
}

function getWeekday(dmy) {
    var days = new Array("zo","ma","di","wo","do","vr","za");
    var a = dmy.split("-");
    var d = new Date(a[2],a[1]-1,a[0]);
    var weekday = days[d.getDay()];
    // alert(weekday+'['+w+'] : '+dmy+' : '+a[2]+'-'+a[1]+'-'+a[0]);
    return weekday;
}

function updateWeekday(dmy) {

    if (isNS4) {
        return;
    }

    var is_ie = navigator.appName != "Netscape" ? 1 : 0;
    var win = window.opener ? window.opener : window;

    var weekday = getWeekday(dmy);
    if (is_ie) {
        win.document.all.weekdag.innerHTML = weekday;
    } else {
        var elm = win.document.getElementById("weekdag");
        elm.innerHTML = weekday;
//        win.document.weekdag.write(weekday);
//        win.document.weekdag.close();
    }

}

/*
 * get form index where fieldname is defined
 */

function getFieldByName(doc,fieldname) {

    for (var i=0; i<doc.forms.length; i++) {
        for (var j=0; j<doc.forms[i].length; j++) {
            // alert (doc.forms[i].elements[j].name);
            if (doc.forms[i].elements[j].name == fieldname) {
                // alert("veld '"+fieldname+"' gevonden");
                return doc.forms[i].elements[j];
            }
        }
    }
    return NULL;
}

/***** Menu functions *****/

function showItem(divId) {
	layerStates[divId] = "over"
	document.getElementById(divId).className = "over";
	var img = document.images["i"+divId.substr(1)]
	if (img && img.src.indexOf("_hi.") < 0) {	
		img.src = img.src.replace(/\.gif$/, "_hi.gif")
	}
	if (!layerTimeout) {
		layerTimeout = checkLayerStatus()
	}
}

function hideItem(divId) {
	layerStates[divId] = "out"
}

startList = function() {
	if (document.getElementById) {
		navRoot = document.getElementById("nav");
		for (var i = 0; navRoot != null && i < navRoot.childNodes.length; i++) {
			node = navRoot.childNodes[i];
			if (node.nodeName=="LI") {
				node.onmouseover = function() {
					showItem(this.id)
					if (navigator.userAgent.indexOf("MSIE") >= 0) {
						hideSelects()
					}
				}
				node.onmouseout = function() {
					hideItem(this.id)
					if (navigator.userAgent.indexOf("MSIE") >= 0) {
						showSelects()
					}
				}

				for (var j=0; j<node.childNodes.length; j++) {
					if (node.childNodes[j].nodeName == "UL") {
						for (var k=0; k<node.childNodes[j].childNodes.length; k++) {
							if (node.childNodes[j].childNodes[k].nodeName == "LI") {
								node.childNodes[j].childNodes[k].onmouseover = function() {
									this.className = "over"
								}
								node.childNodes[j].childNodes[k].onmouseout = function() {
									this.className = ""
								}
							}
						}
					}
				}
			}
		}
	}
}
window.onload=startList;

var layerStates = []
var layerTimeout = null

function checkLayerStatus() {
	var checkNeeded = false
	for (var divId in layerStates) {
		if (layerStates[divId] == "out" && document.getElementById(divId)) {
			listItem = document.getElementById(divId)
			listItem.className = "";
			layerTimeout = null
			var img = document.images["i"+divId.substr(1)]
			if (img && img.src.indexOf("_hi.") >= 0) {	
				img.src = img.src.replace(/_hi\.gif/, ".gif")
			}
		} else {
			checkNeeded = true
		}
	}
	if (checkNeeded) {
		return setTimeout("checkLayerStatus()", 100)
	} else {
		return null
	}
}

function hideSelects() {
	var selects = document.getElementsByTagName("select");
	for (var i=0; i<selects.length; i++) {
		selects[i].style.visibility = 'hidden'
	}
}

function showSelects() {
	var selects = document.getElementsByTagName("select");
	for (var i=0; i<selects.length; i++) {
		selects[i].style.visibility = 'visible'
	}
}


function imgreplace(img, path) {
	if (img) {
		img.src = path
	}
}
