var pasakasOldOnload = window.onload;
var pasakasInstance = null;

window.onload = function()
{
    if (typeof pasakasOldOnload == 'function')
    {
         pasakasOldOnload();
    }

    window.pasakasInstance = new pasakas();
    pasakasInstance.init();
}

pasakas = function()
{
    this.search = null;
    this.searchInputs = {};
}
pasakas.contentLoaded = function()
{
    if (window.onContentLoad)
    {
        window.onContentLoad();
    }
}

pasakas.prototype.init = function()
{

    this.initSideFormLabels();

    this.initSearch();

    this.initFeedback();

    this.initAlphabet();
}

pasakas.prototype.initSideFormLabels = function()
{
    var formIds = ['taleSearchForm', 'searchForm'];

    var feedbackForm = this.getSideFeedbackForm();
    if (feedbackForm)
    {
        formIds[formIds.length] = feedbackForm.id;
    }

    for (var i=0; i<formIds.length; i++)
    {
        var form = document.getElementById(formIds[i]);
        if (!form)
        {
            continue;
        }
        this.initFormLabels(form);
    }

}

pasakas.prototype.getSideFeedbackForm = function()
{
    // get feedback form, if it exists and if it is located in side column
    var feedbackFormId = 'feedbackForm';
    var feedbackForm = document.getElementById(feedbackFormId);
    if (!feedbackForm)
    {
        return null;
    }
    var feedbackFormIsInMainContent = false;
    var content = document.getElementById('content');
    if (!content)
    {
        return null;
    }
    var formsInMainContent = content.getElementsByTagName('form');
    for (var i=0; i<formsInMainContent.length; i++)
    {
        if (feedbackFormIsInMainContent)
        {
            continue;
        }
        var testForm = formsInMainContent[i];
        if (testForm == feedbackForm)
        {
            feedbackFormIsInMainContent = true;
        }
    }
    if (feedbackFormIsInMainContent)
    {
        return null;
    }
    return feedbackForm;
}

pasakas.prototype.initFormLabels = function(form)
{
    var script = this;
    var labels = form.getElementsByTagName('label');
    form.labelInputs = {};
    for (var i=0; i < labels.length; i++)
    {
        var label = labels[i];

        var inputId = label.htmlFor;
        if ((!inputId) || (inputId == 'email'))
        {
            continue;
        }


        var input = document.getElementById(inputId);
        if (!input)
        {
            continue;
        }

        form.labelInputs[inputId] = input;

        input.labelText = this.trim(label.innerHTML);

        this.showLabelValue(input);


        input.value = input.labelText;

        input.onfocus = function()
        {
            script.clearLabelValue(this);
        }

        input.onblur = function()
        {
            script.showLabelValue(this);
        }
    }
}

pasakas.prototype.showLabelValue = function( input )
{
    if (!input.labelText)
    {
        return;
    }
    var text = this.getFieldValue( input );
    if (text.length < 1)
    {
        input.value = input.labelText;
    }
}
pasakas.prototype.clearLabelValue = function( input )
{
    if (!input.labelText)
    {
        return;
    }
    if (input.value == input.labelText)
    {
        input.value = '';
    }
}

pasakas.prototype.initSearch = function()
{
    var inputIds = ['q', 'title'];
    for (var i=0; i<inputIds.length; i++)
    {
        var el = document.getElementById(inputIds[i]);
        if (!el)
        {
            continue;
        }
        this.searchInputs[ inputIds[i] ] = el;
        // this.initSearchLabelBehaviour( el );
        this.setSearchFormSubmitHandler ( el );
    }


    this.initSearchFlashBehaviour();

}

pasakas.prototype.initFeedback = function()
{
    var form = this.getSideFeedbackForm();
    if (!form)
    {
        return;
    }
    var script = this;

    var button = document.getElementById('feedbackSubmit');
    if (!button)
    {
        return;
    }
    button.onclick = function()
    {
        script.clearLabelValues( form );
    }
}

pasakas.prototype.showLabelValues = function(form)
{
    if (!form.labelInputs)
    {
        return;
    }
    for (id in form.labelInputs)
    {
        this.showLabelValue( form.labelInputs[id] );
    }
}

pasakas.prototype.clearLabelValues = function(form)
{
    if (!form.labelInputs)
    {
        return;
    }
    for (id in form.labelInputs)
    {
        this.clearLabelValue( form.labelInputs[id] );
    }
}


pasakas.prototype.getFieldValue = function( input )
{
    var text = this.trim( input.value );
    return text;
}
pasakas.prototype.trim = function( str )
{
    return str.replace(/^\s+|\s+$/g, '') ;
}


pasakas.prototype.setSearchFormSubmitHandler = function (input)
{
    if ((!input) || (!input.form))
    {
        return;
    }

    var script = this;

    input.form.onsubmit = function()
    {
        var val = script.getFieldValue( input );
        if ((val.length < 2) || (val == input.labelText))
        {
            return false;
        }
        return true;
    }
}



pasakas.prototype.initSearchFlashBehaviour = function()
{
    var searchFlashes = { 'q' : 'searchFlash', 'title' : 'headerFlash' };
    // var inputs = this.searchInputs;
    for (inputId in this.searchInputs)
    {
        var input = this.searchInputs[inputId];
        var flashId = searchFlashes[inputId];
        if (!flashId)
        {
            continue;
        }

        input.flashId = flashId;
        input.flash = null;

        input.oldOnFocus = input.onfocus;
        input.onfocus = function()
        {
            if (this.oldOnFocus)
            {
                this.oldOnFocus();
            }

            if (!this.flash)
            {
                this.flash = document.getElementById(this.flashId);
            }

            if (this.flash)
            {
                this.flash.TGotoLabel("_level0/", 'hover');
            }
        }
    }


}


pasakas.prototype.initAlphabet = function()
{

    var alphabet = document.getElementById('alphabet');
    if (!alphabet)
    {
        return;
    }

    alphabet.flashId = 'alphabetFlash';

    var links = alphabet.getElementsByTagName('a');
    for (var i=0; i<links.length; i++)
    {
        var link = links[i];
        link.alphabet = alphabet;
        link.onmouseover = function()
        {

            if (!this.alphabet.flash)
            {
                this.alphabet.flash = document.getElementById(this.alphabet.flashId);
            }

            if (this.alphabet.flash)
            {
                this.alphabet.flash.TGotoLabel("_level0/", 'hover');
            }
        }
    }

}


var onReady = function(i) {
  var u = navigator.userAgent.toLowerCase();
  var ie = /*@cc_on!@*/false;
  if (/webkit/.test(u)) {
    // safari
    timeout = setTimeout(function(){
			if ( document.readyState == "loaded" ||
				document.readyState == "complete" ) {
				i();
			} else {
			  setTimeout(arguments.callee,10);
			}
		}, 10);
  } else if ((/mozilla/.test(u) && !/(compatible)/.test(u)) ||
             (/opera/.test(u))) {
    // opera/moz
    document.addEventListener("DOMContentLoaded",i,false);
  } else if (ie) {
    // IE
    (function (){
      var tempNode = document.createElement('document:ready');
      try {
        tempNode.doScroll('left');
        i();
        tempNode = null;
      } catch(e) {
        setTimeout(arguments.callee, 0);
      }
    })();
  } else {
    window.onload = i;
  }
};
onReady(pasakas.contentLoaded);
