/*#############################################################
Name: Niceforms
Version: 2.0
Author: Lucian Slatineanu
URL: http://www.emblematiq.com/projects/niceforms/
Feel free to use and modify but please keep this copyright intact.
#################################################################*/
//Theme Variables - edit these to match your theme
var imagesPath = "/images/site/";
var selectRightWidthSimple = 19;
var selectRightWidthScroll = 2;
var selectMaxHeight = 200;
var textareaTopPadding = 10;
var textareaSidePadding = 10;
var nonload = 0;
//Global Variables
var NF = new Array();
var isIE = false;
var resizeTest = 1;
//Initialization function
function NFInit() {
    try {
        document.execCommand('BackgroundImageCache', false, true);
    } catch(e) {}
    if(!document.getElementById) {return false;}
   // alert("click me first");
    NFDo('start');
}
function NFDo(what) {
    var niceforms = document.getElementsByTagName('form');
    var identifier = new RegExp('(^| )'+'niceform'+'( |$)');
    if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) {
        var ieversion=new Number(RegExp.$1);
        if(ieversion < 7) {return false;} //exit script if IE6
        isIE = true;
    }
    for(var q = 0; q < niceforms.length; q++) {if(identifier.test(niceforms[q].className)) {
        if(what == "start") { //Load Niceforms
            NF[q] = new niceform(niceforms[q]);
            niceforms[q].start();
        }
        else { //Unload Niceforms
            niceforms[q].unload();
            NF[q] = "";
        }
    }}
}

function NFFix() {
    NFDo('stop');
    NFDo('start');
}

function niceform(nf) {
    nf._inputText = new Array(); nf._inputRadio = new Array(); nf._inputCheck = new Array(); nf._inputSubmit = new Array(); nf._inputFile = new Array(); nf._textarea = new Array(); nf._select = new Array(); nf._multiselect = new Array();
    nf.add_select = function(obj) {this._select[this._select.length] = obj; selects(obj);}
    nf.start = function() {
        //Separate and assign elements
        var allInputs = this.getElementsByTagName('input');
        var allSelects = this.getElementsByTagName('select');
        for(var w = 0; w < allSelects.length; w++) {
            if(allSelects[w].size == "1") {this.add_select(allSelects[w]);}
            else {this.add_multiselect(allSelects[w]);}
        }
        //Start
          for(w = 0; w < this._select.length; w++) {this._select[w].init(w);}
        for(w = 0; w < this._multiselect.length; w++) {this._multiselect[w].init(w);}
    }
    nf.unload = function() {
        //Stop
        for(w = 0; w < this._select.length; w++) {this._select[w].unload();}
        for(w = 0; w < this._multiselect.length; w++) {this._multiselect[w].unload();}
    }
}
function inputText(el) { //extent Text inputs
    }
function inputRadio(el) { //extent Radio buttons
   
}
function inputCheck(el) { //extend Checkboxes
 
}
function inputSubmit(el) { //extend Buttons
   
}
function inputFile(el) { //extend File inputs
  
}
function textarea(el) { //extend Textareas
  
}
function selects(el) { //extend Selects
    el.oldClassName = el.className;
    el.dummy = document.createElement('div');
    el.dummy.className = "NFSelect";
    el.dummy.style.width = el.offsetWidth + 'px';
    el.dummy.ref = el;
    el.left = document.createElement('img');
    el.left.src = imagesPath + "0.png";
    el.left.className = "NFSelectLeft";
    el.right = document.createElement('div');
    el.right.className = "NFSelectRight";
    el.txt = document.createTextNode(el.options[0].text);
    el.bg = document.createElement('div');
    el.bg.className = "NFSelectTarget";
    el.bg.style.display = "none";
    el.opt = document.createElement('ul');
    el.opt.className = "NFSelectOptions";
    el.dummy.style.left = findPosX(el) + 'px';
    el.dummy.style.top = findPosY(el) + 'px';
    el.opts = new Array(el.options.length);
    el.init = function(pos) {
        this.dummy.appendChild(this.left);
        this.right.appendChild(this.txt);
        this.dummy.appendChild(this.right);
        this.bg.appendChild(this.opt);
        this.dummy.appendChild(this.bg);
        for(var q = 0; q < this.options.length; q++) {
            this.opts[q] = new option(this.options[q], q);
            this.opt.appendChild(this.options[q].li);
            this.options[q].lnk.onclick = function() {
                this._onclick();
                this.ref.dummy.getElementsByTagName('div')[0].innerHTML = this.ref.options[this.pos].text;
                this.ref.options[this.pos].selected = "selected";
                for(var w = 0; w < this.ref.options.length; w++) {this.ref.options[w].lnk.className = "";}
                this.ref.options[this.pos].lnk.className = "NFOptionActive";
            }
        }
        if(this.options.selectedIndex) {
            this.dummy.getElementsByTagName('div')[0].innerHTML = this.options[this.options.selectedIndex].text;
            this.options[this.options.selectedIndex].lnk.className = "NFOptionActive";
        }
        this.dummy.style.zIndex = 999 - pos;
        this.parentNode.insertBefore(this.dummy, this);
        this.className = "NFhidden";
    }
    el.unload = function() {
        this.parentNode.removeChild(this.dummy);
        this.className = this.oldClassName;
    }
    el.dummy.onclick = function() {
        var allDivs = document.getElementsByTagName('div'); for(var q = 0; q < allDivs.length; q++) {if((allDivs[q].className == "NFSelectTarget") && (allDivs[q] != this.ref.bg)) {allDivs[q].style.display = "none";}}
        if(this.ref.bg.style.display == "none") {this.ref.bg.style.display = "block";}
        else {this.ref.bg.style.display = "none";}
        if(this.ref.opt.offsetHeight > selectMaxHeight) {
            this.ref.bg.style.width = this.ref.offsetWidth - selectRightWidthScroll + 33 + 'px';
            this.ref.opt.style.width = this.ref.offsetWidth - selectRightWidthScroll + 'px';
        }
        else {
            this.ref.bg.style.width = this.ref.offsetWidth - selectRightWidthSimple + 33 + 'px';
            this.ref.opt.style.width = this.ref.offsetWidth - selectRightWidthSimple + 'px';
        }
    }
    el.bg.onmouseout = function(e) {
        if (!e) var e = window.event;
        e.cancelBubble = true;
        if (e.stopPropagation) e.stopPropagation();
        var reltg = (e.relatedTarget) ? e.relatedTarget : e.toElement;
        if((reltg.nodeName == 'A') || (reltg.nodeName == 'LI') || (reltg.nodeName == 'UL')) return;
        if((reltg.nodeName == 'DIV') || (reltg.className == 'NFSelectTarget')) return;
        else{this.style.display = "none";}
    }
    el.dummy.onmouseout = function(e) {
        if (!e) var e = window.event;
        e.cancelBubble = true;
        if (e.stopPropagation) e.stopPropagation();
        var reltg = (e.relatedTarget) ? e.relatedTarget : e.toElement;
        if((reltg.nodeName == 'A') || (reltg.nodeName == 'LI') || (reltg.nodeName == 'UL')) return;
        if((reltg.nodeName == 'DIV') || (reltg.className == 'NFSelectTarget')) return;
        else{this.ref.bg.style.display = "none";}
    }
    el.onfocus = function() {this.dummy.className += " NFfocused";}
    el.onblur = function() {this.dummy.className = this.dummy.className.replace(/ NFfocused/g, "");}
    el.onkeydown = function(e) {
        if (!e) var e = window.event;
        var thecode = e.keyCode;
        var active = this.selectedIndex;
        switch(thecode){
            case 40: //down
                if(active < this.options.length - 1) {
                    for(var w = 0; w < this.options.length; w++) {this.options[w].lnk.className = "";}
                    var newOne = active + 1;
                    this.options[newOne].selected = "selected";
                    this.options[newOne].lnk.className = "NFOptionActive";
                    this.dummy.getElementsByTagName('div')[0].innerHTML = this.options[newOne].text;
                }
                return false;
                break;
            case 38: //up
                if(active > 0) {
                    for(var w = 0; w < this.options.length; w++) {this.options[w].lnk.className = "";}
                    var newOne = active - 1;
                    this.options[newOne].selected = "selected";
                    this.options[newOne].lnk.className = "NFOptionActive";
                    this.dummy.getElementsByTagName('div')[0].innerHTML = this.options[newOne].text;
                }
                return false;
                break;
            default:
                break;
        }
    }
}

function option(el, no) { //extend Options
    el.li = document.createElement('li');
    el.lnk = document.createElement('a');
    el.lnk.href = "javascript:;";
    el.lnk.ref = el.parentNode;
    el.lnk.pos = no;
    el.lnk._onclick = el.onclick || function () {};
    el.txt = document.createTextNode(el.text);
    el.lnk.appendChild(el.txt);
    el.li.appendChild(el.lnk);
}
//Get Position
function findPosY(obj) {
    var posTop = 0;
    do {if(obj.style.position == "relative") { return posTop; } posTop += obj.offsetTop;} while (obj = obj.offsetParent);
    return posTop;
}
function findPosX(obj) {
    var posLeft = 0;
    do {if(obj.style.position == "relative") { return posLeft; } posLeft += obj.offsetLeft;} while (obj = obj.offsetParent);
    return posLeft;
}
//Get Siblings
function getInputsByName(name) {
    var inputs = document.getElementsByTagName("input");
    var w = 0; var results = new Array();
    for(var q = 0; q < inputs.length; q++) {if(inputs[q].name == name) {results[w] = inputs[q]; ++w;}}
    return results;
}

