function addLoadEvent(func) {
var oldonload = window.onload;
if (typeof window.onload != 'function') {
window.onload = func;
} else {
window.onload = function() {
oldonload();
func();
}
}
}

/*#############################################################
Name: Niceforms
Version: 0.9
Author: Lucian Slatineanu

Feel free to use and modify but please provide credits.
#############################################################*/

//global variables that can be used by all the functions on this page.
var selects;
var inputs;
var hovers = new Array();
var buttons = new Array();
var selectText = "Выберите производителя";

//this function runs when the page is loaded so put all your other onload stuff in here too.
function init() {

//check if styles are enabled and only then start replacing elements
replaceSelects();
hoverEffects();
buttonHovers();
}

function replaceSelects() {
//get all the select fields on the page
selects = document.getElementsByTagName('select');

//cycle trough the select fields
for(var i=0; i < selects.length; i++) {

//create and build div structure
var selectArea = document.createElement('div');
var left = document.createElement('div');
var right = document.createElement('div');
var center = document.createElement('div');
var button = document.createElement('a');
var text = document.createTextNode(selectText);
center.id = "mySelectText"+i;
button.href="javascript:showOptions("+i+")";
selectArea.className = "selectArea";
left.className = "left";
right.className = "right";
center.className = "center";
right.appendChild(button);
center.appendChild(text);
selectArea.appendChild(left);
selectArea.appendChild(right);
selectArea.appendChild(center);

//hide the select field
selects[i].style.display='none'; 

//insert select div
selects[i].parentNode.insertBefore(selectArea, selects[i]);

//build & place options div
var optionsDiv = document.createElement('div');
optionsDiv.className = "optionsDivInvisible";
optionsDiv.id = "optionsDiv"+i;
optionsDiv.style.left = findPosX(selectArea) + 'px';
optionsDiv.style.top = findPosY(selectArea) + 19 + 'px';

//get select's options and add to options div
for(var j=0; j < selects[i].options.length; j++) {
var optionHolder = document.createElement('p');
var optionLink = document.createElement('a');
var optionTxt = document.createTextNode(selects[i].options[j].text);
optionLink.href = "javascript:showOptions("+i+"); selectMe('"+selects[i].id+"',"+j+","+i+");";
optionLink.appendChild(optionTxt);
optionHolder.appendChild(optionLink);
optionsDiv.appendChild(optionHolder);
}

//insert options div
document.getElementsByTagName("body")[0].appendChild(optionsDiv);
}
}

function showOptions(g) {
elem = document.getElementById("optionsDiv"+g);
if(elem.className=="optionsDivInvisible") {elem.className = "optionsDivVisible";}
else if(elem.className=="optionsDivVisible") {elem.className = "optionsDivInvisible";}
}

function selectMe(selectFieldId,linkNo,selectNo) {
//feed selected option to the actual select field
selectField = document.getElementById(selectFieldId);
for(var k = 0; k < selectField.options.length; k++) {
if(k==linkNo) {
selectField.options[k].selected = "selected";
}
else {
selectField.options[k].selected = "";
}
}
//show selected option
textVar = document.getElementById("mySelectText"+selectNo);
var newText = document.createTextNode(selectField.options[linkNo].text);
textVar.replaceChild(newText, textVar.childNodes[0]);
}

function findPosY(obj) {
var posTop = 0;
while (obj.offsetParent) {
posTop += obj.offsetTop;
obj = obj.offsetParent;
}
return posTop;
}
function findPosX(obj) {
var posLeft = 0;
while (obj.offsetParent) {
posLeft += obj.offsetLeft;
obj = obj.offsetParent;
}
return posLeft;
}

function hoverEffects() {
//get all elements (text inputs, passwords inputs, textareas)
var elements = document.getElementsByTagName('input');
var j = 0;
for (var i4 = 0; i4 < elements.length; i4++) {
if((elements[i4].type=='text')||(elements[i4].type=='password')) {
hovers[j] = elements[i4];
++j;
}
}
elements = document.getElementsByTagName('textarea');
for (var i4 = 0; i4 < elements.length; i4++) {
hovers[j] = elements[i4];
++j;
}

//add focus effects
for (var i4 = 0; i4 < hovers.length; i4++) {
if(hovers[i4].parentNode.className == "tbx-container") {
hovers[i4].onfocus = function() {this.parentNode.className += " focused";}
hovers[i4].onblur = function() {this.parentNode.className = this.parentNode.className.replace(/focused/g, "");}
}
else {
hovers[i4].onfocus = function() {this.className += " focused";}
hovers[i4].onblur = function() {this.className = this.className.replace(/focused/g, "");}
}
}
}

function buttonHovers() {
//get all buttons
var elements = document.getElementsByTagName('input');
var j = 0;
for (var i5 = 0; i5 < elements.length; i5++) {
if(elements[i5].type=='submit') {
buttons[j] = elements[i5];
++j;
}
}

//add hover effects
for (var i5 = 0; i5 < buttons.length; i5++) {
buttons[i5].onmouseover = function() {this.className += " hovered";}
buttons[i5].onmouseout = function() {this.className = this.className.replace(/hovered/g, "");}

buttons[i5].onfocus = function() {this.className += " btn-focused";}
buttons[i5].onblur = function() {this.className = this.className.replace(/btn-focused/g, "");}
}
}

addLoadEvent(init);

addLoadEvent(initCbxs);

var d = document;
var safari = (navigator.userAgent.toLowerCase().indexOf('safari') != -1) ? true : false;
var gebtn = function(parEl,child) { return parEl.getElementsByTagName(child); };
function initCbxs() {
if(!d.getElementById || !d.createTextNode) return;
var ls = gebtn(d,'label');
for (var i = 0; i < ls.length; i++) {
var l = ls[i];
if (l.className.indexOf('label_') == -1) continue;
var inp = gebtn(l,'input')[0];
if (l.className == 'label_check') {
l.className = (safari && inp.checked == true || inp.checked) ? 'label_check c_on' : 'label_check c_off';
l.onclick = check_it;
};
};
};
var check_it = function() {
var inp = gebtn(this,'input')[0];
if (this.className == 'label_check c_off' || (!safari && inp.checked)) {
this.className = 'label_check c_on';
if (safari) inp.checked = true;
} else {
this.className = 'label_check c_off';
if (safari) inp.checked = false;
};
};

/*Opera fixes*/
if(window.opera) {
  addLoadEvent(fixOpera);
}

function fixOpera() {
  addClass("tbx-search");
  addClass("tbx-price-from");
  addClass("tbx-price-to");
  addClass("tbx-keywords");
  addClass("tbx-subscr");
  addClass("comment-name");
  addClass("comment-email");
  addClass("comment-captcha");
  addClass("tbx-keywords");
}

function addClass(id) {
  var el = document.getElementById(id);
  if(el) {
    el.className += " opera";
  }
}
