/***********************/
/** GLOBAL *************/
/***********************/

//function $(id){
//	return document.getElementById(id);
//}
var intval="";

document.getElementsByClassName = function(class_name) {
	var docList = this.all || this.getElementsByTagName('*');
	var matchArray = new Array();

	/*Create a regular expression object for class*/
	var re = new RegExp("(?:^|\\s)"+class_name+"(?:\\s|$)");
	for (var i = 0; i < docList.length; i++) {
			if (re.test(docList[i].className) ) {
					matchArray[matchArray.length] = docList[i];
			}
	}
	return matchArray;
}

function addEvent( obj, evt, fn ){
	if ( typeof obj.attachEvent != 'undefined' ){
		obj.attachEvent( "on" + evt, fn );
	}
	else if ( typeof obj.addEventListener != 'undefined' ){
		obj.addEventListener( evt, fn, false );
	} else {
		//		Do you want to support browser this old? 
		//		If so, you'll need to accomodate it here
	}
}

function findPosX(obj){
	var curleft = 0;
	if(obj.offsetParent)
		while(1) 
		{
			curleft += obj.offsetLeft;
			if(!obj.offsetParent)
			break;
			obj = obj.offsetParent;
		}
	else if(obj.x)
		curleft += obj.x;
	return curleft;
}

function findPosY(obj){
	var curtop = 0;
	if(obj.offsetParent)
		while(1)
		{
			curtop += obj.offsetTop;
			if(!obj.offsetParent)
			break;
			obj = obj.offsetParent;
		}
	else if(obj.y)
		curtop += obj.y;
	return curtop;
}

function filterElementsBy(filter, filterLabel){
	if(filterLabel==null)filterLabel=filter;
	//$("galaxieFilterfilter").innerHTML=filterLabel;
	var galaxieFilter = document.getElementById("galaxieFilter").getElementsByTagName("div")
	for(i=0;i<galaxieFilter.length;i++){
		if(galaxieFilter[i].getAttribute("filter")!=null){
			galaxieFilter[i].style.display="none"; // reset view
			//if(filter == "All")galaxieFilter[i].style.display="block"; // enable all events if All is selected
			var filters = galaxieFilter[i].getAttribute("filter").split(",");
			for(var fi in filters){
				if(filters[fi] == filter){ // enable event of selected genre
					galaxieFilter[i].style.display="block";
				}
			}
		}
	}
}

function setCookie(c_name,value,expiredays){
	var exdate=new Date();
	exdate.setDate(exdate.getDate()+expiredays);
	document.cookie=c_name+ "=" +escape(value)+((expiredays==null) ? "" : ";expires="+exdate.toGMTString());
}

function getCookie(c_name){
	if (document.cookie.length>0){
		c_start=document.cookie.indexOf(c_name + "=");
		if (c_start!=-1){
			c_start=c_start + c_name.length+1;
			c_end=document.cookie.indexOf(";",c_start);
			if (c_end==-1) c_end=document.cookie.length;
			return unescape(document.cookie.substring(c_start,c_end));
		}
	}
	return "";
}

/***********************/
/** PAGE INIT **********/
/***********************/
addEvent( window, 'load', function(){

	// init sub menu if available.
	if($("subMenu"))subMenu();

	// init DropMenuX
	var dmx = "";
	if($("menu1")){
		dmx = new DropMenuX('menu1');
		dmx.position.levelX.left = 2;
		dmx.position.level1.top = 0;
		dmx.init();
	}
	
	// preload hover images and prepare mouseover-out events
	swapAndPreload();
	
	// load motif background
	var randomnumber=Math.floor(Math.random()*6)+1;
	//$("bg_motif").src=$("bg_motif").src.replace(/spacer.gif/,"bg_motif_0"+randomnumber+".png");
	$("bg_motif").className="bg_motif_"+randomnumber;
});


function swapAndPreload(){
	$$("img").each(function(tag){
		if(/swap/.test(tag.className)){
			var img = new Image();
			img.src=tag.src.replace(/([-_])out/,'$1over');
			tag.onmouseover = function(){
				this.src=this.src.replace(/([-_])out/,'$1over');
			}
			tag.onmouseout = function(){
				this.src=this.src.replace(/([-_])over/,'$1out');
			}
			tag.style.cursor="pointer";
		};
		if(/\$preload/.test(tag.className)){
			var img = new Image();
			img.src=tag.src.replace(/([-_])out/,'$1over');
		};
	});
}

/********************/
/*** SPECIFIC *******/
/********************/
function showSelectChannel(){
	if($("Chan").className!="open"){
		$("last10").style.display="none";
		$("last10content").style.display="none";
		if($("top10")){
			$("top10").style.display="none";
			$("top10content").style.display="none";
		}
		$("selectChan").style.display="block";
		$("Chan").className="open"
	}else{
		$("last10").style.cssText="";
		if($("top10")){
			$("top10").style.cssText="block";
		}
		$("last10content").style.cssText="block";
		$("selectChan").style.display="none";
		$("Chan").className=""
	}	
}

function subMenu(){
	var elem = document.getElementsByClassName('subMenuItem');
	for(var i = 0; i < elem.length; i++){
		elem[i].onmouseover = function(){
			if(this.className.indexOf("selected")<0)this.className=this.className+" over";
		}
		elem[i].onmouseout = function(){
			if(this.className.indexOf("selected")<0)this.className=this.className.replace(" over","");
		}
		elem[i].onclick = function(){
			window.location=this.childNodes[0].childNodes[0].href;
			this.childNodes[0].childNodes[0].href="javascript:void(0);";
		}
		elem[i].style.cssText+="cursor:pointer;"; // setAttibute doesn't work in IE
	}
}

function toggleCollapse(id,tIdPrefix){
	if(!/open/.test($(id).className)){
		if(tIdPrefix!='')$(tIdPrefix+id).className+=" open";
		$(id).className+=" open";
	}else{
		if(tIdPrefix!='')$(tIdPrefix+id).className=$(tIdPrefix+id).className.replace(/ open/,"");
		$(id).className=$(id).className.replace(/ open/,"");
	}
	
}

var showGenreChannelStatus=false;
var genres=new Array();
function showGenreChannel(genre){
	for(var i=0;i<genres.length;i++){
		$(genres[i]).className=$(genres[i]).className.replace(/genre over/,"genre");
	}
	$(genre).className=$(genre).className.replace(/genre/,"genre over");
	$("genreChannelsViewPort").innerHTML=$(genre+"Channels").innerHTML;
	showGenreChannelStatus=true;
}

function validate(formname){

	var message="";
	var valid=true;
	
	for(var i=0;i<document.forms[formname].length;i++){ // look for form elements
		if(/required/.test(document.forms[formname][i].getAttribute("formElementType"))){ // look for required elements
			if(document.forms[formname][i].value==""){
				valid=false;
				message+=(document.forms[formname][i].getAttribute("errorMessage")==null)?document.forms[formname][i].name+" required":document.forms[formname][i].getAttribute("errorMessage")+"\n";
			}
		}
		if(/checkbox/.test(document.forms[formname][i].getAttribute("formElementType"))){ // look for required elements
			if(!document.forms[formname][i].checked){
				valid=false;
				message+=(document.forms[formname][i].getAttribute("errorMessage")==null)?document.forms[formname][i].name+" required":document.forms[formname][i].getAttribute("errorMessage")+"\n";
			}
		}
		if(/email/.test(document.forms[formname][i].getAttribute("formElementType"))){ // look for email elements
			if(document.forms[formname][i].value=="" || !/^[\w.%+-]+@[\w.-]+\.\w{2,4}$/.test(document.forms[formname][i].value)){
				valid=false;
				message+=(document.forms[formname][i].getAttribute("errorMessage")==null)?document.forms[formname][i].name+" must be valid":document.forms[formname][i].getAttribute("errorMessage")+"\n";
			}
		}
		if(/phone/.test(document.forms[formname][i].getAttribute("formElementType"))){ // look for phone elements
			document.forms[formname][i].value=document.forms[formname][i].value.replace(/[^\d]/g,""); // first, remove all except digits
			if(document.forms[formname][i].value!="" && document.forms[formname][i].value.length!=10){
				valid=false;
				message+=(document.forms[formname][i].getAttribute("errorMessage")==null)?document.forms[formname][i].name+" must be valid":document.forms[formname][i].getAttribute("errorMessage")+"\n";
			}
		}
		if(/radio/.test(document.forms[formname][i].getAttribute("formElementType"))){ // look for required elements
			var radioName = document.forms[formname][i].name;
			var value = getCheckedValue(document.forms[formname][radioName]);
			if(!value){
				valid=false;
				// pas de message+= car les radios button écrivent plusieurs fois le même message
				message=(document.forms[formname][i].getAttribute("errorMessage")==null)?document.forms[formname][i].name+" required":document.forms[formname][i].getAttribute("errorMessage")+"\n";
			}
		}
	}
	if(!valid){
		alert(message);
	}
	return valid;
}

function getCheckedValue(radioObj) {
	if(!radioObj)
		return false;
	var radioLength = radioObj.length;
	if(radioLength == undefined)
		if(radioObj.checked)
			return radioObj.value;
		else
			return false;
	for(var i = 0; i < radioLength; i++) {
		if(radioObj[i].checked) {
			return radioObj[i].value;
		}
	}
	return false;
}


function reloadPage(){
	window.location.reload()
}

function showMessage(where,what){
	$(where).innerHTML=what;
}
function clearErrorMessage(where){
	$(where).innerHTML="";
}

function executeLogin(btnId){
	document.getElementById(btnId).onclick();
}

function showHideRadio(categoryId, action){
	$$('input[name="category'+categoryId+'ArtistId"]').invoke(action);
}

function redirectToHome(msg){
	if(msg)alert(msg);
	window.location='/';
}

var genreGroup = Array();
function addToGroup(genreContainerId){
	for(i=0;i<genreGroup.length;i++){
		if(genreGroup[i]==genreContainerId)return;
	}
	genreGroup[genreGroup.length]=genreContainerId;
}

function toggleGenre(genreContainerId){
	if($(genreContainerId).state==null){
		addToGroup(genreContainerId);
	}
	for(i=0;i<genreGroup.length;i++){
		if(genreGroup[i]!=genreContainerId && $(genreGroup[i]).state=="openned"){
			hideGenre(genreGroup[i]);
			Effect.BlindUp(genreGroup[i],{duration:'0.3'});
		}
	}
	Effect.toggle(genreContainerId,'blind',{duration:'0.3'});
	if($(genreContainerId).state==undefined || $(genreContainerId).state=="closed"){
		showGenre(genreContainerId)
	}else{
		hideGenre(genreContainerId);
	}
}

function showGenre(genreContainerId){
	$(genreContainerId+"Header").childNodes[0].className+=' open';
	$(genreContainerId).state="openned";
}

function hideGenre(genreContainerId){
	$(genreContainerId).state="closed";
	$(genreContainerId+"Header").childNodes[0].className=$(genreContainerId+"Header").childNodes[0].className.replace(/ open/,'');
}










