var Ajax;
if (Ajax && (Ajax != null)) {
	Ajax.Responders.register({
	  onCreate: function() {
        if($('spinner') && Ajax.activeRequestCount>0)
          Effect.Appear('spinner',{duration:0.5,queue:'end'});
	  },
	  onComplete: function() {
        if($('spinner') && Ajax.activeRequestCount==0)
          Effect.Fade('spinner',{duration:0.5,queue:'end'});
	  }
	});
}

var slides;
var slides_index = 0;

function id(id){ return YAHOO.util.Dom.get(id)}

YAHOO.util.Event.addListener(window, 'load', function() {
	if(YAHOO.util.Selector){
		var confirms = YAHOO.util.Selector.filter(document.getElementsByTagName('a'), '[rel="data-confirm"]'); 
		for(var index=0; index < confirms.length ;index++){
			var element = confirms[index]
			                       
			YAHOO.util.Event.addListener(element, "click", function(e) {
				var confirm_message = element.get("title")
				if (confirm_message) {
					if(confirm(confirm_message)){
						location.href = element.get("href");
					}else{
						YAHOO.util.Event.stopPropagation(e);
					}
				}
			});
		}
	}
	
	addFadeToElementsWithClass("delete_anchor");
	addEditInPlace("edit_in_place");
	var login = id("login");
	if(login){
		login.focus()
	}
	
	if(YAHOO.util.Selector){
		var uploads = YAHOO.util.Selector.query('input.cpsfile');
		for(var i=0; uploads.length > i; i++){
			uploads[i].onchange = function () {
				id('fake'+this.id).value = this.value;
			}
		}
	}
	
	if(id("slides")){
		slides = YAHOO.util.Dom.getElementsByClassName('company_slider');
		if(slides.length>0){
			SlideShow();
			setInterval('SlideShow()', 3000);
		}
	}
	
	var flash_shadowbox = id("flash_shadowbox");
	if(flash_shadowbox){
		$.fn.colorbox({width:"700",inline:true, href:"#flash_shadowbox", open:true})
	}
	
	var regionContainter = id("regionContainter");
	if(regionContainter){
		function regions(e) {
			YAHOO.util.Connect.asyncRequest('POST', id('regionsUrl').value, {success: function(o){id('regionContainter').innerHTML = o.responseText;}}, 'country='+id('country').options[id('country').selectedIndex].value+'&selected='+id('selectedRegion').value);
		}
		YAHOO.util.Event.addListener("country", "change", regions)
		regions()
	}
});


function SlideShow() {
	var fade_index = slides_index
	slides_index++
    if (slides_index == slides.length){ 
    	slides_index = 0;
    	fade_index = slides.length - 1;
    }
	YAHOO.widget.Effects.Appear(slides[slides_index], { seconds: 1 });
	YAHOO.widget.Effects.Fade(slides[fade_index], { seconds: 1 })
}

function upload(){
	YAHOO.widget.Effects.JobsketAppear("uploading", { from: 0.0, to: 0.75 });
}

function getContextPath(){
	return id("contextPath").value;
}

function showQuotePrices(type,id){
	if ((type == 'day') || (type == 'week') || (type == 'month') || (type == 'year'))  {
		id("quoteprices").src= getContextPath()+"/graphs/quotePrices/"+id+"/"+type;
	} else {
		id("quoteprices").src= getContextPath()+"/graphs/quotePrices/"+id+"/all";
	}	
}

function showHistoricalQuotes(type,id){
	if ((type == 'day') || (type == 'week') || (type == 'month') || (type == 'year'))  {
		id("historicalquotes").src= getContextPath()+"/graphs/historicalQuotes/"+id+"/"+type;
	} else {
		id("historicalquotes").src= getContextPath()+"/graphs/historicalQuotes/"+id+"/all";
	}	
}

function cleanTabs(id){
    var el = YAHOO.util.Dom.get(id)
    var lis = YAHOO.util.Dom.get("categories").getElementsByClassName("act")
	lis[0].className=""
    el.className="act"
}

function changeDivState(identifier) {
	var alerta = id(identifier)
	var parent = alerta.parentNode
	parent.removeChild(alerta)
	if(parent.id == 'divSubscribed'){
		id('divUnsubscribed').innerHTML += '<p id="'+identifier+'">'+alerta.innerHTML+'</p>'
	}else{
		id('divSubscribed').innerHTML += '<p id="'+identifier+'">'+alerta.innerHTML+'</p>'
	}
}

function alerta(e) { 
	var roles = eval("(" + e.responseText + ")");
	if (roles) { 
		
	}
}

function updateSkills(e) { 

	var roles = eval("(" + e.responseText + ")");
	if (roles) { 
		var rselect = id('skill')
		var l = rselect.length;
		while (l > 0) { 
			l--; 
			rselect.remove(l); 
		}
		for (var i=0; i < roles.length; i++) { 
			var role = roles[i]; 
			var opt = document.createElement('option'); 
			opt.text = role.name; 
			opt.value = role.id; 
			try { 
				rselect.add(opt, null); 
			} catch(ex) { 
			   	rselect.add(opt); 
			} 
		} 
	} 

}

function updateRoles(e) { 
	var roles = eval("(" + e.responseText + ")");
	if (roles) { 
		var rselect = id('role')
		var l = rselect.length;
		while (l > 0) { 
			l--; 
			rselect.remove(l); 
		}
		for (var i=0; i < roles.length; i++) { 
			var role = roles[i]; 
			var opt = document.createElement('option'); 
			opt.text = role.name; 
			opt.value = role.id; 
			try { 
				rselect.add(opt, null); 
			} catch(ex) { 
			   	rselect.add(opt); 
			} 
		} 
	} 
}

function codeEmbedGigya() {
	for( i = 0; i < document.embedSelect.embed.length; i++ ) {
		if( document.embedSelect.embed[i].checked == true ) {
			if (i==0) {
				Wildfire.divWildfirePost.applyConfig(pconf);
				break;
			} else if (i==1) {
				Wildfire.divWildfirePost.applyConfig(pconf2);
				break;
			} else if (i==2) {
				Wildfire.divWildfirePost.applyConfig(pconf3);
				break;
			}
		}
	}
}

function el(id){
	return id(id)
}

function addFadeToElementsWithClass(clazz){
	var nodes = YAHOO.util.Dom.getElementsByClassName(clazz);
	for(var index=0; index < nodes.length ;index++){
		var node = nodes[index];
		YAHOO.util.Event.addListener(node, 'click', function(e,bla,cont) {
			YAHOO.util.Event.preventDefault(e);
			var containter = this.parentNode.id;
			YAHOO.util.Connect.asyncRequest('POST', this.href, {
				success: function(o){hide(containter);},
				failure: function(o){alert('Error. Try later')}
			}, null);
		});
	}
}

function addEditInPlace(clazz){
	var nodes = YAHOO.util.Dom.getElementsByClassName(clazz);
	for(var index=0; index < nodes.length ;index++){
		var node = nodes[index];
		YAHOO.util.Event.addListener(node, 'click', function(e) {
			YAHOO.util.Event.preventDefault(e);
			var containter = this.parentNode;
			containter.style.display='none';
			YAHOO.util.Connect.asyncRequest('GET', this.href, {
				success: function(o){containter.innerHTML = o.responseText;formEditingInPlace('editInPlace_'+containter.id);show(containter.id);goToTheUrlOnClick("cancel_and_show",containter)},
				failure: function(o){alert('Error. Try later')}
			}, null);
		});
	}
}

function formEditingInPlace(id){
	var form = YAHOO.util.Dom.get(id);
	YAHOO.util.Event.addListener(form, 'submit', function(e) {
		YAHOO.util.Event.preventDefault(e);
		var container = this.parentNode;
		YAHOO.util.Connect.setForm(id);
		YAHOO.util.Connect.asyncRequest('POST', this.action, {
			success: function(o){
				var containterParent = this.parentNode;
				pseudoOuterHTML(container,o.responseText)
				show(container);
				addFadeToElementsWithClass('delete_anchor');
				addEditInPlace("edit_in_place");}, 
			failure: function(o){}
		}, null);
	});
}

function pseudoOuterHTML(element, text){
	var tempElement = document.createElement(element.parentNode.tagName);
	tempElement.innerHTML = text;
	element.innerHTML = tempElement.firstChild.innerHTML;
}

function goToTheUrlOnClick(clazz){
	var nodes = YAHOO.util.Dom.getElementsByClassName(clazz);
	for(var index=0; index < nodes.length ;index++){
		var node = nodes[index];
		YAHOO.util.Event.addListener(node, 'click', function(e) {
			YAHOO.util.Event.preventDefault(e);
			var container = this.parentNode.parentNode;
			container.style.display='none';
			YAHOO.util.Connect.asyncRequest('GET', this.href, {
				success: function(o){pseudoOuterHTML(container,o.responseText);show(container.idshow);addEditInPlace("edit_in_place");},
				failure: function(o){alert('Error. Try later')}
			}, null);
		})
	}
}

if(YAHOO.widget.Effects){
YAHOO.widget.Effects.JobsketAppear = function(inElm, opts) {
    this.element = YAHOO.util.Dom.get(inElm);
    
    YAHOO.util.Dom.setStyle(this.element, 'height', document.body.offsetHeight + 30 + "px");
    
    YAHOO.util.Dom.setStyle(this.element, 'opacity', '0');
    YAHOO.widget.Effects.Show(this.element);
    var attributes = {
        opacity: { from: 0, to: 0.75 }
    };
    /*
    * Custom Event fired after the effect completes
    * @type Object
    */
    this.onEffectComplete = new YAHOO.util.CustomEvent('oneffectcomplete', this);
    
    var ease = ((opts && opts.ease) ? opts.ease : YAHOO.util.Easing.easeOut);
    var secs = ((opts && opts.seconds) ? opts.seconds : 3);
    var delay = ((opts && opts.delay) ? opts.delay : false);

    /**
    * YUI Animation Object
    * @type Object
    */
    this.effect = new YAHOO.util.Anim(this.element, attributes, secs, ease);
    this.effect.onComplete.subscribe(function() {
        this.onEffectComplete.fire();
    }, this, true);
    if (!delay) {
        this.effect.animate();
    }
}
}

//--Charts
var jsonPrices
var mychart
function changePricesDataSource(url, type){
    jsonPrices = new YAHOO.util.DataSource( url+type );
    jsonPrices.connMethodPost = true;
    jsonPrices.responseType = YAHOO.util.DataSource.TYPE_JSON;
    jsonPrices.responseSchema =
    {
            resultsList: "Results",
            fields: ["id",{key:"salary", parser:"number"},"date","dateText"]
    };
    mychart = new YAHOO.widget.LineChart( "chart", jsonPrices, {
        series: seriesDef,
        xField: "dateText",
        yAxis: currencyAxis,
        dataTipFunction: YAHOO.example.getDataTipText,
        wmode: "transparent",
        expressInstall: "assets/expressinstall.swf"
    });
}

var jsonHistorical
var mychart
function handleEvent(event){ 
    window.open(event.item.positionUrl); 
}

function formatPositionAxisLabel( value ) 
{ 
    return "";
}

function changeHistoricalDataSource(url){
    jsonHistorical = new YAHOO.util.XHRDataSource( url );
    jsonHistorical.connMethodPost = true;
    jsonHistorical.responseType = YAHOO.util.XHRDataSource.TYPE_JSON;
    jsonHistorical.responseSchema =
    {
            resultsList: "Results",
            fields: ["id",{key:"salary", parser:"number"},"date","place","dateText","positionUrl","title"]
    };
    
    var positionAxis = new YAHOO.widget.NumericAxis()
    positionAxis.labelFunction = "formatPositionAxisLabel" 
    positionAxis.minimum = 0
    positionAxis.maximum = 50
    
    mychart = new YAHOO.widget.ColumnChart( "chart2", jsonHistorical, {
        series: seriesDef,
        xField: "id",
        xAxis: positionAxis,
        yAxis: currencyAxis,
        dataTipFunction: YAHOO.getHistorical,
        wmode: "transparent",
        expressInstall: "assets/expressinstall.swf"
    });
    mychart.subscribe("itemClickEvent", handleEvent);
}


function tagsSlider() {
    var Event = YAHOO.util.Event,
        Dom   = YAHOO.util.Dom,
        lang  = YAHOO.lang,
        slider, 
        bg="slider-bg", thumb="slider-thumb", 
        valuearea="slider-value", textfield="importance"

    // The slider can move 0 pixels up
    var topConstraint = 0;

    // The slider can move 200 pixels down
    var bottomConstraint = 180;

    // Custom scale factor for converting the pixel offset into a real value
    var scaleFactor = 0.05;

    // The amount the slider moves when the value is changed with the arrow
    // keys
    var keyIncrement = 20;

    var tickSize = 20;

    Event.onDOMReady(function() {

        slider = YAHOO.widget.Slider.getHorizSlider(bg, 
                         thumb, topConstraint, bottomConstraint, 20);

        // Sliders with ticks can be animated without YAHOO.util.Anim
        slider.animate = true;

        slider.getRealValue = function() {
            return Math.round(this.getValue() * scaleFactor);
        }
       	slider.setValue(80,false); 
        slider.subscribe("change", function(offsetFromStart) {

            var valnode = Dom.get(valuearea);
            var fld = Dom.get(textfield);

            // use the scale factor to convert the pixel offset into a real
            // value
            var actualValue = slider.getRealValue();

            // update the text box with the actual value
            fld.value = actualValue+1;

            // Update the title attribute on the background.  This helps assistive
            // technology to communicate the state change
            Dom.get(bg).title = "slider value = " + actualValue;

        });

        slider.subscribe("slideStart", function() {
                YAHOO.log("slideStart fired", "warn");
            });

        slider.subscribe("slideEnd", function() {
                YAHOO.log("slideEnd fired", "warn");
            });

        // Listen for keystrokes on the form field that displays the
        // control's value.  While not provided by default, having a
        // form field with the slider is a good way to help keep your
        // application accessible.
        Event.on(textfield, "keydown", function(e) {

            // set the value when the 'return' key is detected
            if (Event.getCharCode(e) === 13) {
                var v = parseFloat(this.value, 10);
                v = (lang.isNumber(v)) ? v : 0;

                // convert the real value into a pixel offset
                slider.setValue(Math.round(v/scaleFactor));
            }
        });
        // Use setValue to reset the value to white:
        Event.on("putval", "click", function(e) {
            slider.setValue(100, false); //false here means to animate if possible
        });
    });
}

function show(id){
	YAHOO.util.Dom.get(id).style.display=""
}
function hide(id){
	YAHOO.util.Dom.get(id).style.display="none"
}

var W3CDOM = (document.createElement && document.getElementsByTagName);

function initFileUploads() {
	if (!W3CDOM) return;
	var fakeFileUpload = document.createElement('div');
	fakeFileUpload.className = 'fakefile';
	fakeFileUpload.appendChild(document.createElement('input'));
	var image = document.createElement('img');
	image.src='pix/button_select.gif';
	fakeFileUpload.appendChild(image);
	var x = document.getElementsByTagName('input');
	for (var i=0;i<x.length;i++) {
		if (x[i].type != 'file') continue;
		if (x[i].parentNode.className != 'fileinputs') continue;
		x[i].className = 'file hidden';
		var clone = fakeFileUpload.cloneNode(true);
		x[i].parentNode.appendChild(clone);
		x[i].relatedElement = clone.getElementsByTagName('input')[0];
		
	}
}


