/**
 * Questo file contiene:
 *   utility.js v1.2
 *   cookie.js v1.0
 *   bookmark.js v1.0
 *   confront.js v1.0
 *   savesearch.js v1.0
 *   ajax.js v1.0
 * 
 */



/**
 * Utility.js
 * 
 * v 1.2
 */

function $(elemId)
{
	var elem;
	if(document.getElementById)
		elem = document.getElementById(elemId);
	else
		elem = document.all[elemId];
	return elem;
}

function hide(elemId) 
{
    $(elemId).style.display = 'none';
}

function show(elemId) 
{
    $(elemId).style.display = '';
}

function toggle(elemId) 
{
	$(elemId).style.display = isVisible(elemId) ? 'none' : '';
}

function isVisible(elemId)
{
	return $(elemId).style.display == "none" ? false : true;
}

function setValue(elemId, value)
{
	$(elemId).value = value;
}

function getValue(elemId)
{
	return $(elemId).value;
}

function getTextByValue(selectId, value)
{
	for(var x = 0; x < $(selectId).length; x++)
	{
		if(value == $(selectId).options[x].value)
		{
			return $(selectId).options[x].text;			
		}
	}
	return null;	
}

function setTextByValue (fromId, toId)
{
	setValue(toId,getTextByValue(fromId,getValue(fromId)));
}

function selIndexFromValue(selectId, value)
{
	for(var x = 0; x < $(selectId).length; x++)
	{
		if(value == $(selectId).options[x].value)
		{
			$(selectId).options[x].selected = true;
			break;
		}
	}
}

function resetSelect(selectId)
{
	$(selectId).options.length = 0;
}
// ****************************************************
// create encoded query string from an array like this:
// arParams['param1'] = "value1";
// arParams['paramN'] = "valueN";
// ****************************************************
function array2QueryString(arParams)
{
	var arResult = new Array();
	
	for (var i in arParams) 
	{
		//var sParam = encodeURIComponent(i);
		var sParam = i;
		sParam += "=";
		sParam += encodeURIComponent(arParams[i]);
		arResult.push(sParam);
	}
	
	return arResult.join("&");
}

function zeroPad(num, length)
{ 
	var result = num + '';
	while (result.length < length)
		result = '0' + result
	
 	return result;
}
function isNull(value)
{
	if(value == null) return true;
	if(value == undefined) return true;
	return false;
}

function defaultImage(imgObj, defaultImage)
{
	imgObj.src = defaultImage;
}

function selectAll(elemid)
{
	var a = document.getElementsByTagName('input');
	for (i = 0; i <= a.length; i++)
	{
		var obj = document.getElementById(elemid + '[' + i + ']');
		if(obj)
			obj.checked = true;
	}
}

function getLabelForId(id)
{
	var label, labels = document.getElementsByTagName('label');
 	for (var i = 0; (label = labels[i]); i++) 
   		if (label.htmlFor == id) return label;
 	
 	return null;
}

function showelement(el){
	
		if($(el).style["display"]=='block'){
			$(el).style["display"]='none';
			//$(el+'btn').style["color"]='#669933';
			$(el+'img').src='/img'+group+'/plus.gif';
		}else{
			$(el).style["display"]='block';
			//$(el+'btn').style["color"]='#0066CC';
			$(el+'img').src='/img'+group+'/minus.gif';
		}
	}
	
function navigaper(who,dir,obj){
	var generic_img 		= who.replace("per","img");
	
	if(isNull(dir))
	{
		$('imgregione').src 	= $('imgregione').src.replace("_over","");
		$('imgmarca').src 		= $('imgmarca').src.replace("_over","");
		$('imggroupage').src 	= $('imggroupage').src.replace("_over","");

		$(generic_img).src 		= "/img/" + generic_img.replace("img","") + "_over.gif";
		
		$('perregione').style.display="none";
		$('permarca').style.display="none";
		$('pergroupage').style.display="none";
		$(who).style.display="block";
		
		$('naviga_per_selected').value = who;
	}
	else
	{
		if(who != $('naviga_per_selected').value)
		{
			if(dir == 'over')	rollover(obj);
			else				rollout(obj);
		}
	}
}

function showbug()
{
	document.getElementById('insertionbug').style['display']='';
}
function hidebug()
{
	document.getElementById('insertionbug').style['display']='none';
}
function check(who){
		if(Form.checkForm(who,'Register')==false){
			alert('Attenzione, correggere/compilare i campi segnalati in rosso');
			return false;
		}else{
			return true;
		}
	}
/**
 * funzione per il redirect
 */
function redirectUrl( value ){
	if(value!=''){
		document.location = '/' + value + '.html';
	}	
}

/**
 * Login functions
 * 
 * @return
 */

function manageLogin()
{
  display = $('box_login').style['display'];
  $('box_login').style['display']=(display == 'none') ? 'block' : 'none';
}

function loginSubmit(form){
	// modifica per gestire form diversi
	if(form.LoginFormControllerlogin.value.length==0){
		alert("Inserire la propria email");
		return false
	}
	if(form.LoginFormControllerpassword.value.length<5||form.LoginFormControllerpassword.value.length>=24){
		alert("Password non valida");
	    return false
	}
	var str="LoginFormController";
	form.LoginFormControllertype.name=form.LoginFormControllertype.name.replace(str,str+"$");
	form.LoginFormControllerreferer.name=form.LoginFormControllerreferer.name.replace(str,str+"$");
	form.LoginFormControllerlogin.name=form.LoginFormControllerlogin.name.replace(str,str+"$");
	form.LoginFormControllerpassword.name=form.LoginFormControllerpassword.name.replace(str,str+"$");
	form.submit();
}



/**
 * cookie.js
 * 
 * v 1.0
 */

function getCookie(name)
{
	var cookies = document.cookie;
	if (cookies.indexOf(name) != -1)
	{
		var startpos = cookies.indexOf(name)+name.length+1;
		var endpos = cookies.indexOf(";",startpos)-1;
		if (endpos == -2) endpos = cookies.length;
		return cookies.substring(startpos,endpos+1);
	}
	else
	{
		return false; 
	}
}
function setCookie(name, value, expires)
{
	
    if (!expires) expires = new Date(); 
	document.cookie = name + "=" + value + "; expires=" + expires.toGMTString() + "; path=/";
}
var expdate = new Date (); 
expdate.setTime(expdate.getTime() + 1000 * 60 * 60 * 24 * 365); 
//setCookie("layout","ResultListing1",expdate);

if(getCookie('layout')==false){
	setCookie("layout","ResultListing0",expdate);
}


/**
 * bookmark.js
 * 
 * v 1.0
 */

// JavaScript Document
var Bookmark = new Object();

Bookmark.responseCallBack = function(owner){
	if(Ajax.CheckReadyState(owner.request)){
		var response = Bookmark.parseResponse(owner.request.responseText);
		document.getElementById(response["action"]+"msgOK").style["display"] = "none";
		document.getElementById(response["action"]+"msgERR").style["display"] = "none";
		if(response["err"]== "OK"){
			
			document.getElementById(response["action"]+"msgOK").style["display"] = "block";
			
		}else if(response["err"]== "KO"){
			document.getElementById(response["action"]+"msgERR").style["display"] = "block";
		}else if(response["err"]== "KO2"){
			document.getElementById(response["action"]+"msgERR2").style["display"] = "block";
		}
	}
}
Bookmark.parseResponse = function(text){
	var arr = text.split("&");
	var result = new Array();
	for(var i=0; i<arr.length;i++){
		arr[i]=arr[i].split("=");
		result[arr[i][0]] = arr[i][1];
	}
	return result;
}


Bookmark.send = function(form){
	var objForm = document.getElementById(form);
	var url = "index.php?p=Bookmark";
	var param = "";
	with(document) {
	  for (i=0; i<objForm.elements.length; i++ ) {
		  if(i!=0){
			  param += "&";
		  }
		  param += objForm.elements[i].name+"="+objForm.elements[i].value;
	  }
	}
	//alert(param);
	var owner = new Object();
	Ajax.RequestPost(url, this.responseCallBack,param,owner,form+"loading");
}


/**
 * confront.js
 * 
 * v 1.0
 */

// JavaScript Document
var Confront = new Object();

Confront.responseCallBack = function(owner){
	if(Ajax.CheckReadyState(owner.request)){
		var response = Confront.parseResponse(owner.request.responseText);
		
		document.getElementById(response["action"]+"msgOK").style["display"] = "none";
		document.getElementById(response["action"]+"msgERR").style["display"] = "none";
		
		if(response["err"]== "OK"){
			if(response["selectedid"]!=undefined){
			var obj2=document.getElementsByTagName("input"); 
			
			 for (i=0; i<obj2.length; i++ ) {
				  if(obj2[i].id == "checkpref"){
					 obj2[i].checked = false;
				  }
			  }
			
			var arr = response["selectedid"].split(",");
			
			 for (i=0; i<arr.length; i++ ) {
				 	
				 	var obj_form=document.getElementById('ConfrontForm'+arr[i]);
					if(obj_form!=undefined){
						obj_form.checkpref.checked=true;
					}
			  }
			}
			document.getElementById(response["action"]+"msgOK").style["display"] = "block";
			
		}else if(response["err"]== "KO"){
			document.getElementById(response["action"]+"msgERR").style["display"] = "block";
		}else if(response["err"]== "checked"){
			document.getElementById("checkpref").checked = "true";
		}
	}
}
Confront.parseResponse = function(text){
	var arr = text.split("&");
	var result = new Array();
	for(var i=0; i<arr.length;i++){
		arr[i]=arr[i].split("=");
		result[arr[i][0]] = arr[i][1];
	}
	return result;
}
Confront.check = function(id){
	var url = "index.php?p=Confront";
	var param = "id="+id+"&action=check";
	var owner = new Object();
	form="ConfrontForm";
	Ajax.RequestPost(url, this.responseCallBack,param,owner,form+"loading");
}

Confront.send = function(form){
	var objForm = document.getElementById(form);
	var url = "/confront.html";
	var param = "";
	with(document) {
	  for (i=0; i<objForm.elements.length; i++ ) {
		  if(i!=0){
			  param += "&";
		  }
		  param += objForm.elements[i].name+"="+objForm.elements[i].value;
	  }
	}
	
	var owner = new Object();
	Ajax.RequestPost(url, this.responseCallBack,param,owner,form+"loading");
}



/**
 * savesearch.js
 * 
 * v 1.0
 */

// JavaScript Document
var SaveSearch = new Object();

SaveSearch.responseCallBack = function(owner){
	if(Ajax.CheckReadyState(owner.request)){
		var response = SaveSearch.parseResponse(owner.request.responseText);
		document.getElementById(response["action"]+"msgOK").style["display"] = "none";
		document.getElementById(response["action"]+"msgERR").style["display"] = "none";
		if(response["err"]== "OK"){
			
			document.getElementById(response["action"]+"msgOK").style["display"] = "block";
			
		}else if(response["err"]== "KO"){
			document.getElementById(response["action"]+"msgERR").style["display"] = "block";
		}
	}
}
SaveSearch.parseResponse = function(text){
	var arr = text.split("&");
	var result = new Array();
	for(var i=0; i<arr.length;i++){
		arr[i]=arr[i].split("=");
		result[arr[i][0]] = arr[i][1];
	}
	return result;
}


SaveSearch.send = function(form){
	var objForm = document.getElementById(form);
	var url = "index.php?p=SaveSearch";
	var param = "";
	with(document) {
	  for (i=0; i<objForm.elements.length; i++ ) {
		  if(i!=0){
			  param += "&";
		  }
		  param += objForm.elements[i].name+"="+objForm.elements[i].value;
	  }
	}
	
	var owner = new Object();
	Ajax.RequestPost(url, this.responseCallBack,param,owner,form+"loading");
}

/**
 * Ajax.js
 * 
 * v1.0
 */

var Ajax = new Object();

Ajax.loading = "";
Ajax.Request = function(url, callbackMethod, owner, loader)
{
	if(loader == null){
		this.loading = 'loading';
	}else{
		this.loading = loader;
	}
	
	show(this.loading);
	
	if(isNull(owner)) owner = new Object();
	
	owner.request = Ajax.createRequestObject();
	owner.request.onreadystatechange = function()
	{
		callbackMethod(owner);
	}
	owner.request.open("get", url, true);
	
	owner.request.send(url);
}

Ajax.RequestPost = function(url, callbackMethod, sBody,  owner, loader)
{
	if(loader == null){
		this.loading = 'loading';
	}else{
		this.loading = loader;
	}
	//show(this.loading);
	if(isNull(owner)) owner = new Object();
	
	owner.request = Ajax.createRequestObject();
	owner.request.onreadystatechange = function()
	{
		callbackMethod(owner);
	}
	owner.request.open("post", url, true);
	owner.request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	owner.request.send(sBody);
}

Ajax.createRequestObject = function()
{
	if(typeof XMLHttpRequest != "undefined")
	{
		return new XMLHttpRequest();
	}
	else
	{
		var aVersions = ["MSXML2.XMLHttp.5.0", "MSXML2.XMLHttp.4.0", "MSXML2.XMLHttp.3.0", "MSXML2.XMLHttp", "Microsoft.XMLHttp"];
		
		for(var i=0; i < aVersions.length; i++)
		{
			try {
				var obj = new ActiveXObject(aVersions[i]);
				return obj;
			} catch (oError) {
				// Do nothing	
			}
		}
		throw new Error("MSXML is not installed");
	}

}

Ajax.CheckReadyState = function(obj)
{
	if(obj.readyState == 0) {$(this.loading).innerHTML = "Loading..."; }
	if(obj.readyState == 1) {$(this.loading).innerHTML = "Loading..."; }
	if(obj.readyState == 2) {$(this.loading).innerHTML = "Loading..."; }
	if(obj.readyState == 3) {$(this.loading).innerHTML = "Loading..."; }
	if(obj.readyState == 4)
	{
		if(obj.status == 200){
			//hide(this.loading);
			$(this.loading).innerHTML = "";
			return true;
		}
		else
		{
			$(this.loading).innerHTML = "HTTP " + obj.status;
		}
	}
	return false;
};

function openprint(){
	window.print();
};

