function plink(u) {
	if(window.opener) {
		window.opener.location.href = u;
	} else {
		window.open(u, '_blank', 'width=800, height=600, resizable=yes, scrollbars=yes');
	}
}

function setcart(html) {
	if(window.opener.document.getElementById('lnk_cart')) {
		window.opener.document.getElementById('lnk_cart').innerHTML = html;
	}
}

function xoffset(){
	var x;
	if (self.pageYOffset) // all except Explorer
	{
		x = self.pageXOffset;
	}
	else if (document.documentElement && document.documentElement.scrollTop)
		// Explorer 6 Strict
	{
		x = document.documentElement.scrollLeft;
	}
	else if (document.body) // all other Explorers
	{
		x = document.body.scrollLeft;
	}

	return x;
}

function yoffset(){
	var y;
	if (self.pageYOffset) // all except Explorer
	{
		y = self.pageYOffset;
	}
	else if (document.documentElement && document.documentElement.scrollTop)
		// Explorer 6 Strict
	{
		y = document.documentElement.scrollTop;
	}
	else if (document.body) // all other Explorers
	{
		y = document.body.scrollTop;
	}
	return y;
}

function pagewidth(){
	var x;
	var test1 = document.body.scrollHeight;
	var test2 = document.body.offsetHeight
	if (test1 > test2) // all but Explorer Mac
	{
		x = document.body.scrollWidth;
	}
	else // Explorer Mac;
		 //would also work in Explorer 6 Strict, Mozilla and Safari
	{
		x = document.body.offsetWidth;
	}

	return x;
}

function pageheight(){
	var y;
	var test1 = document.body.scrollHeight;
	var test2 = document.body.offsetHeight
	if (test1 > test2) // all but Explorer Mac
	{
		y = document.body.scrollHeight;
	}
	else // Explorer Mac;
		 //would also work in Explorer 6 Strict, Mozilla and Safari
	{
		y = document.body.offsetHeight;
	}

	return y;
}

// AJAX Functions

// Inits a Request Object
function reqObj(){
	if (window.XMLHttpRequest) { // Mozilla, Safari, ...
   		req = new XMLHttpRequest();
	} else if (window.ActiveXObject) { // IE
		req = new ActiveXObject("Microsoft.XMLHTTP");
	}
	return req;
}

//Sends the Request
function ajLoad(source, target){
	var req = reqObj();
	req.onreadystatechange = function(){
		ajSet(target);
	}
	req.open('GET', source, true);
	req.send(null);
	if(req.readyState == 1){
		//document.getElementById(target).innerHTML = '<div align="center" style="width:100%;height:100%;vertical-align:middle;" >... loading ...</div>';

		document.getElementById('limg').style.top = yoffset()+320+'px';// document.body.offsetHeight/2-35+'px';
		document.getElementById('limg').style.left = pagewidth()/2-150+'px';
		document.getElementById('loader').style.height = pageheight()+'px';
		document.getElementById('loader').style.width = pagewidth()+'px';
		document.getElementById('loader').style.display = "block";
		document.getElementById('limg').style.display = "block";
	}
}

//Sends the Request silently
function ajLoadSilent(source, target){
	var req = reqObj();
	req.onreadystatechange = function(){
		ajSet(target);
	}
	req.open('GET', source, true);
	req.send(null);
	if(req.readyState == 1){
		//document.getElementById(target).innerHTML = '<div align="center" style="width:100%;height:100%;vertical-align:middle;" >... loading ...</div>';
		//document.getElementById('loader').style.display = "block";
		//document.getElementById('limg').style.display = "block";
	}
}

// Sets the recieved Data in target div
// used by ajLoad
function ajSet(target){
	if (req.readyState == 4) {
		document.getElementById('loader').style.display = "none";
		document.getElementById('limg').style.display = "none";
		if (req.status == 200) {
			document.getElementById(target).innerHTML = req.responseText;
		} else {
			alert('Bei dem Request ist ein Problem aufgetreten.'+req.status);
		}
	}
}

function playSong_int(str){
	document.getElementById('dot_player').SetVariable("song_id", str);
	// AddToPlaylist
}
function playSong(id, typ){
	var win_height = 316;
	var win_width = 351;
	var win_left = (screen.width - win_width) / 2;
	var win_top = (screen.height - win_width) / 2;
	var plwin = window.open(document.WEB_PATH+'/player/dot_player.php?id='+id+'&type='+typ, 'plwin', 'width='+win_width+', height='+win_height+', left='+win_left+', top='+win_top+', menubar=no, resizable=no, scrollbars=no, status=no, toolbar=no');
	plwin.focus();
}


function showAjaxMessage(str, reload_flag, timeout){
	document.getElementById('aj_msg_cont').style.top = yoffset()+320+'px';//document.body.offsetHeight /2-35+'px';
	document.getElementById('aj_msg_cont').style.left = document.body.offsetWidth/2-150+'px';
	document.getElementById('aj_msg_cont').style.display = 'block';
	document.getElementById('aj_msg_cont_bg').style.display = 'block';
	document.getElementById('aj_msg_cont_txt').style.display = 'block';
	document.getElementById('aj_msg_cont_message').innerHTML = str;

	document.getElementById('loader').style.height = pageheight()+'px';
	document.getElementById('loader').style.width = pagewidth()+'px';
	document.getElementById('loader').style.display = "block";

	if(!timeout) var timeout =  2000;
	setTimeout(hideAjaxMessage, timeout, reload_flag);
}

function hideAjaxMessage(reload_flag){
	document.getElementById('aj_msg_cont').style.display = 'none';
	document.getElementById('aj_msg_cont_bg').style.display = 'none';
	document.getElementById('aj_msg_cont_txt').style.display = 'none';
	document.getElementById('loader').style.display = "none";
	document.getElementById('aj_msg_cont_message').innerHTML = '&nbsp;';
	if(reload_flag) document.location.href = document.location;
}

function delFav(id_num){
	var req = reqObj();
	req.open('GET', document.WEB_PATH+'misc/delete_favourite.php?delid='+id_num, true);
	req.send(null);

	req.onreadystatechange = function(){
		if (req.readyState == 4) {
			if (req.status == 200) {
				showAjaxMessage('Favourite was deleted', true);
			} else {
				alert('[ERROR on deleting Favourite]\n[--- '+req.status+' ---]');
			}
		}
	}
}


function addtocart(id_num){
	var req = reqObj();
	req.open('GET', document.WEB_PATH+'player/xml/addtocart.php?id='+id_num, true);
	req.send(null);

	req.onreadystatechange = function(){
		if (req.readyState == 4) {
			if (req.status == 200) {
				if(req.responseText.length > 3){
					// Preorder
					showAjaxMessage(req.responseText, false, 7000);
				} else {
					if(document.getElementById('cart_items')){
						document.getElementById('cart_items').innerHTML = req.responseText;
					}

					document.getElementById('cartalertcont').style.top = yoffset()+320+'px';//document.body.offsetHeight /2-35+'px';
					document.getElementById('cartalertcont').style.left = document.body.offsetWidth/2-150+'px';
					document.getElementById('cartalertcont').style.display = 'block';
					document.getElementById('cartalertbg').style.display = 'block';
					document.getElementById('cartalerttext').style.display = 'block';
					
					document.getElementById('loader').style.height = pageheight()+'px';
					document.getElementById('loader').style.width = pagewidth()+'px';
					document.getElementById('loader').style.display = "block";
					
					setTimeout(hidecartalert, 2000);
				}
			} else {
				alert('[-->addtocart<--]\n[--- '+req.status+' ---]');
			}
		}
	}
}

function addmanytocart(arr){
	// Yeeeehaaa! Jason for President!
	arr_str = arr.join('|');
	var req = reqObj();
	req.open('GET', document.WEB_PATH+'player/xml/addmanytocart.php?ids='+arr_str, true);
	req.send(null);

	req.onreadystatechange = function(){
		if (req.readyState == 4) {
			if (req.status == 200) {
				if(req.responseText.length > 3){
					// Preorder
					var parts = req.responseText.split("#");
					document.getElementById('cart_items').innerHTML = parts[0];
					showAjaxMessage(parts[1], false, 5000);
				} else {
					if(document.getElementById('cart_items')){
						document.getElementById('cart_items').innerHTML = req.responseText;
					}


					document.getElementById('cartalertcont').style.top = yoffset()+320+'px';//document.body.offsetHeight /2-35+'px';
					document.getElementById('cartalertcont').style.left = document.body.offsetWidth/2-150+'px';
					document.getElementById('cartalertcont').style.display = 'block';
					document.getElementById('cartalertbg').style.display = 'block';
					document.getElementById('cartalerttext').style.display = 'block';
					
					document.getElementById('loader').style.height = pageheight()+'px';
					document.getElementById('loader').style.width = pagewidth()+'px';
					document.getElementById('loader').style.display = "block";
					
					setTimeout(hidecartalert, 2000);
				}
			} else {
				alert('[-->addtocart<--]\n[--- '+req.status+' ---]');
			}
		}
	}

}



function hidecartalert(){
	document.getElementById('cartalertcont').style.display = 'none';
	document.getElementById('cartalertbg').style.display = 'none';
	document.getElementById('cartalerttext').style.display = 'none';
	document.getElementById('loader').style.display = "none";
	if(document.location == document.WEB_PATH+"user/cart.php") document.location.href=document.location;
}



function toggleLogIn(){
	if(document.getElementById('login_form').style.display == "none"){
		document.getElementById('cartbox').style.display = "none";
		document.getElementById('login_form').style.display = "block";
	} else if(document.getElementById('login_form').style.display == "block"){
		document.getElementById('cartbox').style.display = "block";
		document.getElementById('login_form').style.display = "none";
	}
}

function nextEps(){
	if(document.getElementById('latest_ep_page')){
		var curr_page = parseInt(document.getElementById('latest_ep_page').value);
		var next_page = curr_page + 1;
	} else {
		var next_page = 0;
	}
	ajLoad('news/latest_eps.php?latest_ep_page='+next_page, 'main_eps');
}
function prevEps(){
	if(document.getElementById('latest_ep_page')){
		var curr_page = parseInt(document.getElementById('latest_ep_page').value);
		var next_page = curr_page - 1;
	} else {
		var next_page = 0;
	}
	ajLoad('news/latest_eps.php?latest_ep_page='+next_page, 'main_eps');
}



function firstLetter(theLetter) {
	ajLoad('cont_labels.php?first_letter='+theLetter, 'ajax-labels');
}

function firstLetterArtist(theLetter) {
	ajLoad('cont_artists.php?first_letter='+theLetter, 'ajax-artists');
}

function browseLetter(what,theLetter) {
	ajLoad('cont_browse.php?what='+what+'&first_letter='+theLetter, 'ajax-browse');
}

function rateItem(userid,albumid,trackid,rating,goon) {
	var req = reqObj();
	req.open('GET', document.WEB_PATH+'misc/rate_item.php?userid='+userid+'&albumid='+albumid+'&trackid='+trackid+'&rating='+rating, true);
	req.send(null);

	req.onreadystatechange = function(){
		if (req.readyState == 4) {
			if (req.status == 200) {
				document.getElementById('ratealertcont').style.display = 'block';
				document.getElementById('ratealertbg').style.display = 'block';
				document.getElementById('ratealerttext').style.display = 'block';
				
				document.getElementById('loader').style.height = pageheight()+'px';
				document.getElementById('loader').style.width = pagewidth()+'px';
				document.getElementById('loader').style.display = "block";
				
				setTimeout(hideRateAlert,2000,userid,albumid,goon,trackid);
			} else {
				alert('[-->rateItem<--]\n[--- '+req.status+' ---]');
			}
		}
	}
}

function hideRateAlert(userid,albumid,goon,trackid) {
	document.getElementById('ratealertcont').style.display = 'none';
	document.getElementById('ratealertbg').style.display = 'none';
	document.getElementById('ratealerttext').style.display = 'none';
	document.getElementById('loader').style.display = "none";
	if (goon == 'yes') writeComment(userid,albumid,trackid);
	window.location.href = window.location.href;
}

function addToMyFavorites(userid,itemid) {
	var req = reqObj();
	req.open('GET', document.WEB_PATH+'misc/add_favorite.php?userid='+userid+'&itemid='+itemid, true);
	req.send(null);

	req.onreadystatechange = function(){
		if (req.readyState == 4) {
			if (req.status == 200) {
				showAjaxMessage('The Track was added to your favorites!');
				if(document.getElementById('fav_items')) document.getElementById('fav_items').innerHTML = req.responseText;
			} else {
				alert('[-->addToMyFavorites<--]\n[--- '+req.status+' ---]');
			}
		}
	}
}

function emailToFriend(userid,albumid,trackid) {
	/*alert("User "+userid+"\n Album "+albumid);*/
	var win_email = window.open(document.WEB_PATH+"misc/email_friend.php?userid="+userid+"&albumid="+albumid+"&trackid="+trackid,"win_email","width=450,height=480");
	win_email.focus();
}

function writeComment(userid,albumid,trackid) {
	/*alert("User "+userid+"\n Album "+albumid);*/
	var win_comment = window.open(document.WEB_PATH+"misc/write_comment.php?userid="+userid+"&albumid="+albumid+"&trackid="+trackid,"win_comment","width=450,height=430");
	win_comment.focus();
}

function addSearchVal(searchval) {
	var req = reqObj();
	req.open('GET', document.WEB_PATH+'misc/add_searchval.php?val='+searchval, true);
	req.send(null);

	req.onreadystatechange = function(){
		if (req.readyState == 4) {
			if (req.status == 200) {
				/*alert("Searchval added!");*/
			} else {
				alert('[-->addSearchVal<--]\n[--- '+req.status+' ---]');
			}
		}
	}
}

function check_email(inid, outid){
	var email = document.getElementById(inid).value;
	var filter=/^.+@.+\..{2,4}$/;
	if (filter.test(email)){
		return true;
	} else {
		document.getElementById(outid).innerHTML = "Plese Enter a valid eMail address";
		return false;
	}
}

function checkmail(email){
	var filter=/^.+@.+\..{2,4}$/;
	return filter.test(email);
}



function checkAll(field) {
	var checkflag = "false";
	alert(field.length);
	if (checkflag == "false") {
		for (i = 0; i < field.length; i++) {
			field[i].checked = true;
		}
		checkflag = "true";
		return "Uncheck All";
	} else {
		for (i = 0; i < field.length; i++) {
			field[i].checked = false;
		}
		checkflag = "false";
		return "Check All";
	}
}

function opn_link(link){
	window.opener.location.href = link;
}



function showToolTip(e, album_id){
	// No Id Hack
	if(album_id!=''){
	
		if(document.all)e = event;
		
		var obj = document.getElementById('tooltip');
		var obj2 = document.getElementById('tooltip_cont');
		
		
		if(obj.style.display != 'block'){
			obj.style.display = 'block';
			obj2.innerHTML = '<img src="img/tooltip_loader.gif" border="0"/>';
			new Ajax.Updater('tooltip_cont', document.WEB_PATH+'misc/album_tooltip.php?a='+album_id,
								{method: 'get',
								onComplete: fillToolTip
								});
		}
		
		var st = Math.max(document.body.scrollTop,document.documentElement.scrollTop);
		if(navigator.userAgent.toLowerCase().indexOf('safari')>=0)st=0; 
		var leftPos = e.clientX - 133;
		if(leftPos<0)leftPos = 0;
		obj.style.left = leftPos + 'px';
		obj.style.top = e.clientY - obj.offsetHeight -150 + st + 'px';
	
	}
	
}

function fillToolTip(req){
	var obj = document.getElementById('tooltip_cont');
	obj.innerHTML = req.responseText;
	//var oh = obj.style.height;
	//obj.style.top -= oh;	
}

function posToolTip(e){
	if(document.all)e = event;
	var obj = document.getElementById('tooltip');
	var st = Math.max(document.body.scrollTop,document.documentElement.scrollTop);
	if(navigator.userAgent.toLowerCase().indexOf('safari')>=0)st=0; 
	var leftPos = e.clientX - 133;
	if(leftPos<0)leftPos = 0;
	obj.style.left = leftPos + 'px';
	obj.style.top = e.clientY - obj.offsetHeight -10 + st + 'px';
}

function removeToolTip(){
	document.getElementById('tooltip').style.display = 'none';
}

