var punkcOldOnload = window.onload;
var punkcInstance = null;

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

    window.punkcInstance = new punkc();
    punkcInstance.init();
}

punkc = function()
{
    this.search = null;
    this.searchInputs = {};
}
punkc.prototype.init = function()
{
    this.initSideFormLabels();
}

punkc.prototype.initSideFormLabels = function()
{
    var formIds = ['siteSearch'];

    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);
    }

}

punkc.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;
}

punkc.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;
        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);
        }
    }
}

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

punkc.prototype.clearLabelValue = function( input )
{
    if (!input.labelText)
    {
        return;
    }
	
    if (input.value == input.labelText)
    {
        input.value = '';
    }
}

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

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


punkc.prototype.getFieldValue = function( input )
{
    var text = this.trim( input.value );
    return text;
}

punkc.prototype.trim = function( str )
{
    return str.replace(/^\s+|\s+$/g, '') ;
}