//////////////////////////////////////////////////////////////////////
// A generic function that handles state-toggling via subhead "tabs"
//////////////////////////////////////////////////////////////////////
function subheadNavTab(outerbody, num){
	var tabs = $(outerbody).getElementsByClassName('modu_subhead')[0].getElementsByTagName('A');
	var divs = $(outerbody).getElementsByClassName('tabcontent');

	for (var i=0; i < tabs.length; i++){
		tabs[i].className='navbuttonTVoff';
		divs[i].style.display='none';
	}
	tabs[num].className='navbuttonTVon';
	divs[num].style.display='';
}

////////////////////////////////////////
// General Date Check Function 	 
// month is from 1 to 12 	 
/////////////////////////////////////// 	 
function com_validDate(year,month,day){
	var mydate=new Date();
	month--;
	mydate.setFullYear(year,month,day);
	if(month==mydate.getMonth()){
		return true;
	} else {
		return false;
	}
}

////////////////////////////////////////
// General Wall Functions
////////////////////////////////////////

function mod_theWallSubmit(assettype, assetid){
	var comment=$("wallcomment").value.strip();
	if (comment.length < 1){
		return;
	}

	var dt=new Date();
	var wallhtml=new Array();
	var hour=dt.getHours();
	var ampm="AM";
	if(hour>12){
		hour=hour-12;
		ampm="PM";
	}
	var mins=dt.getMinutes();
	if(mins<10)
		mins="0"+mins;
	wallhtml = '<div class="commentitem">';
	wallhtml +=  '<div class="commentwrap clearfix">';
	wallhtml +=    '<div class="leftpic"><img src="' + curuserpic +'" alt=""/></div>';
	wallhtml +=    '<div class="righttext">';
	wallhtml +=      '<div class="commenterinfo">';
	wallhtml +=        '<span class="commenter"><a href="' + curuserlink + '">'+curusername+'</a></span>';
        wallhtml +=        '<span class="membersince">member since '+curuserdatejoined+'</span>';
	wallhtml +=        '<div class="meta">'+hour+':'+mins+' '+ampm+'</div>';
	wallhtml +=      '</div>'
	wallhtml +=      '<div class="commentcontent">'+comment+'</div>';
	wallhtml +=    '</div></div></div>';

	var wp=$("wallposts");
	wp.innerHTML=wallhtml + wp.innerHTML;
	$("wallcomment").value="";
	var params= Object.clone(g_ajaxparams);
	params.comment = comment;
	params.assettype = assettype;
	params.assetid = assetid;
	new Ajax.Request(g_ajaxpath+'ajax/wallPost.php'+g_ajaxsuffix, {
		method:'post',
		parameters: params,
		onSuccess: function(transport){
		},
		onFailure: function(){ alert('Something went wrong...') }
	});
}

function mod_theWallDel(assettype, assetid, postid){
	var cfrm=confirm("Do you want to delete this post?");
	if(cfrm!=true){
		return false;
	}

	var params= Object.clone(g_ajaxparams);
	params.assettype = assettype;
	params.assetid = assetid;
	params.postid = postid;
	new Ajax.Request(g_ajaxpath+'ajax/wallDel.php'+g_ajaxsuffix, {
		method:'post',
		parameters: params,
		onSuccess: function(transport){
		},
		onFailure: function(){ alert('Something went wrong...') }		
	});

	$(assettype+'wall'+assetid+'_'+postid).style.display = 'none';
}

/////////////////////////////////////////////
// General Email (forward/invite) functions
/////////////////////////////////////////////
function validateEmails(emails){
	var emailArr = emails.split(",");
	var pattern1 = /^[a-z0-9_\+-]+(\.[a-z0-9_\+-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*\.([a-z]{2,4})$/i;
	var pattern2 = /^[a-z0-9,!#\$%&'\*\+/=\?\^_`\{\|}~-]+(\.[a-z0-9,!#\$%&'\*\+/=\?\^_`\{\|}~-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*\.([a-z]{2,})$/i;

	for (var i=0; i < emailArr.length; i++){
		var curEmail = emailArr[i];
		if (!curEmail.match(pattern1) && !curEmail.match(pattern2)){
			return false;
		}
	}
	return true;
}
function useremail(assettype, tgt, redirect){
	var assetid=tgt.name;
	var emailmod = $('emailmod_' + assettype + '_' + assetid);
	var friendcheckboxes = emailmod.getElementsByTagName("INPUT");
	var friendstomail = new Array();

	var checkedboxes = new Array();
	for (var i=0; i < friendcheckboxes.length; i++){
		var curFriend = friendcheckboxes[i];
		if (curFriend.checked){
			friendstomail[friendstomail.length] = curFriend.name;
			checkedboxes.push(curFriend);
		}
	}

	var ccfield = emailmod.getElementsByClassName('cc')[0];
	try{
		blankOutAddresses(ccfield);
	}catch(err){
	}
	var typedemails = ccfield.value;

	if (friendstomail.length == 0 && typedemails==''){
		alert('No friends specified!');
		return false;
	}
	if (typedemails !='' && !validateEmails(typedemails)){
		alert('Contains malformed emails');
		return false;
	}

	var optmsg = '';
	try{
		optmsg = $('emailmodal_' + assettype + '_' + assetid + '_msg').value;
	} catch(err){
	}


	var params= Object.clone(g_ajaxparams);

	params.assettype = assettype;
	params.assetid = assetid;
	params.friendids = friendstomail.join(',');
	params.typedemails = typedemails;
	params.optmsg = optmsg;
	new Ajax.Request(g_ajaxpath+'ajax/shareAsset.php'+g_ajaxsuffix, {
		method:'post',
		parameters: params,
		onSuccess: function(transport){
			if (redirect != null){
				top.location.href = tgt.href;
			} else {
				$('sharedmsg').style.display='';
				$('sharedmsg').fade({duration:5.0});
				for (var i=0; i< checkedboxes.length; i++){
					checkedboxes[i].checked=0;
				}
				ccfield.value = '';
				$('emailmodal_' + assettype + '_' + assetid + '_msg').value = '';
			}
		},
		onFailure: function(){ alert('Something went wrong...') }		
	});

	
}
function anonemail(assettype, tgt, redirect){
	var assetid=tgt.name;
	var emailmod = $('emailmod_' + assettype + '_' + assetid);
	var sendername = emailmod.getElementsByClassName('sendername')[0].value;
	var senderaddr = emailmod.getElementsByClassName('senderaddr')[0].value;
	var typedemails = emailmod.getElementsByClassName('cc')[0].value;
	//var optmsg = emailmod.getElementsByClassName('optmsg')[0].value;
	var optmsg = '';
	if (sendername == '' || senderaddr=='' || typedemails==''){
		alert('Please complete all required fields');
		return false;
	}
	if (!validateEmails(typedemails)){
		alert('Contains malformed emails');
		return false;
	}

	var params= Object.clone(g_ajaxparams);
	params.assettype = assettype;
	params.assetid = assetid;
	params.sendername = sendername;
	params.senderaddr = senderaddr;
	params.typedemails = typedemails;
	params.optmsg = optmsg;
	new Ajax.Request(g_ajaxpath+'ajax/shareAsset.php'+g_ajaxsuffix, {
		method:'post',
		parameters: params,
		onSuccess: function(transport){
			if (redirect != null){
				top.location.href = tgt.href;
			} else {
				$('sharedmsg').style.display='';
				$('sharedmsg').fade({duration:5.0});
				emailmod.getElementsByClassName('cc')[0].value = '';
			}
		},
		onFailure: function(){ alert('Something went wrong...') }		
	});
}
function selectCheckFriend(tgt) {
	var inputId = tgt.id;
	var friendText = tgt.adjacent('span.friendtext')[0];
	var fname = friendText.getElementsByTagName('span')[0].innerHTML;
	var femail = friendText.getElementsByTagName('span')[1].innerHTML;

	var listDivId = "friend" + inputId.match(/\d+/);
	var listDiv = document.getElementById(listDivId);
	
	if (listDiv) {
		listDiv.remove();
	} else {
		var listLink = new Element('a',{'href':'#'}).update('x');
		listLink.observe('click',deselectFriend);
		var listSpan = new Element('span',{'class':'listname'}).update(fname+femail);
		listSpan.appendChild(listLink);
		listDiv = new Element('div', {'class':'cclistitem','id':listDivId}).update(listSpan);
		Element.insert($('cclist'),listDiv);
	}
}
function deselectFriend(evt) {
	
	friendId = evt.element().parentNode.parentNode.id;
	idNum = friendId.match(/\d+/);
	inputId = "emailasset" + idNum;
	$(inputId).checked = false;
	$(friendId).remove();
}

function populateEmailList(){
	var checkedfriends = $('friendselbox').getElementsByTagName('input');
for (var i=0; i<checkedfriends.length; i++) {
		if (checkedfriends[i].checked==true) {
			var inputId = checkedfriends[i].id;
			var checkedfriend = checkedfriends[i].parentNode.parentNode;	
			var friendText = checkedfriend.getElementsByClassName('friendtext')[0];
			
			var fname = friendText.getElementsByTagName('span')[0].innerHTML;
			var femail = friendText.getElementsByTagName('span')[1].innerHTML;

			var listDivId = "friend" + inputId.match(/\d+/);
			var listDiv = document.getElementById(listDivId);
	
			var listLink = new Element('a',{'href':'#'}).update('x');
			listLink.observe('click',deselectFriend);
			var listSpan = new Element('span',{'class':'listname'}).update(fname+femail);
			listSpan.appendChild(listLink);
			listDiv = new Element('div', {'class':'cclistitem','id':listDivId}).update(listSpan);
			Element.insert($('cclist'),listDiv);
		}
	}
}	
function blankOutAddresses(tgt) {
	if (tgt.value && (tgt.value == 'Enter multiple email addresses separated by commas' || tgt.value=='Enter up to 5 email addresses separated by commas')) {
		tgt.value='';
	} else if (tgt.innerHTML == 'Enter multiple email addresses separated by commas' || tgt.innerHTML == 'Enter up to 5 email addresses separated by commas') {
		tgt.innerHTML = '';
	} 
}
function addMessageBoxDisplay(assetid) {
	$('addmsgbox_'+assetid).style.display = '';	
}
function opensharemod(tgt) {
	$('shareclosed').hide();
	$('shareopen').show();
}
function closesharemod(tgt) {
	$('shareclosed').show();
	$('shareopen').hide();
}
/**  Modals **/
/*  width and height needs to be passed togeter.. */
function modalOpen(content,width,height) {
	g_window = new UI.Window({shadow: true, resizable:false, draggable:false});
	if (width) {
		g_window.setSize(width,height);
	}
	g_window.setZIndex(99999);
	g_window.setContent(content);
	g_window.center();
	g_window.show(true).focus();
	
}
function modalClose() {
	g_window.hide();
}
/*** Modals ***/

function loginModal(optionalDest, hasanonsessiondata,loginmessage) {
	var loginContent = '<div class="loginbox clearfix">';
	loginContent += '<form name="login" accept-charset="iso-8859-1" class="loginsec" id="pass" method="POST" action="/init.php">';
  loginContent += '<input type="hidden" name="js_enabled" value="0"/>';
  loginContent += '<input type="hidden" name="password"/>';
  loginContent += '<input type="hidden" name="tmz" id="tmz"/>';
  loginContent += '<input type="hidden" name="seed" value="hellothere" />';

  if (optionalDest == null || optionalDest == ''){
    loginContent += '<input type="hidden" name="dest" value="' + window.location +'">';
	} else {
    loginContent += '<input type="hidden" name="dest" value="' + optionalDest +'">';
	}
  loginContent += '<div class="railstyle">';
	loginContent += '<div class="modu_head"><h1>Login and Sign Up</h1></div>';
	loginContent += '</div>';
  if (loginmessage) {
		loginContent += '<div class="loginmessage">'+loginmessage+'</div>';
	}
	loginContent += '<div class="loginbody">';
	loginContent += '<div class="loginlabel">Email:</div>';
  loginContent += '<div class="logininput"><input name="email" type="text"/></div>';
  loginContent += '<div class="loginlabel">Password:</div>';

  loginContent += '<div class="logininput"><input name="passwd" type="password"/></div>';
  loginContent += '<div class="loginbutton clearfix">';
  loginContent += '<a href="#" class="buttonTV" onclick="loginSubmit();return false;"><span>Login</span></a>';
  loginContent += '</div>';

  var signuplink;
  if (optionalDest != null){
    if (hasanonsessiondata != null && hasanonsessiondata){
      signuplink = "/register.php?dest=" + optionalDest + "&anondata=true";
    } else {
      signuplink = "/register.php?dest=" + optionalDest;
    }
  } else {
    signuplink = "/register.php";
  }

  loginContent += '<div class="signuplink"><a href="'+signuplink+'">NEW? Sign up here!</a></div>';
  loginContent += '<div class="forgotpw"><a href="/forgotpassword.php">Forgot your password?</a></div>';
  loginContent += '</div>';	
  loginContent += '</form>';
  loginContent += '</div>';
  var objects=document.getElementsByTagName("object");
  for(var i=0;i<objects.length;i++){
    objects[i].style.display="none";
  }
  modalOpen(loginContent,300,270);
}
function loginSubmit() {
	var loginForm = $('pass');
	hash(loginForm);
	loginForm.submit();
	modalClose();
}
/**** Start header and Subheader ****/

var MoreShowsMenu = {
    timeout : null,
    showMore : function(){
        clearTimeout(this.timeout);
        if($('moreshowsbox').style.display == 'none'){
            this.timeout = setTimeout(function(){new Effect.BlindDown('moreshowsbox', {duration:.3, fps:40})},250);
        }
    },
    hideMore : function(){
        if($('moreshowsbox').style.display == 'none'){
            clearTimeout(this.timeout);
        }else{
            this.timeout = setTimeout(function(){new Effect.BlindUp('moreshowsbox', {duration:.3, fps:40})},150);
        }
    }    
}
var MyShowsMenu = {
    timeout : null,
    showMore : function(){
        clearTimeout(this.timeout);
        if($('myshowsbox').style.display == 'none'){
            this.timeout = setTimeout(function(){new Effect.BlindDown('myshowsbox', {duration:.3, fps:40})},250);
        }
    },
    hideMore : function(){
        if($('myshowsbox').style.display == 'none'){
            clearTimeout(this.timeout);
        }else{
            this.timeout = setTimeout(function(){new Effect.BlindUp('myshowsbox', {duration:.3, fps:40})},150);
        }
    }    
}
function showMoreShows(tgt){
	MoreShowsMenu.showMore();
}

function hideMoreShows(tgt) {
	MoreShowsMenu.hideMore();
}
function showAllShows() {
	MyShowsMenu.showMore();
}
function hideAllShows() {
	MyShowsMenu.hideMore();
}
function headerShowStripe(tgt){
	Element.addClassName(tgt,"rollover");
}
function headerShowUnStripe(tgt){
	Element.removeClassName(tgt,"rollover");
}
/**** End header and Subheader ****/


/*** Start report asset functions ***/
function reportAssetModal(type,id,locid,defmsg){
    
	if(!defmsg)
  	defmsg="";
 
	var modalcontent = "<div class='railstyle reportassets' id='reportasset'>";
	modalcontent +="<div class='modu_head'><h1>Report</h1></div>";
	modalcontent +="<div class='modu_body'>";
	modalcontent +='<div class="tvloop_error" style="display:none;"><h2>Please give a reason.</h2></div>';
	modalcontent +='<div>Reason for reporting this:</div>';
	modalcontent +='<div><inputype="radio" name="rptrsn"/><span>inappropriate content</span></div>';
	modalcontent +='<div><input type="radio" name="rptrsn"/><span>incorrect information</span></div>';
	modalcontent +='<div><input type="radio" name="rptrsn"/><span>misspelling</span></div>';
	modalcontent +='<div><input type="radio" name="rptrsn"/><span>duplicate</span> '+type+'</div>';
	modalcontent +='<div class="textlabel">Please explain:</div><textarea>'+defmsg+'</textarea>';
	modalcontent +='<div class="btndiv clearfix">';
	modalcontent +='<a href="#" class="buttonTV" onclick="reportAssetModalDo(\''+type+'\',\''+id+'\',\''+locid+'\');"><span>Submit</span></a>';
	modalcontent +='<a href="#" class="buttonTV" onclick="reportAssetModalHide(\''+type+'\',\''+id+'\');"><span>Cancel</span></a>'
	modalcontent+='</div>';
	modalcontent +="</div>";
	modalcontent +="</div>";
	modalOpen(modalcontent,250,320);
}

function reportedAssetModal(type){
  var x=document.getElementById("rprtedmod"+type);
  if(x)
    x.style.display="block";
  else{
    x=document.createElement("div");
    x.id="rprtedmod"+type;
    x.style.height="130px";
    x.className="rprtmod";
    x.innerHTML='<div class="wctv" style="height:110px;"><div class="hd">Reported<a href="#" onclick="reportedAssetModalHide(\''+type+'\');return false;">x</a></div><div><center>This '+type+' has already been reported.</center></div><br/><div class="btndiv"><input type="button" class="buttonFB" onclick="reportedAssetModalHide(\''+type+'\');" value="OK"/></div></div>';
    document.getElementsByTagName("body")[0].appendChild(x);
  }
}
function reportedAssetModalHide(type){
	modalClose();
}
var rprtmodtimeout;
function reportAssetModalDo(type,id,locid){
  var mod=$("reportasset");
	var explain=mod.getElementsByTagName("textarea")[0].value;
  var ipts=mod.getElementsByTagName("input");
  var errtype="";
  for(var i=0;i<4;i++){
    if(ipts[i].checked){
      errtype=ipts[i].parentNode.getElementsByTagName('span')[0].innerHTML;
      break;
    }
  }
  if (errtype=="") {
    mod.getElementsByClassName('tvloop_error')[0].style.display="block";
		return false;
	}
	if(explain.length==0){
    mod.getElementsByClassName('tvloop_error')[0].style.display="block";
    return false;
  }
  var params= Object.clone(g_ajaxparams);
  params.type = type;
  params.rid = id;
  params.explain = explain;
  params.reason = errtype;
  new Ajax.Request(g_ajaxpath+'ajax/reportAsset.php'+g_ajaxsuffix, {
    method:'post',
    parameters: params,
    onSuccess: function(transport){
      document.getElementById(locid).innerHTML="<i>Report Submitted</i>";
      var modalcontent = '<div class="railstyle reportedassets"><div class="modu_head"><h1>Report</h1></div>';
			modalcontent += '<div class="thanks">Thanks, your report has been submitted!</div>';
			modalcontent += '<div class="btndiv"><a href="#" class="buttonTV" onclick="reportAssetModalHide(\''+type+'\',\''+id+'\');"><span>OK</span></a></div></div>';
			if (g_window) {
				modalClose();
			}
			modalOpen(modalcontent,200,150);
			rprtmodtimeout=setTimeout('reportAssetModalHide(\''+type+'\',\''+id+'\');',2000);
    },
    onFailure: function(){ alert('Something went wrong...') }
  });
}
function reportAssetModalHide(type,id){
 	modalClose();
}
/*** End report asset functions ***/

/** start  onload events **/
/*if email forwarding module exists.. populate email list*/
/*
if ($('friendselbox')) {
	Event.observe(window, 'load', populateEmailList);
}
*/
if ($('sharedmsg')) {
	Event.observe(window, 'load', function() {$('sharedmsg').fade();});
}
if ($('successmsg')) {
	Event.observe(window, 'load', function() {$('successmsg').fade();});
}
/** end  onload events **/
/** Add to/Added to my shows header button **/
function favoriteShowHeader(tgt, showid){
	var params= Object.clone(g_ajaxparams);
	params.action = "add";
	params.effectshowid = showid;
	new Ajax.Request(g_ajaxpath+'ajax/addFavShow.php'+g_ajaxsuffix, {
method:'post',
parameters:params,
onSuccess: function(transport){
$('remfavorite').style.display = '';
$('addfavorite').style.display = "none";
},
onFailure:function(){}
});
}

function removeShowHeader(showid){
	var params= Object.clone(g_ajaxparams);
	params.action = "remove";
	params.effectshowid = showid;
	new Ajax.Request(g_ajaxpath+'ajax/addFavShow.php'+g_ajaxsuffix, {
method:'post',
parameters:params,
onSuccess: function(transport){
$('remfavorite').style.display = "none";
$('addfavorite').style.display = "";
},
onFailure:function(){}
});
}
function selectCode(tgt) {
	tgt.focus();
	tgt.select();
}
function handleSelect(selectedDiv) {
	var showname=selectedDiv.innerHTML.stripTags();
	showname=showname.strip();
	showname=showname.toLowerCase();
	showname=showname.replace(/ /g,"-");
	showname=showname.replace(/[^a-zA-Z 0-9 -]+/g,'');
	var url = $$('div.homelink')[0].getElementsByTagName('a')[0].href;
	url += showname + "/show/";
	window.location=url;
}
function blankOut(tgt){
	if (tgt.value=="Find a Show") {
		tgt.value="";
	}
}
function fillDefault(tgt){
	if (tgt.value=="") {
		tgt.value="Find a Show";
	}
}
Event.observe(window,'load',function() {
	if (faveShows.length>0){
		var orderedShows = faveShows.concat(alphaShows);
		orderedShows = orderedShows.uniq();
	} else {
		orderedShows = alphaShows;
	}
	new Autocompleter.Local('typeShowBox','typeSuggestBox',orderedShows,{choices:5,particalSearch:true,partialChars:1,ignoreCase:true});
});
