/* $Id: antenna_search.js,v 1.10 2009-07-02 11:57:41 rbernaczek Exp $ */

var LOW_ID = "id_frequency_low";
var LOW_UNIT_ID = "id_frequency_low_unit";

var HIGH_ID = "id_frequency_high";
var HIGH_UNIT_ID = "id_frequency_high_unit";

var RESULTS_CONTAINER_ID = "antenna_container";
var RESULTS_DIV_ID = "as_results";

var FREQUENCY_SCALE_ID = "as_select_frequency";

var EXTREMAL_FREQUENCY = 0;

function setInputsFrequency(inputName, fValue, fUnit){
	if (EXTREMAL_FREQUENCY > 0){
		EXTREMAL_FREQUENCY --;
		return;
	}
	if (inputName == "Low"){
		var fValueObj = document.getElementById(LOW_ID);
		var fUnitObj = document.getElementById(LOW_UNIT_ID);
	} else {
		var fValueObj = document.getElementById(HIGH_ID);
		var fUnitObj = document.getElementById(HIGH_UNIT_ID);
	}
	
	fValueObj.value = fValue;
	fUnitObj.value = fUnit.toLowerCase();
	fValueObj.className="";
	fUnitObj.className="";
}


/* ----------------------------------------------------------------------
	FREQUENCY FORM
---------------------------------------------------------------------- */
function addEventsToFrequency(){
	var lowInputObj = document.getElementById(LOW_ID);
	if (!lowInputObj)
		return;
	
	var lowUnitObj = document.getElementById(LOW_UNIT_ID);
	if (!lowUnitObj)
		return;
	
	var highInputObj = document.getElementById(HIGH_ID);
	if (!highInputObj)
		return;
	
	var highUnitObj = document.getElementById(HIGH_UNIT_ID);
	if (!highUnitObj)
		return;
	
	addEvent(lowInputObj, "blur", inputToBlur);
	addEvent(highInputObj, "blur", inputToBlur);
	addEvent(lowUnitObj, "change", unitToBlur);
	addEvent(highUnitObj, "change", unitToBlur);
}

function inputToBlur(e, inputObj){
	// W sumie e jest nie potrzebne, ale na przyszlosc
	//Internet Explorer
	if (!e)
		e = window.event;

	if (!e)
		return;
	
	//Internet Explorer
	if( !inputObj )
		inputObj = this;
	
	//var inputObj = e.target;
	var unitObj = (inputObj.id == LOW_ID)?(document.getElementById(LOW_UNIT_ID)):(document.getElementById(HIGH_UNIT_ID));
	if (!unitObj)
		return;
	
	var labelName = (inputObj.id == LOW_ID)?("Frequency Low"):("Frequency High");
	if (!isNumber(inputObj.value)){
		alert(labelName + " is not a number!");
		inputObj.className="error";
		return;
	}
	inputObj.className="";
	
	if (!checkFrequencyForm(inputObj, unitObj))
		return false;
	
	setFrequencyInScale(inputObj, unitObj);
	ajaxAntennaSearch();
}

function unitToBlur(e, unitObj){
	//var unitObj = e.target;
	//Internet Explorer
	if( !unitObj )
		unitObj = this;
	
	var inputObj = (unitObj.id == LOW_UNIT_ID)?(document.getElementById(LOW_ID)):(document.getElementById(HIGH_ID));
	
	if (!checkFrequencyForm(inputObj, unitObj))
		return false;
	
	setFrequencyInScale(inputObj, unitObj);
	ajaxAntennaSearch();
}

function checkFrequencyForm(inputObj, unitObj){
	if (inputObj.value < 10 && unitObj.value=="mhz"){
		//inputObj.value = 10;
		EXTREMAL_FREQUENCY = 6;
		return true;
	}
	
	if (inputObj.value > 999 && unitObj.value=="mhz"){
		inputObj.value = Math.floor((inputObj.value / 1000) * 10) / 10;
		unitObj.value="ghz";
	}
	
	if (inputObj.value > 100 && unitObj.value=="ghz"){
		inputObj.value = 100;
		unitObj.value="ghz";
		return true;
	}
	
	return true;
}

function setFrequencyInScale(inputObj, unitObj){
	var frequency = inputObj.value;
	if (unitObj.value == "ghz")
		frequency = frequency * 1000;
	
	var idName = (inputObj.id == LOW_ID)?("lowSlider"):("highSlider");
	var obj = getMovieName("ara_ruler");
	if (!obj)
		return;
	obj.setNewFrequency(frequency, idName);
}

function getMovieName(movieName) {
	if (window[movieName])
		return window[movieName];
	else
		return document[movieName];
}

function setFrequencyScaleVisible(display){
	var scaleObj = document.getElementById(FREQUENCY_SCALE_ID);
	if (!scaleObj)
		return;
	
	scaleObj.style.display = display;
}


/* ----------------------------------------------------------------------
	VALID
---------------------------------------------------------------------- */
function isNumber(sText){
	var ValidChars = "0123456789.";
	var Char;
	
	for (i = 0; i < sText.length; i++) { 
		Char = sText.charAt(i); 
		if (ValidChars.indexOf(Char) == -1)
			return false;
	}
	return true;
}
	

/* ----------------------------------------------------------------------
	AJAX RELOAD
---------------------------------------------------------------------- */
function initAjaxForm(){
	//id_submit_button
	var submitButton = document.getElementById("id_submit_button");
	if (!submitButton)
		return;
	
	submitButton.style.display = "none";
	
	//Dodanie akcji dla checkoxow i radiobutonow
	var antenaSelectionForm = document.forms.antena_selection;
	if (!antenaSelectionForm)
		return;
	
	var elements = antenaSelectionForm.elements;
	for (var i=0; i<elements.length; i++){
		var e = elements[i];
		if (e.type == "checkbox" || e.type == "radio")
			addEvent(e, "click", ajaxAntennaSearch);
	}
}

function ajaxAntennaSearch(){
	ajaxAntennaFormSubmit("antena_selection");
}

function submitPageNo(){
	ajaxAntennaFormSubmit("console");
}

function ajaxAntennaFormSubmit(formName){
	if (formName == null || formName.length == 0)
		return;
	
	var antenaSelectionForm = document.forms[formName];
	if (!antenaSelectionForm)
		return;
	
	var resultsContainer = document.getElementById(RESULTS_CONTAINER_ID);
	if (!resultsContainer)
		return;
	
	var elements = antenaSelectionForm.elements;
	var qs = "/portlets/antenna/antenna_search.xml?";
	
	for (var i=0; i<elements.length; i++){
		var e = elements[i];
		if (e.name == undefined)
			continue;
		if (e.name == "")
			continue;
		
		//alert(e.type);
		if (e.type == "checkbox" || e.type == "radio"){
			if (e.checked)
				qs += e.name + "=" + e.value + "&";
		} else
			qs += e.name + "=" + e.value + "&";
	}
	
	//resultsContainer.innerHTML = "<p>Loading data...</p>";
	displayAntennasPreloader();
	ajaxRequest(qs, "post", resultsContainer);
}

function displayAntennasPreloader(){
	var resultObj = document.getElementById(RESULTS_DIV_ID);
	if (!resultObj)
		return;
	
	var tag = document.createElement("div");
	var newAttr = document.createAttribute("id");
	newAttr.nodeValue = "as_preloader";
	tag.setAttributeNode(newAttr);
    tag.style.width = resultObj.offsetWidth + "px";
    tag.style.height = resultObj.offsetHeight + "px";
    
    resultObj.appendChild(tag);
}


/* ----------------------------------------------------------------------
	AJAX LIB
---------------------------------------------------------------------- */
function ajaxRequest(url, method, containerResponse, postFunction)
{
	var req;
	if(window.XMLHttpRequest)
		req = new XMLHttpRequest();
	else if(window.ActiveXObject)
		req = new ActiveXObject("Microsoft.XMLHTTP");
	
	// if browser doesn't support ajax return true
	if(!req)
		return false;
	
	req.open(method.toUpperCase(), url , true );
	
	// process function
	req.onreadystatechange=function()
	{
		if (req.readyState == 4) 
			if(req.status == 200)
			{
				containerResponse.innerHTML = req.responseText;
				//alert(containerResponse);
				if(postFunction) postFunction();
			}
	}
	
	// send request
	req.send(null);
	
	return true;
}

	
/* ----------------------------------------------------------------------
	GROUP
---------------------------------------------------------------------- */
function groupVisibilyty(antennaListId, display){
	var antennaListObj = document.getElementById(antennaListId);
	if (!antennaListObj)
		return;
	
	antennaListObj.style.display = display;
	setCookieValue(antennaListId, display, 9999);
}

function setGroupCookie(antennaListId, display){
	setCookie(antennaListId, display);
}
	
	
	