


/* Modified to support Opera */
function bookmarksite(title,url){
	if (window.sidebar) // firefox
	window.sidebar.addPanel(title, url, "");
	else if(window.opera && window.print){ // opera
		var elem = document.createElement('a');
		elem.setAttribute('href',url);
		elem.setAttribute('title',title);
		elem.setAttribute('rel','sidebar');
		elem.click();
	}
	else if(document.all)// ie
	window.external.AddFavorite(url, title);
}


function getCategories() {

	var category_txt;


	var category1_name=$("category1").options[$("category1").selectedIndex].text;
	category_txt=category1_name;

	var category2_name=$("category2").options[$("category2").selectedIndex].text;
	category_txt=category_txt+" > "+category2_name;


	var category3_name=$("category3").options[$("category3").selectedIndex].text;
	var category_txt=category_txt+" > "+category3_name;

	$("category_name").value=category_txt;
	
	$('category').value=$('category3').value;
	
	
}

function getItem_ExtraFields(category) {
    new Ajax.Request('/member/item/create/extraFields/?category='+category, {
                       method: 'get',
                       onSuccess:function(transport){
	                       	var doc = transport.responseText;
	                       	$('item_ExtraFields').innerHTML='';
	                       	$('item_ExtraFields').insert(doc);
                       } 
                       });  
}

function getCarModels(reference) {
    new Ajax.Request('/member/item/create/carModels/?reference='+reference, {
                       method: 'get',
                       onSuccess:function(transport){
	                       	var json = transport.responseText.evalJSON();
							displayModels(json);
                       } 
                       });  
}

function AddSelectOption(selectObj, text, value, isSelected)  {
    if (selectObj != null && selectObj.options != null) {
        selectObj.options[selectObj.options.length] = 
            new Option(text, value, false, isSelected);
    }
}

function displayModels(json) {
	
	if($('model')) { 
		$('model').innerHTML='';
	}
	
    json.each(function(elem){
		AddSelectOption($('model'), elem.nom, elem.identifiant, true);
    });

}


function CountLeft(field, count, max) {
	// if the length of the string in the input field is greater than the max value, trim it
	if (field.value.length > max)
	field.value = field.value.substring(0, max);
	else
	// calculate the remaining characters
	count.value = max - field.value.length;
}



//Remove Parent Element
function remove() {
	$$(".remove").each( function(el) {

		Event.observe(el, "click", function() {
			Effect.Fade(el.parentNode.id,{afterFinish:function(){$(el.parentNode.id).remove();return false;}});
		});

	});

}

//Display or Hide List elements
function showList(list_id) {

	Event.observe(list_id+'_more', "click", function() {
		$$('#'+list_id+' li').each( function(el) {
			el.show();
		});
		$(list_id+'_more').hide();
	});

}




function activeMultiSelect(formName) {

	var form1=document.forms[formName];
	Element.extend(form1);
	var checkboxes=form1.getInputs('checkbox');
	checkboxes.each(function(el) {
		Event.observe(el, "click", function() {
			colorCheckBox(el);
		});

	});



	Event.observe($('selectall'), "click", function() {
		toggleCheckboxes(form1);
	});



}


function checkCheckBoxNumber(formName,min,max,message) {

	var form=document.forms[formName];
	var checkbox_number=countCheckBox(form)

	if ((checkbox_number<min)||(checkbox_number>max)) {alert(sprintf(message,min,max));return false}
	else form.submit();

}



function colorCheckBox(el) {
	var td=el.parentNode;
	var tr=td.parentNode;
	Element.extend(tr);
	if (el.checked) tr.addClassName("selected");
	else  tr.removeClassName("selected");

}



//Select All
function toggleCheckboxes(form) {

	if (this.checked) var condition=false;
	else var condition=true;
	Element.extend(form)
	var buttons =form.getInputs('checkbox')
	// -> only radio buttons of name "education"

	buttons.each(function(el) {
		el.checked=condition;
		colorCheckBox(el);
	});

	this.checked=condition;


}


function submitForm(selector,warning) {
	var form=selector.form;
	var action=selector.options[selector.selectedIndex].value;

	if (action==0) return false;

	form.action=action;
	form.method='post';

	var launch
	var buttons =form.getInputs('checkbox')
	buttons.each(function(el) {
		if (el.checked==true) launch=true;
	});

	if (launch==true) form.submit();
	else {alert(warning);selector.options[0].selected=true;return false};

}


//Count Active Checkboxes
function countCheckBox(form) {


	var buttons =form.getInputs('checkbox')
	var checkbox_number=0;

	buttons.each(function(el) {
		if (el.checked==true)  checkbox_number++;
	});

	return checkbox_number;

}



//Toggle Checkbox
// show div when type_2 is checked else hide div

function toggle(radio_1,radio_2,div) {

	if ($(radio_2).checked==true) $(div).show();

	Event.observe($(radio_2), "click", function() {
		$(div).show();
	});
	Event.observe($(radio_1), "click", function() {
		$(div).hide();
	});
}

function magnify() {

	$$(".magnify").each( function(el) {
		var title=el.select('img')[0].title;

		Event.observe(el, "mouseover", function() {
			el.select('img')[0].title = "";
			return overlib('<img src="'+el.id+'" />',OFFSETY,20,CAPTION,title,CENTER,FGCOLOR, '#ffffcc', BGCOLOR, '#333333', BORDER, 4);

		})

		Event.observe(el, "mouseout", function() {
			el.select('img')[0].title = title;
			return nd();
		})

	});

	$$(".inform","a.action").each( function(el) {
		var title=el.title;
		el.title = "";
		Event.observe(el, "mouseover", function() {
			return overlib(title,CAPTION,el.innerHTML, FGCOLOR, '#ffffcc', BGCOLOR, '#333333', BORDER, 1,DELAY, 500);
		})

		Event.observe(el, "mouseout", function() {
			return nd();
		})

	});


}


function changeSrc(el) {


	var link =el.href;
	var src=el.firstChild.src;

	el.href=src;
	el.firstChild.src=link;



}



// This code is in the public domain. Feel free to link back to http://jan.moesen.nu/
function sprintf()
{
	if (!arguments || arguments.length < 1 || !RegExp)
	{
		return;
	}
	var str = arguments[0];
	var re = /([^%]*)%('.|0|\x20)?(-)?(\d+)?(\.\d+)?(%|b|c|d|u|f|o|s|x|X)(.*)/;
			var a = b = [], numSubstitutions = 0, numMatches = 0;
			while (a = re.exec(str))
			{
				var leftpart = a[1], pPad = a[2], pJustify = a[3], pMinLength = a[4];
				var pPrecision = a[5], pType = a[6], rightPart = a[7];
				
				//alert(a + '\n' + [a[0], leftpart, pPad, pJustify, pMinLength, pPrecision);

	numMatches++;
	if (pType == '%')
	{
		subst = '%';
	}
	else
	{
		numSubstitutions++;
		if (numSubstitutions >= arguments.length)
		{
			alert('Error! Not enough function arguments (' + (arguments.length - 1) + ', excluding the string)\nfor the number of substitution parameters in string (' + numSubstitutions + ' so far).');
		}
		var param = arguments[numSubstitutions];
		var pad = '';
		if (pPad && pPad.substr(0,1) == "'") pad = leftpart.substr(1,1);
		else if (pPad) pad = pPad;
		var justifyRight = true;
		if (pJustify && pJustify === "-") justifyRight = false;
		var minLength = -1;
		if (pMinLength) minLength = parseInt(pMinLength);
		var precision = -1;
		if (pPrecision && pType == 'f') precision = parseInt(pPrecision.substring(1));
		var subst = param;
		if (pType == 'b') subst = parseInt(param).toString(2);
		else if (pType == 'c') subst = String.fromCharCode(parseInt(param));
		else if (pType == 'd') subst = parseInt(param) ? parseInt(param) : 0;
		else if (pType == 'u') subst = Math.abs(param);
		else if (pType == 'f') subst = (precision > -1) ? Math.round(parseFloat(param) * Math.pow(10, precision)) / Math.pow(10, precision): parseFloat(param);
		else if (pType == 'o') subst = parseInt(param).toString(8);
		else if (pType == 's') subst = param;
		else if (pType == 'x') subst = ('' + parseInt(param).toString(16)).toLowerCase();
		else if (pType == 'X') subst = ('' + parseInt(param).toString(16)).toUpperCase();
	}
	str = leftpart + subst + rightPart;
}
return str;
}


function Set_Cookie( name, value, expires, path, domain, secure ) {
	// set time, it's in milliseconds
	var today = new Date();
	today.setTime( today.getTime() );

	/*
	if the expires variable is set, make the correct
	expires time, the current script below will set
	it for x number of days, to make it for hours,
	delete * 24, for minutes, delete * 60 * 24
	*/
	if ( expires )
	{
		expires = expires * 1000 * 60 * 60 * 24;
	}
	var expires_date = new Date( today.getTime() + (expires) );

	document.cookie = name + "=" +escape( value ) +
	( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) +
	( ( path ) ? ";path=" + path : "" ) +
	( ( domain ) ? ";domain=" + domain : "" ) +
	( ( secure ) ? ";secure" : "" );
}


function	findParamInClass(param, el) {
	var regexp = new RegExp(param + '_([A-Za-z0-9/:?&\-\._]+)');
	var mymatch = regexp.exec(el.className);

	if (mymatch) {
		return (mymatch[1]);
	}
	return (false);
}

function	findParamInId(param, el) {
	var regexp = new RegExp(param + '_([A-Za-z0-9/:?&\-\._]+)');
	var mymatch = regexp.exec(el.id);

	if (mymatch) {
		return (mymatch[1]);
	}
	return (false);
}

function loadFooter(pageId){
    new Ajax.Request('/footer_ext.php?pageId='+pageId, {
                       method: 'get',
                       onSuccess:function(transport){var doc = transport.responseText; $('flinks').insert(doc);} 
                       });                    
}

function iso4217ToSymbol(currency) {
	currency_array=new Array(4);
	currency_array['EUR']='&euro;';
	currency_array['USD']='&#36;';
	currency_array['GBP']='&pound;';
	currency_array['GPB']='&pound;';
	return currency_array[currency];
}

function number_format( number, decimals, dec_point, thousands_sep ) {
    // Formats a number with grouped thousands
    //
    // version: 906.1806
    // discuss at: http://phpjs.org/functions/number_format
    // +   original by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +     bugfix by: Michael White (http://getsprink.com)
    // +     bugfix by: Benjamin Lupton
    // +     bugfix by: Allan Jensen (http://www.winternet.no)
    // +    revised by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
    // +     bugfix by: Howard Yeend
    // +    revised by: Luke Smith (http://lucassmith.name)
    // +     bugfix by: Diogo Resende
    // +     bugfix by: Rival
    // +     input by: Kheang Hok Chin (http://www.distantia.ca/)
    // +     improved by: davook
    // +     improved by: Brett Zamir (http://brett-zamir.me)
    // +     input by: Jay Klehr
    // +     improved by: Brett Zamir (http://brett-zamir.me)
    // +     input by: Amir Habibi (http://www.residence-mixte.com/)
    // +     bugfix by: Brett Zamir (http://brett-zamir.me)
    // *     example 1: number_format(1234.56);
    // *     returns 1: '1,235'
    // *     example 2: number_format(1234.56, 2, ',', ' ');
    // *     returns 2: '1 234,56'
    // *     example 3: number_format(1234.5678, 2, '.', '');
    // *     returns 3: '1234.57'
    // *     example 4: number_format(67, 2, ',', '.');
    // *     returns 4: '67,00'
    // *     example 5: number_format(1000);
    // *     returns 5: '1,000'
    // *     example 6: number_format(67.311, 2);
    // *     returns 6: '67.31'
    // *     example 7: number_format(1000.55, 1);
    // *     returns 7: '1,000.6'
    // *     example 8: number_format(67000, 5, ',', '.');
    // *     returns 8: '67.000,00000'
    // *     example 9: number_format(0.9, 0);
    // *     returns 9: '1'
    // *     example 10: number_format('1.20', 2);
    // *     returns 10: '1.20'
    // *     example 11: number_format('1.20', 4);
    // *     returns 11: '1.2000'
    // *     example 12: number_format('1.2000', 3);
    // *     returns 12: '1.200'
    var n = number, prec = decimals;
 
    var toFixedFix = function (n,prec) {
        var k = Math.pow(10,prec);
        return (Math.round(n*k)/k).toString();
    };
 
    n = !isFinite(+n) ? 0 : +n;
    prec = !isFinite(+prec) ? 0 : Math.abs(prec);
    var sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep;
    var dec = (typeof dec_point === 'undefined') ? '.' : dec_point;
 
    var s = (prec > 0) ? toFixedFix(n, prec) : toFixedFix(Math.round(n), prec); //fix for IE parseFloat(0.55).toFixed(0) = 0;
 
    var abs = toFixedFix(Math.abs(n), prec);
    var _, i;
 
    if (abs >= 1000) {
        _ = abs.split(/\D/);
        i = _[0].length % 3 || 3;
 
        _[0] = s.slice(0,i + (n < 0)) +
              _[0].slice(i).replace(/(\d{3})/g, sep+'$1');
        s = _.join(dec);
    } else {
        s = s.replace('.', dec);
    }
 
    var decPos = s.indexOf(dec);
    if (prec >= 1 && decPos !== -1 && (s.length-decPos-1) < prec) {
        s += new Array(prec-(s.length-decPos-1)).join(0)+'0';
    }
    else if (prec >= 1 && decPos === -1) {
        s += dec+new Array(prec).join(0)+'0';
    }
    return s;
}


function openPopup(page_url, pop_name) {
	
	var windowWidth = 480;
	var windowHeight = 240;
	var myleft = (screen.width)?(screen.width-windowWidth)/2:100;
	var mytop = (screen.height)?(screen.height-windowHeight)/2:100;
    var myparameters = 'scrollbars=no, resizable=no, toolbar=no,menubar=no, status=no, directories=no, addressbar=no, location=no, statusbar=no, left='+ myleft +', top='+ mytop + ', height='+ windowHeight +', width='+ windowWidth;
    var mypop = window.open(page_url, '', myparameters);
    mypop.focus(); 

}

function fbs_click(u) {
	
	t=document.title;
	window.open('http://www.facebook.com/sharer.php?u='+encodeURIComponent(u)+'&t='+encodeURIComponent(t),'sharer','toolbar=0,status=0,width=626,height=436');
	return false;
	
}

function formToParams(parent,params_name)
{
			var element=$(parent);
      var l_params = '&';
			element.descendants().each(function(el) {
					 l_params+=params_name+'[]='+ el.value+'&';
			});

		 return l_params;
}
