var W3CDOM = (document.createElement && document.getElementsByTagName);

function initFileUploads(value) {
    if (!W3CDOM) return;
    var fakeFileUpload = document.createElement('div');
    fakeFileUpload.className = 'fakefile';
    var fakeInput = document.createElement('input');
    fakeInput.name = 'step_data[logo]'
    fakeInput.type = 'text';
    fakeInput.value = value;
    fakeFileUpload.appendChild(fakeInput);
    var image = document.createElement('img');
    image.src='/image/button_browse.gif';
    fakeFileUpload.appendChild(image);
    var x = document.getElementsByTagName('input');
    for (var i=0;i<x.length;i++) {
        if (x[i].type != 'file') continue;
        if (x[i].parentNode.className != 'fileinputs') continue;
        x[i].className = 'file hidden';
        var clone = fakeFileUpload.cloneNode(true);
        x[i].parentNode.appendChild(clone);
        x[i].relatedElement = clone.getElementsByTagName('input')[0];
        x[i].onchange = function () {
            this.relatedElement.value = this.value;
            uploadImage();
        }
    }
}

function swapCase( str ){
    str = str.toLowerCase();
    str1 = str.slice(0, 1);
    str2 = str.slice(1);
    str1 = str1.toUpperCase();
    return str1 + str2;
}

//menu functions
function mouseOutCheck(e, obj){
    var tg = $(obj);
    var reltg = (e.relatedTarget) ? e.relatedTarget : e.toElement;
    while (reltg.id != obj && reltg.nodeName != 'BODY') {
        reltg = reltg.parentNode;
    }
    if (reltg.id == obj) {
        return false;
    }
    return true;
}

var submenu = new Array();

function showSubmenu(obj, action){
    if (action == 1) {
        if ($(obj).style.display == 'none'){
            var downEffect = new Effect.BlindDown(obj, {duration:0.3, afterFinish: function(obj){submenu.push(obj.element.id);}, queue: {position: 'end', scope: 'submenu', limit:2}});
        }
    } else if (action == 0){
        for (var i = 0; i < submenu.length; i++){
            $(submenu[i]).style.display = 'none';  
        }
    }
}

//autocomplete input fields
function fillautocomplete1(req){
    var data = eval("(" + req.responseText + ")");
    if ( data = data['results'][0] ){
        //set data
        $('kvkplaats').value = data['ChamberNo'];
        $('bedrijfsnaam').value = data['TradenameFull'];
        $('rechtsvorm').value = data['LegalformcodeText'];
        $('land').value = "Nederland";
        $('postcode').value = data['EstablishmentPostcode'];
        $('huisnummer').value = data['EstablishmentHouseNo'];
        $('straatnaam').value = data['EstablishmentStreetname'];
        $('plaats').value = swapCase(data['EstablishmentPostcodeCity'].slice(9));
        $('telefoon').value = data['TelephoneNo'];
    }
    $('ajax_loader_1').style.visibility = 'hidden';
}

function autocomplete1(from){
    if ($F(from) != ""){
        var url = window.location;
        var params = 'action=webservices&methode=businessGetDossier&kvk=' + $F(from);
        $('ajax_loader_1').style.visibility = 'visible';
        new Ajax.Request(url, {asynchronous:true, onSuccess:fillautocomplete1, method:'post', postBody:params});
    }
}

function fillautocomplete2(req){
    var data = eval("(" + req.responseText + ")");
    console.log(data);
    if ( data['cebucocode'] ){
        //set data
        $('land').value = "Nederland";
        $('straatnaam').value = data['straatnaam'];
        $('plaats').value = swapCase(data['plaatsnaam']);
    }
    $('ajax_loader_2').style.visibility = 'hidden';
}

function autocomplete2(){
    if ($F('postcode') != '' && $F('huisnummer') != ''){
        var url = window.location;
        var params = 'action=webservices&methode=addressReeksPostcodeSearch&postcode=' + $F('postcode') + $F('huisnummer'); 
        $('ajax_loader_2').style.visibility = 'visible';
        new Ajax.Request(url, {asynchronous:true, onSuccess:fillautocomplete2, method:'post', postBody:params});
    }
}

function clearField(obj, value){
    if(typeof(value) != 'undefined'){
        obj.default_value = value; 
    }
    if (obj.value == ''){
        obj.value = obj.default_value;
    } else if(obj.value == obj.default_value) {
        obj.value = '';
        window.value = value;
        obj.onblur = function(event){clearField(Event.element(event));}.bindAsEventListener();
    }
}

//show correct fields for mark type (logo/wordmark)
function showMarkType(){
    if ($('mark_type_select').value == 'logo') {
        if (Prototype.Browser.WebKit) {
            $('woordmerk_holder').style.display = 'none';
            $('logo_holder').style.display = 'block';
        } else {
            new Effect.Fade('woordmerk_holder', {duration:1.0});
            setTimeout(
                function(){
                    new Effect.Appear('logo_holder', {duration:1.0});
                }, 1000
            );
        }
    } else {
        if (Prototype.Browser.WebKit) {
            $('logo_holder').style.display = 'none';
            $('woordmerk_holder').style.display = 'block';
        } else {
            new Effect.Fade('logo_holder', {duration:1.0});
            setTimeout(
                function(){
                    new Effect.Appear('woordmerk_holder', {duration:1.0});
                }, 1000
            );
        }
    }
}

//show ajax dialog
function dialog(html){
    html += "<br /><br /><a href=''><img src='/image/button_sluiten.gif' border='0' onclick='Dialog.closeInfo();return false;'/></a>";
    Dialog.info(html, { windowParameters:{ className: "alphacube", width:300 }});
}

//image upload and show functions
function showImage(){
    if ( $('logo') && $('logo').value != '' ){
        var html = logo_frame.document.body.innerHTML;
        if (html == '0'){
            dialog('Het door u aangegeven bestand is niet valide');
            $('fakefile').value = '';
        } else {
            dialog(html);
        }
    }
}

function uploadImage(){
    $('data').target = 'logo_frame';
    $('action').value = 'logo';
    $('data').submit();
    $('action').value = '';
    $('data').target = '';
}

//mark regsitration class functions
function resetSearchClasses(event){
    $('action').value = 'reset_search';
    $('data').submit();
    $('action').value = '';
}

function searchClasses(event){
    var frmvalidator  = new Validator("data");
    frmvalidator.addValidation("searchword", "req", "Zoek term");

    if (typeof event != 'undefined'){
        if (event.keyCode != 13){
            return false;
        }
    }
    $('action').value = 'search';
    if (document.data.onsubmit()) {
        document.data.submit();
    }
    $('action').value = '';
}

function checkClass(parent, obj){
    if ( obj.checked == true){
        $(parent).checked = true;
    } 
}

//set content div scroll to the top
function content_top(){
    $('content_scroller').scrollTop = 0;
}

//show factuur fields
function showFactuur(){
    if ($('show_factuur').checked){
        new Effect.Appear('factuur');
    } else {
        new Effect.Fade('factuur');
    }
}

//uncheck checkbox
function uncheck(obj1, obj2){
    if ($(obj1)) {
        $(obj1).checked = false;
    }
    if ($(obj2)) {
        $(obj2).checked = false;
    }
}

//run correct validation script
function validateForm(){
    var step = $('step_number').value;
    eval("validateStep" + step + "();");
}
