var agt   = navigator.userAgent.toLowerCase();
var mac   = agt.indexOf("mac") != -1;
var macIe = mac && document.all;

if (!document.getElementById && document.all)
document.getElementById = function(id)
{
	return document.all[id];
}

function initRatings(formName)
{
	if (!document.getElementById) return;
	if (document.styleSheets) 
	{
		if (document.styleSheets[0].disabled) return;
	}
	var i=0; 
	var forms = document.getElementsByName(formName);
	if (forms) { var form = forms[0]; } else { var form = null; }
	
	if (!form) return false;
	while (i >=0)
	{
		var sInputName = formName + '_rater_input' + i;
		var oInputs = document.getElementsByName(sInputName);
		if (oInputs[0])
		{
			if (oInputs[0].nodeName =='SELECT')	gatherSelectAttributes(oInputs[0], formName);
			else if (oInputs[0].nodeName =='INPUT' && oInputs[0].type == 'radio') gatherRadioAttributes(oInputs, formName);
			i++;
		}
		else i = -1;
	}
}

function gatherRadioAttributes(pRadios, pForm)
{
	var curSelectedIndex = -1;
	var nRadioLength = pRadios.length;
	var oRadioContainer = pRadios[0].parentNode.parentNode;
	
	var oLegend = oRadioContainer.getElementsByTagName('LEGEND');
	if (oLegend[0]) { var defaultText = oLegend[0].innerHTML; } else { var defaultText = ''; }
	var oRadioValuesLabels = new Array();
	var inputName = pRadios[0].name;
	var className = pRadios[0].className;	
	for (var i = 0 ; i < nRadioLength ; i++)
	{
		var oCurRadio = pRadios[i];
		var radioValueLength =oRadioValuesLabels.length;
		oRadioValuesLabels[radioValueLength] = new Array();
		var curRadioValues =oRadioValuesLabels[radioValueLength] 
		if (oCurRadio.value) { curRadioValues['value'] = oCurRadio.value; } else { curRadioValues['value'] = i; }		
		if (!macIe)	{ 
			if (oCurRadio.nextSibling.data) {
				curRadioValues['label'] = oCurRadio.nextSibling.data;
			} else {
				curRadioValues['label'] = gDEFAULT_TEXT;
			}
		} else if (oCurRadio.parentNode.innerText) {
				curRadioValues['label'] = oCurRadio.parentNode.innerText;
			} else {
				curRadioValues['label'] = gDEFAULT_TEXT;
			}
		
		if (oCurRadio.checked) curSelectedIndex = i;
	}
	var appendTo = oRadioContainer.parentNode;
	appendTo.removeChild(oRadioContainer);
	createRater(inputName,appendTo, oRadioValuesLabels, curSelectedIndex, className, defaultText , pForm);	
}


function gatherSelectAttributes(pInput , pForm)
{	
	var oInputOptions = pInput.getElementsByTagName('OPTION');
	var curSelectedIndex = -1;
	var defaultText = '';
	var nInputOptionLength = oInputOptions.length;
	var oOptionValuesLabels = new Array();
	var inputName = pInput.name;
	var className = pInput.className;
	for (var i = 0 ; i < nInputOptionLength ; i++)
	{

		var oCurOption = oInputOptions[i];
		if (oCurOption.value != -1)
		{
			var optionValueLength =oOptionValuesLabels.length;
			oOptionValuesLabels[optionValueLength] = new Array();
			var curOptionValues =oOptionValuesLabels[optionValueLength] 
			if (oCurOption.value) { curOptionValues['value'] = oCurOption.value; } else { curOptionValues['value'] = i; }
			if (oCurOption.innerHTML) { curOptionValues['label'] = oCurOption.innerHTML; } else { curOptionValues['label'] = ""; }
			if (oCurOption.selected) curSelectedIndex = i-1;
		}
		else if (oCurOption.innerHTML) {
				defaultText = oCurOption.innerHTML;
			} else {
				defaultText = gDEFAULT_TEXT;
			}
	}
	var appendTo = pInput.parentNode;
	appendTo.removeChild(pInput);
	createRater(inputName,appendTo, oOptionValuesLabels, curSelectedIndex, className, defaultText , pForm);
}

function createRater(pName, pAppendTo, pOptionValuesLabels, pCurSelectedIndex, pClassName, pDefaultText , pForm)
{
	
	var oContainer = document.createElement('DIV');
	oContainer.className = pClassName;
	oContainer.id = pName+'_container';
	oContainer.labelsValues = pOptionValuesLabels;
	oContainer.selectedIndex = pCurSelectedIndex;
	oContainer.formId = pForm;
	var nElemsToAdd = pOptionValuesLabels.length;
	/*var textP = document.createElement('P');
	textP.id = pName+ '_text';
	
	if ( pCurSelectedIndex >=0 ) { textP.innerHTML = gYOUR_RATING; } else { textP.innerHTML = pDefaultText; }
	
	oContainer.textElemId = textP.id;
	oContainer.appendChild(textP);
	oContainer.defaultText = pDefaultText;*/
	var oElements = new Array();
	
	for ( var i = 0; i < nElemsToAdd; i++ )
	{
		var oElem = document.createElement('A');
		oElem.href="#";
		
		oElem.onmouseover = raterMouseOver;
		oElem.onfocus = raterMouseOver;
		oElem.onmouseout = raterMouseOut;
		oElem.onblur = raterMouseOut;		
		oElem.onclick = raterClick;
		oElem.containerId = oContainer.id;		
		oElem.index = i;
		var className = ''
		if (pCurSelectedIndex != -1 && i <= pCurSelectedIndex)
		{
			className = 'selected';
				
		}
		if (className != '') { var separator = ' '; } else { var separator = ''; }
		if (i%2) { var classNamePrefix = 'odd'+separator; } else { var classNamePrefix = 'even'+separator; }

		oElem.className = classNamePrefix + className;
		oContainer.appendChild(oElem);
		oElements[oElements.length] = oElem;
	}
	
		
	//hiddenField.value = pCurSelectedIndex;
	
	//oContainer.hiddenFieldId = hiddenField.id ;
	oContainer.ratingElements = oElements;
	//oContainer.appendChild(hiddenField);

	var clearDiv = document.createElement('DIV');
	clearDiv.className = 'clr';

	oContainer.appendChild(clearDiv);
	pAppendTo.appendChild(oContainer);
	
}

function raterMouseOver()
{
	var container = document.getElementById(this.containerId);
	var elements = container.getElementsByTagName('A');
	var numElements = elements.length;
	for (var i = 0; i < numElements; i++)
	{
		var curElem = elements[i];
		var selectedIndex  =  container.selectedIndex;
		var className = '';
		if ( selectedIndex > -1)
		{
			if (i <= selectedIndex && i <= this.index ) className = 'selectedover';
			else if (i <= selectedIndex &&  i > this.index) className = 'selectedless';
			else if (i > selectedIndex && i <= this.index) className = 'over';
			else if ( i > selectedIndex && i > this.index ) className = '';
		}
		else 
		{
			if (i <= this.index) className ='over'
		}
		if (className != '') { var separator = ' '; } else { var separator = ''; }
		if (i%2) { var classNamePrefix = 'odd'+separator; } else { var classNamePrefix = 'even'+separator; }
		curElem.className = classNamePrefix + className;
	}
	var textElem = document.getElementById(container.textElemId);
	//textElem.innerHTML = container.labelsValues[this.index]['label'];
}

function raterMouseOut()
{
	var container = document.getElementById(this.containerId);
	var elements = container.getElementsByTagName('A');
	var numElements = elements.length;
	for (var i = 0; i < numElements; i++)
	{
		var curElem = elements[i];
		var selectedIndex  =  container.selectedIndex;
		if (selectedIndex != -1 && selectedIndex >= i) { var className = 'selected'; } else { var className = ''; }
		if (className != '') { var separator = ' '; } else { var separator = ''; }
		if (i%2) { var classNamePrefix = 'odd'+separator; } else { var classNamePrefix = 'even'+separator; }
		curElem.className = classNamePrefix + className;
	}
	var textElem = document.getElementById(container.textElemId);
	//if (container.selectedIndex > -1) { textElem.innerHTML = gYOUR_RATING; } else { textElem.innerHTML = container.defaultText; }
}

function raterClick()
{
	var container = document.getElementById(this.containerId);
	var elements = container.getElementsByTagName('A');
	var numElements = elements.length;
	for (var i = 0; i < numElements; i++)
	{
		var curElem = elements[i];
		if (i <= this.index) { var className = 'selectedover'; } else { var className = ''; }
		if (className != '') { var separator = ' '; } else { var separator = ''; }
		if (i%2) { var classNamePrefix = 'odd'+separator; } else { var classNamePrefix = 'even'+separator; }
		curElem.className = classNamePrefix + className;
		container.selectedIndex =this.index;		
	}
	var textElem = document.getElementById(container.textElemId);
	
	//if (container.selectedIndex != -1) { textElem.innerHTML = gYOUR_RATING; } else { textElem.innerHTML = container.defaultText; }		
	var hiddenField = document.getElementById('rate');
	var hiddenFieldCat = document.getElementById('cat');
	hiddenField.value = container.labelsValues[container.selectedIndex]['value'];
	
	var thisform = document.getElementById(container.formId);
	//thisform.submit();
	if (kuki != null)
                set_cookie(cookie_name, kuki+'id='+id+";");
	else
                set_cookie(cookie_name, 'id='+id+";");
                
	ajax_put_vote(hiddenFieldCat.value, id, hiddenField.value);
        document.getElementById('vote').style.display = 'none';
	document.getElementById('mouseOutId').style.display = 'none';
	document.getElementById('vote_container').style.display = 'none';
 	document.getElementById('vote_container_tnx').style.display = 'block';
	allow_out = 0;
	return false;
}

function contains (container, containee) {
  while (containee) {
    if (container == containee) {
      return true;
    }
    containee = containee.parentNode;
  }
  return false;
}

function showRatingResult(event)
{
	target = (event.fromElement) ? event.fromElement : event.target; 
	relatedTarget = (event.toElement) ? event.toElement : event.relatedTarget; 
	
	if (allow_out)
	{
		if (!contains(target, relatedTarget) && !contains(document.getElementById('mouseOutId'), (relatedTarget)))
		{
			document.getElementById('vote').style.display = 'none';
			document.getElementById('vote_container').style.display='block';
		}
	}
}

function get_cookie(cookie_name) {

    var dc = document.cookie;
    var prefix = cookie_name + "=";
    var begin = dc.indexOf("; " + prefix);

    if (begin == -1) {
        begin = dc.indexOf(prefix);
        if (begin != 0) return null;
    } else
        begin += 2;

    var end = document.cookie.indexOf(";", begin);

    if (end == -1)
        end = dc.length;

    return unescape(dc.substring(begin + prefix.length, end));
}

function set_cookie(cookie_name, cookie_val) {
    var expdate = new Date();
    expdate.setTime(expdate.getTime()+31536000000);
    document.cookie=cookie_name+"="+escape(cookie_val)+"; expires="+expdate.toGMTString()+"; path=/;";
}

function getRPCObject() {
        var req;
        if (window.XMLHttpRequest)
                req = new XMLHttpRequest();
        else if (window.ActiveXObject)
                req = new ActiveXObject("Microsoft.XMLHTTP");
        return req;
}

function loadXMLDoc( method, url, data, procRequestFunct ) {

        req = getRPCObject();

        if(!req)
                return false;

        req.onreadystatechange = procRequestFunct;
        req.open(method, url, true);

        if (data != null) {
                req.setRequestHeader( 'Content-Type', 'application/x-www-form-urlencoded; charset=utf-8' );
                req.send( data );
        } else {
                req.send('');
        }

        return req;
}

function ajax_put_vote(cat, id, vote) {
	var url = '/links/ajax_vote.inc.php?cat=' + cat + '&id=' + id + '&rate=' + vote;
        var func = function() {}
        var req = loadXMLDoc( 'POST', url, null, func );
}