var state="unknown";

function mailme(thename, thedomain, thesubject)
 {
    thedomain = typeof(thedomain) != 'undefined' ? thedomain: 'gynzy.com';
    thesubject = typeof(thesubject) != 'undefined' ? '?Subject=' + escape(thesubject) : '';
    myname = thename + '&#64' + thedomain;
    document.write('<a class="hover_link" href="ma' + 'ilto:' + myname + thesubject + '">' + myname + '</a>');
}

// fetched from http://www.gynzy.com/brin/remote-js.php
function getBRIN(ref)
{
    try { targetitem = ref; } catch (e) {};
    try { 
        width = 500; 
        height = 440; 
        leftPosition = (screen.width) ? (screen.width-width)/2 : 0;
        if (screen.height && (screen.height <= 600)) { topPosition = 0; } else { topPosition = (screen.height) ? (screen.height-height)/2 : 0; }
        var settings='width='+width+',height='+height+',left='+leftPosition+',top='+topPosition+'toolbar=0,location=0,directories=0,menubar=0,scrollbar=0,resizable=0,status=0';
        dataitem=window.open("http://www.gynzy.com/corp/brin/", 'dataitem', settings);
        if (popup != null) popup.focus();        
    } catch (e) {};
    try { dataitem.targetitem = targetitem;  } catch (e) {};
}

function getFlashVersion() {
    try {
        try {
            // avoid fp6 minor version lookup issues
            // see: http://blog.deconcept.com/2006/01/11/getvariable-setvariable-crash-internet-explorer-flash-6/
            var axo = new ActiveXObject('ShockwaveFlash.ShockwaveFlash.6');
            try {
                axo.AllowScriptAccess = 'always';
            }
            catch(e) {
                return '6,0,0';
            }
        } catch(e) {}
        return new ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version');
        // other browsers
    } catch(e) {
        try {
            if (navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin) {
                return (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]).description;
            }
        } catch(e) {}
    }
    return '0,0,0';
}

function checkAirInstallDiv() {
  if ($('#AirInstall') != undefined && $('#AirInstall').length > 0) {
    return true
  }
  return false
}

// Air:
//   unavailable
//   available
//   installed
// Desktop:
//   desktop_installed
//   desktop_not_installed
// Desktop running:
//   connected
//   disconnected
function setAirState(i_state) {
  state = i_state[0];
  switch (state) {
    case 'desktop_installed': 
      $("#desktop").load(_prefix+'desktop/start');
      break;
    case 'connected': 
      $("#popup_container").load(_prefix+'desktop/running');
      break;
    case 'desktop_not_installed': 
      $("#desktop").load(_prefix+'desktop/download');
      break;
  }
}

function valButton(btn) {
    var cnt = -1;
    for (var i = btn.length - 1; i > -1; i--) {
        if (btn[i].checked) {
            cnt = i;
            i = -1;
        }
    }
    if (cnt > -1) return btn[cnt].value;
    else return null;
}

function survey_checkValues(thisform)
 {
    var question0 = valButton(thisform.question0);
    var question1 = valButton(thisform.question1);
    var question2 = valButton(thisform.question2);
    if ((question0 == null) || (question1 == null) || (question2 == null)) alert('Kies aub voor elke vraag een antwoord.');
    else {
      $('#theform').submit(); return false
    }
}

function show_message(txt) {
  $('#message_bar').html(txt);
  $('#message_bar').css('visibility', 'visible');
  $("#message_bar").animate({
    height: '100'
  }, { "duration": "600", "easing": "easeInOutElastic" });
}

function hide_message() {
  if ($('#message_bar') == undefined) return;
  $("#message_bar").animate({
    height:0
  }, { "duration": "600", "easing": "easeInOutElastic" });
  $('#message_bar').html('');
}

function hide_message_fast() {
  if ($('#message_bar') == undefined) return;
  $('#message_bar').css('height', '0');
  $('#message_bar').css('visibility', 'hidden');
  $('#message_bar').html('');
}


var SELECTOR = "#container";

var _isKeyboardReady = false;
var _keyboard = undefined;
var _keyboardTarget = undefined;
var _keyboardTargetText = undefined;
var _keyboardTargetSelStart = undefined;
var _keyboardTargetSelEnd = undefined;
var _kbCallBusy=false;


function onKeyboardReady() {
    // called from flash
    _keyboard = $('#keyboardApp')[0];
    _isKeyboardReady = true;
    hideKeyboard();
    return true;
}

function hideKeyboard() {
    if (_isKeyboardReady) {
        $(_keyboardTarget)
        .unbind('paste',     updateKeyboardEventHandler)
        .unbind('cut',       updateKeyboardEventHandler)
        .unbind('keyup',     updateKeyboardEventHandler)
        .unbind('keydown',   updateKeyboardEventHandler)
        .unbind('keypress',  updateKeyboardEventHandler)
        .unbind('mousemove', updateKeyboardEventHandler)
        .unbind('focus',     updateKeyboardEventHandler)
        ;
        $(_keyboardTarget).focus();
        _keyboardTarget = undefined;
        _keyboardTargetText = undefined;
        _keyboardTargetSelStart = undefined;
        _keyboardTargetSelEnd = undefined;
//        $(".keyboard_container").css('visibility', 'hidden');
        $(".keyboard_container").css('width', '0px');
        $(".keyboard_container").css('height', '0px');
        $(".keyboard_container").css('z-index', '-1');
    }
}

function showKeyboard() {
    $(".keyboard_container").css('visibility', 'visible');
    $(".keyboard_container").css('margin', '0 auto 0 auto');
    $(".keyboard_container").css('bottom', '0px');
    $(".keyboard_container").css('width', '598px');
    $(".keyboard_container").css('left', 43+($(SELECTOR).width()-$(".keyboard_container").width())/2 + 'px');
    $(".keyboard_container").css('height', '187px');
    $(".keyboard_container").css('z-index', '1000');
}

function selectNextField() {
    setTimeout(function() {
    attachKeyboard($('#' + $(_keyboardTarget).attr('data-field-next'))[0]);
    }, 0)
    return true;
}

function submitText() {
    $($(_keyboardTarget)[0].form).submit();
    return true;
}

function setTextAndSelection(txt, start, end) {
   setTimeout(function() {
    setTextAndSelection2(txt, start, end);
    }, 0)
}
function setTextAndSelection2(txt, start, end) {
    _kbCallBusy = true;
    _keyboardTargetText = txt;
    _keyboardTargetSelStart = parseInt(start);
    _keyboardTargetSelEnd = parseInt(end);
    $(_keyboardTarget).val(txt.toString());
    $(_keyboardTarget).caret({'start':parseInt(start),'end':parseInt(end)});
    _kbCallBusy = false;
    $(_keyboardTarget).focus();
    return true;
}

function setText(txt) {
    //if (_keyboardTarget==undefined) return;
    // if (console) console.log(txt);
    // if (console) console.log($(_keyboardTarget).caret());
    $(_keyboardTarget).val(txt.toString());
    // if (console) console.log($(_keyboardTarget).caret());
    return true;
}
function setSelection(start, end) {
    _keyboardTargetSelStart = parseInt(start);
    _keyboardTargetSelEnd = parseInt(end);
   $(_keyboardTarget).caret({'start':parseInt(start),'end':parseInt(end)});
    return true;
}

function updateKeyboardEventHandler(e) {
    updateKeyboard(this);
}
function updateKeyboard(target) {
    if (_kbCallBusy) return false;
    var crt = $(target).caret();
    if ($(target).val()!=_keyboardTargetText || crt.start!=_keyboardTargetSelStart || crt.end!=_keyboardTargetSelEnd) {
        _keyboardTargetText = $(target).val();
        _keyboardTargetSelStart = crt.start;
        _keyboardTargetSelEnd = crt.end;
        _kbCallBusy = true;
        _keyboard.kb_setTextAndSelection($(target).val(), crt.start, crt.end);        
        _kbCallBusy = false;
    }
    return true;
}

function attachKeyboard(target) {
    if (_isKeyboardReady) {
        $(_keyboardTarget)
        .unbind('paste',     updateKeyboardEventHandler)
        .unbind('cut',       updateKeyboardEventHandler)
        .unbind('keyup',     updateKeyboardEventHandler)
        .unbind('keydown',   updateKeyboardEventHandler)
        .unbind('keypress',  updateKeyboardEventHandler)
        .unbind('mousemove', updateKeyboardEventHandler)
        .unbind('focus',     updateKeyboardEventHandler)
        ;
        _keyboardTarget = target;
        var crt = $(target).caret();
        if (crt.start>=crt.end) {
            var l = $(_keyboardTarget).val().length;
            $(_keyboardTarget).caret({'start':l,'end':l});
        }
        $(_keyboardTarget).focus();
        updateKeyboardMode();
        updateKeyboard(_keyboardTarget);
        $(_keyboardTarget)
        .bind('paste',     updateKeyboardEventHandler)
        .bind('cut',       updateKeyboardEventHandler)
        .bind('keyup',     updateKeyboardEventHandler)
        .bind('keydown',   updateKeyboardEventHandler)
        .bind('keypress',  updateKeyboardEventHandler)
        .bind('mousemove', updateKeyboardEventHandler)
        .bind('focus',     updateKeyboardEventHandler)
        ;
    };
}

function attachKeyboardButtons() {
    hideKeyboard();
    $(".show_keyboard").click(function(event) 
        {
            var t = $('#' + $(this).attr('data-field'))[0];
            if ($(".keyboard_container").css('z-index') != -1) {                            
                if (t===_keyboardTarget) {
                    hideKeyboard();
                    return false;
                }
            }            
            showKeyboard();
            attachKeyboard(t);
            $(_keyboard).focus();
            updateKeyboardMode();
            event.stopImmediatePropagation();
            return false;
        }
    );
    $("input:text,input:password").focus(function(event) 
        {
            if ($(".keyboard_container").css('z-index') != -1) {
                if (this!==_keyboardTarget) {
                    attachKeyboard(this);
                }
            }
        }
    );
}

function updateKeyboardMode() {
    var pwd = false;
    if ($(_keyboardTarget).attr('type') != undefined && $(_keyboardTarget).attr('type').toLowerCase() ==='password')    {
        pwd = true;
    }
    if ($(_keyboardTarget).attr('data-field-next') != undefined) {
        _keyboard.kb_show("NEXT", pwd);
    } else {
        _keyboard.kb_show("ENTER", pwd);
    }
}


/*
jCaret plugin from: http://examplet.buss.hk/jquery/caret.php
*/
 (function($, len, createRange, duplicate) {
    $.fn.caret = function(options, opt2) {
        var start,
        end,
        t = this[0],
        browser = $.browser.msie;
        if (typeof(options) === "object" && typeof(options.start) === "number" && typeof(options.end) === "number") {
            start = options.start;
            end = options.end;
        } else if (typeof(options) === "number" && typeof(opt2) === "number") {
            start = options;
            end = opt2;
        } else if (typeof(options) === "string") {
            if ((start = t.value.indexOf(options)) > -1) {end = start + options[len];}
            else {start = null;}
        } else if (Object.prototype.toString.call(options) === "[object RegExp]") {
            var re = options.exec(t.value);
            if (re !== null) {
                start = re.index;
                end = start + re[0][len];
            }
        }
        if (typeof start != "undefined") {
            if (browser) {
                var selRange = this[0].createTextRange();
                selRange.collapse(true);
                selRange.moveStart('character', start);
                selRange.moveEnd('character', end - start);
                selRange.select();
            } else {
                this[0].selectionStart = start;
                this[0].selectionEnd = end;
            }
            //this[0].focus();
            return this;
        } else {
            // Modification as suggested by ?????? ?????
            var s,e;
            if (browser) {
                if (this[0].tagName.toLowerCase() != "textarea") {
                    var val = this.val(),
                    selection = document.selection,
                    range = selection[createRange]()[duplicate]();
                    range.moveEnd("character", val[len]);
                    s = (range.text === "" ? val[len] : val.lastIndexOf(range.text));
                    range = selection[createRange]()[duplicate]();
                    range.moveStart("character", -val[len]);
                    e = range.text[len];
                } else {
                    range = selection[createRange](),
                    stored_range = range[duplicate]();
                    stored_range.moveToElementText(this[0]);
                    stored_range.setEndPsoint('EndToEnd', range);
                    s = stored_range.text[len] - range.text[len],
                    e = s + range.text[len]
                }
                // End of Modification
            } else {
                s = t.selectionStart,
                e = t.selectionEnd;
            }
            var te = t.value.substring(s, e);
            return {
                start: s,
                end: e,
                text: te,
                replace: function(st) {
                    return t.value.substring(0, s) + st + t.value.substring(e, t.value[len])
                }
            }
        }
    }
})(jQuery, "length", "createRange", "duplicate");

$(document).ready(function() {
    if ($('#message_bar_content') != undefined && $('#message_bar_content').text() != '') {
      $("#message_bar_content").css('display','none');
      show_message($('#message_bar_content').html());
    }
    if ($('#change_main_class') != undefined && $('#change_main_class').text() != '') {
      $("#change_main_class").css('display','none');
      $('.main').addClass($('#message_bar_content').html());
    }
    if (window.PIE) {
      $('.btn').each(function() {
        PIE.attach(this);
      });
    }
});
