var	g_widgetStyle = null;
var	g_divNode = null;

var	g_colorTab = new Array("purple", "blue", "cyan", "green",
			       "magenta","plum", "rose","pastel", 
			       "red","brown" , "orange","yellow" 
			       );
var	g_alignText = null;
var	g_isRoundCorners = null;
var	g_style = null;
var	g_server = "http://www.topic-topos.com/";
var	g_extern_server = "http://fr.topic-topos.com/";


String.prototype.trim = function()
{
    return this.replace(/^\s+/, "").replace(/\s+$/, "");
}

function	onloadPage()
{
    $('departments_list').options.selectedIndex = 0;
    $('cities_list').options.selectedIndex = 0;
    $('nb_elements_list').options.selectedIndex = 1;
    $('text_title').value = "";
}

function	onClickBody(event)
{
    el = getElementFromEvent(event);
    if (el.id == "" || el.id.indexOf("_color_") == -1)
	{
	    hide_color_pickers();
	}
}

function	hide_color_pickers()
{
    try {
	$('background_color_div_color_picker').style.display = "none";
    }
    catch (e) {}
}

function getElementFromEvent(event)
{
    if (event.target)
	return (event.target);
    else if (event.srcElement)
	return (event.srcElement);
}

function	onChangeDepartmentsList(selectNode)
{
  option = selectNode.options[selectNode.options.selectedIndex];
  if (option.value == "")
    return false;
  $('cities_list').disabled = true;
  $('nb_elements_list').options.selectedIndex = 1;
  $('nb_elements_list').disabled = true;
  $('loading_cities_img').style.display = "block";
  new Ajax.Request("", {
	  parameters: "getCityFromDepartment=" + option.value,
	      method: 'get', 
	      onComplete: onCompleteOnChangeDepartmentsList
	});
}

function	onCompleteOnChangeDepartmentsList(xhr)
{
    cities = eval(xhr.responseText);
    if (cities)
	{
	    for (i = 0; i < cities.length; i++)
		{
		    $('cities_list').options[i + 1] = cities[i];
		}
	    $('cities_list').disabled = false;
	}
  $('loading_cities_img').style.display = "none";
}

function	onChangeCitiesList(selectNode)
{
    option = selectNode.options[selectNode.options.selectedIndex];
    if (option.value == "")
	return false;
    department = getDepartmentsListValue();
    $('text_title').value = "";
    setWidgetFrameSrc(g_server + 'widget/admin-' + department + '/' + URLEncode(URLDecode(option.text)) + '&type=TextWidget');
    $('nb_elements_list').options.selectedIndex = 1;
    $('nb_elements_list').disabled = false;
    $('text_title').value = getCitiesListText();
}

function	onChangeNbElementsList(selectNode)
{
    option = selectNode.options[selectNode.options.selectedIndex];
    if (option.value == "")
	return false;
    department = getDepartmentsListValue();
    city = URLEncode(URLDecode(getCitiesListText()));
    setWidgetFrameSrc(g_server + 'widget/admin-' + department + '/' + city + '&type=TextWidget&nbElements=' + option.value);
}

function	setWidgetFrameSrc(src)
{
    $('widget').style.visibility = "hidden";
    $('loading_widget_img').style.display = "block";
    style = "";
    src += style;
    if ($('text_title').value != null && $('text_title').value.trim() != "")
	src += "&title" + "=" + $('text_title').value;
    if (g_alignText != null)
	src += "&align_title" + "=" + g_alignText;
    if (g_style != null)
	src += "&style" + "=" + g_style;
    if (g_isRoundCorners != null && g_isRoundCorners == "false")
	src += "&is_round_corners" + "=false";
    $('widget').src = src;
}

function	onloadWidgetFrame(frameNode)
{
    setText(frameNode.src);
    $('loading_widget_img').style.display = "none";
    $('widget').style.visibility = "visible";
}

function	setText(text)
{
    if (text.indexOf("index") == -1)
	{
	    src = URLEncode(URLDecode(text));
	    src = '<script language="javascript" type="text/javascript" src="' + src + '">';
	    src += '</script>';
	    $('textarea').value = src;
	    $('textarea').disabled = true;
	    getTopicToposLinks();
	}
    else
	{
	    $('textarea').value = "Choisissez un département et une commune.";
	    $('textarea').disabled = true;
	}
}

function	getTopicToposLinks()
{
    new Ajax.Request("",
		     {
			 parameters : "cityId=" + getCitiesListValue() + "&department=" + getDepartmentsListValue(),
			     method :"get",
			 onComplete : onCompleteTopicToposLinks
		     });
}

function	onCompleteTopicToposLinks(xhr)
{
    href_city = xhr.responseText;

    txt = "Retrouvez le ";
    txt += '<a id="topic_topos_city_link" href="' + g_extern_server + href_city.trim() + '"> patrimoine de ' + getCitiesListText()  + '</a>';
    txt += " et tout le ";
    txt += '<a id="topic_topos_link" href="' + g_extern_server  + '"> patrimoine de France</a> sur topic-topos.';

//     txt += '<a id="topic_topos_city_link" href="http://www.topic-topos.com/' + href_city.trim() + '"> patrimoine de ' + getCitiesListText()  + '</a>';
//     txt += " et tout le ";
//     txt += '<a id="topic_topos_link" href="http://www.topic-topos.com"> patrimoine de France</a> sur topic-topos.';

    $('textarea').value += txt;
    $('textarea').disabled = false;
}

function	showColorPicker(divNode)
{
    g_divNode = divNode;
    create_color_picker(divNode);
}

function	select_color(style)
{
    if (g_style == style)
	return false;
    g_style = style;
    $("background_color_img").src = "img/" + style + "_thumbnail.png";
    reGenerateFrame();
    hide_color_pickers();
    return false;
}


function	create_color_picker(divNode)
{
    parentId = divNode.id;
    divParentNode = document.getElementById(parentId + "_color_picker");
    if (divParentNode == null)
	{
	    tableNode = document.createElement("table");
	    tBodyNode = document.createElement("tbody");
	    for (i = 0, trNode = null; i < g_colorTab.length; i++)
		{
		    if ((i % 4) == 0)
			{
			    if (trNode != null)
				tBodyNode.appendChild(trNode);
			    trNode = document.createElement("tr");
			    trNode.innerHTML = "";
			}
		    tdNode = document.createElement("td");
		    tdNode.className = "td_color_picker";
		    tdNode.innerHTML = '<img src="img/' + g_colorTab[i]  + '_thumbnail.png" onclick="select_color(\'' + g_colorTab[i] + '\');return false;">';
		    trNode.appendChild(tdNode);

		}
	    tBodyNode.appendChild(trNode);
	    tableNode.appendChild(tBodyNode);
	    divParentNode = document.createElement("div");
	    divParentNode.style.display = "none";
	    divParentNode.className = "color_picker";
	    divParentNode.id = parentId + "_color_picker";
	    divParentNode.appendChild(tableNode);
	    divNode.appendChild(divParentNode);
	}
    hide_color_pickers();
    new Effect.Appear(divParentNode.id, {duration:1, fps:25, from:0.0, to:1.0});
}


function rgbToHex(str)
{
    if (str.indexOf("#") != -1)
	return str;
    str = str.replace(/rgb\(|\)/g, "").split(",");
    str[0] = parseInt(str[0], 10).toString(16).toLowerCase();
    str[1] = parseInt(str[1], 10).toString(16).toLowerCase();
    str[2] = parseInt(str[2], 10).toString(16).toLowerCase();
    str[0] = (str[0].length == 1) ? '0' + str[0] : str[0];
    str[1] = (str[1].length == 1) ? '0' + str[1] : str[1];
    str[2] = (str[2].length == 1) ? '0' + str[2] : str[2];
    return ('#' + str.join(""));
}

var	g_isDeployingAdvancedOptions = false;

function	afterFinishDeployAdvancedOptions()
{
    g_isDeployingAdvancedOptions = false;
}

function	deployAdvancedOptions()
{
    if (g_isDeployingAdvancedOptions == true)
	return false;
    g_isDeployingAdvancedOptions = true;
    if ($('advanced_options').style.display == "")
	{
	    $("arrow_img").src = "img/arrow_close.gif";
	    new Effect.BlindUp('advanced_options', {duration:1, from:0.0, to:1.0, afterFinish : afterFinishDeployAdvancedOptions});
	}
    else
	{
	    $("arrow_img").src = "img/arrow_open.gif";
	    new Effect.BlindDown('advanced_options', {duration:1, from:0.0, to:1.0, afterFinish : afterFinishDeployAdvancedOptions});
	}
}

function	reGenerateFrame()
{
    department = getDepartmentsListValue();
    city = URLEncode(URLDecode(getCitiesListText()));
    nbElements = getNbElementsListValue();
    if (department == "" || city == "")
	return false;
    setWidgetFrameSrc(g_server + 'widget/admin-' + department + '/' + city + '&type=TextWidget&nbElements=' + nbElements);
}

function	onChangeTextTitle()
{
    reGenerateFrame();
}

function	onChangeTitleAlign(imgNode, value)
{
    if ($("icoClicked") != null)
	$("icoClicked").id = "";
    imgNode.id = "icoClicked";
    g_alignText = value;
    reGenerateFrame();
}

function	onChangeTextSizeList()
{

}

function	onChangeRoundCorners(imgNode, value)
{
    if ($("icoCornerClicked") != null)
	$("icoCornerClicked").id = "";
    imgNode.id = "icoCornerClicked";
    if (g_isRoundCorners == value)
	return false;
    g_isRoundCorners = value;
    reGenerateFrame();
}


function	getCitiesListText()
{
    return $('cities_list').options[$('cities_list').options.selectedIndex].text;
}

function	getCitiesListValue()
{
    return $('cities_list').options[$('cities_list').options.selectedIndex].value;
}

function	getDepartmentsListValue()
{
    return $('departments_list').options[$('departments_list').options.selectedIndex].value;
}

function	getNbElementsListValue()
{
    return $('nb_elements_list').options[$('nb_elements_list').options.selectedIndex].text;    
}

/* Register */

function	changeStyleOnBlur(node)
{
    node.style.borderColor = "#000000";
}


function	changeStyleOnFocus(node)
{
    node.style.borderColor = "grey";
}

var	g_registerError = null;

function	onSubmitRegisterForm(formNode)
{
    if (!checkRegisterFormFields(formNode, null))
	return false;
    new Ajax.Request("", {
	  parameters: "name=" + formNode.name.value + "&surname=" + formNode.surname.value + "&email=" + formNode.email.value,
	      method: 'get', 
	      onComplete: onCompleteOnSubmitRegisterForm
	});
    return false;
}

function	checkRegisterFormFields(formNode, inputNode)
{
    ret = true;
    if (formNode.name.value.trim() == "" && (inputNode == null || formNode.name == inputNode))
	{
	    ret = false;
	    errorForm(formNode.name, "Vous devez rentrer un nom valide");
	}
    else
	validForm(formNode.name);
    if (formNode.surname.value.trim() == ""  && (inputNode == null || formNode.surname == inputNode))
	{
	    ret = false;
	    errorForm(formNode.surname, "Vous devez rentrer un prenom valide");
	}
    else
	validForm(formNode.surname);
    if (formNode.email.value.trim() == ""  && (inputNode == null || formNode.email == inputNode))
	{
	    ret = false;
	    errorForm(formNode.email, "Vous devez rentrer un email valide");
	}
    else
	{
	    if (!mailCheck(formNode.email.value) && (inputNode == null || formNode.email == inputNode))
		{
		    ret = false;
		    errorForm(formNode.email, "Vous devez rentrer un email valide");
		}
	    else
		validForm(formNode.email);
	}
    return ret;
}

function	errorForm(inputNode, error)
{
    inputNode.style.borderColor = "red";
    if (inputNode.parentNode.getElementsByTagName("a").length == 0)
	inputNode.parentNode.innerHTML += '<a class="tooltip"><img src="img/error.gif"><em>' + error + '</em></a></a>';
    g_registerError = error;
    return false;
}

function	validForm(inputNode)
{
    if (inputNode.parentNode.getElementsByTagName("a").length == 1)
	inputNode.parentNode.removeChild(inputNode.parentNode.getElementsByTagName("a")[0]);
}

function	mailCheck(mail)
{
    var regexp = new RegExp("^[-a-z0-9_.]+@[-a-z0-9_.]+[.][a-z]{2,6}$", "");
    
    if (!mail || !regexp.test(mail))
	{
	    return (false);
	}
    return (true);
}

function	onCompleteOnSubmitRegisterForm(xhr)
{
    status = eval('(' + xhr.responseText + ')');
    if (status.status == "ok")
	{
	    text = "<span style=\"width:100px;text-align : justify\">Bienvenue " + status.surname + " " + status.name + "!<br/><br/>";
	    text += "<b>Topic-Topos</b> vous remercie pour ";
	    text += "votre contribution &agrave; la promotion ";
	    text += "du patrimoine de votre commune.</span>";
	    $('newsletter_content').innerHTML = text;
	}
    else
	{
	    alert(status.status);
	}
}

function URLDecode (encodedString) {
    var output = encodedString;
    var binVal, thisString;
    var myregexp = /(%[^%]{2})/;
    while ((match = myregexp.exec(output)) != null
             && match.length > 1
	   && match[1] != '') {
	binVal = parseInt(match[1].substr(1),16);
	thisString = String.fromCharCode(binVal);
	output = output.replace(match[1], thisString);
    }
    return output;
}



function URLEncode (text)
{
    text = text.replace(new RegExp("(admin-)", "g"), "");
    text = text.replace(new RegExp("(&)", "g"), "&amp;");
    text = text.replace(new RegExp("( )", "g"), "-");
    text = text.replace(new RegExp("(à)", "g"), "a");
    
    text = text.replace(new RegExp("(á)", "g"), "a");
    text = text.replace(new RegExp("(â)", "g"), "a");
    text = text.replace(new RegExp("(ã)", "g"), "a");

    text = text.replace(new RegExp("(ç)", "g"), "c");

    text = text.replace(new RegExp("(è)", "g"), "e");
    text = text.replace(new RegExp("(é)", "g"), "e");
    text = text.replace(new RegExp("(ê)", "g"), "e");
    text = text.replace(new RegExp("(ë)", "g"), "e");

    text = text.replace(new RegExp("(ì)", "g"), "i");
    text = text.replace(new RegExp("(í)", "g"), "i");
    text = text.replace(new RegExp("(î)", "g"), "i");
    text = text.replace(new RegExp("(ï)", "g"), "i");

    text = text.replace(new RegExp("(ô)", "g"), "o");
    text = text.replace(new RegExp("(ö)", "g"), "o");

    text = text.replace(new RegExp("(ü)", "g"), "u");
    text = text.replace(new RegExp("(û)", "g"), "u");

    text = text.replace(new RegExp("(ÿ)", "g"), "y");

    return text;
}

