// SITE DOMAIN NAME VARIABLE
var siteDomainName = 'tuppashare.com';

// Windows
function NewWindow(mypage, myname, w, h, scroll) {
	var winl = (screen.width - w) / 2;
	var wint = (screen.height - h) / 2;
	winprops = 'height='+h+',width='+w+',top='+wint+',left='+winl+',scrollbars='+scroll+',resizable'
	win = window.open(mypage, myname, winprops)
	win.window.focus();
}

// Check if is integer
function isInteger(s){
	return parseInt(s,10)===s;
}

// Number Format
function formatNumber(nStr,type) {
	nStr += '';
	x = nStr.split('.');
	x1 = x[0];
	x2 = x.length > 1 ? '.' + x[1] : '';
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(x1)) {
		x1 = x1.replace(rgx, '$1' + ',' + '$2');
	}
	if(nStr == 'NaN') {
	return '?';
	} else if(type == 'pounds') {
	return '&#163;' + x1 + x2;
	} else {
	return x1 + x2;
	}
}

// PopText
function popText(projectID, w, h, scroll) {
	var winl = (screen.width - w) / 2;
	var wint = (screen.height - h) / 2;
	winprops = 'height='+h+',width='+w+',top='+wint+',left='+winl+',scrollbars='+scroll+',resizable'
	mypage = '/pop_text.php?ProjectID='+projectID
	myname = 'Pop'
	win = window.open(mypage, myname, winprops)
	if (parseInt(navigator.appVersion) >= 4) { win.window.focus(); }
}

// CloseWindow
function closeWindow(divID) {
	if(typeof contentID != 'undefined' && typeof parentContentID != 'undefined') {
	cancelUpdatePgTitle}
	displayNone(divID);
}

// WhatsThis
function whatsThis(getInfo,id,position,width,height,offsetLeft,offsetTop,clearDivs) {
	var boxWidth = parseInt(width) + 42;
	var boxHeight = parseInt(height) + 42;
	var info = document.getElementById(getInfo).innerHTML;
	for(i=0;i<clearDivs.length;i++) {
		displayNone(clearDivs[i]);
	}
	displayBlock(id);
	document.getElementById(id).innerHTML = '<div id="hoverbox" style="width: ' + boxWidth + 'px; top: ' + offsetTop + 'px; left: ' + offsetLeft + 'px;"><table cellpadding="0" cellspacing="0" border="0"><tr><td rowspan="2" colspan="2" class="hoverbox_top_l"></td><td class="hoverbox_hclear" style="width: ' + width + 'px;"><img src="/assets/images/spacer.gif" width="10" height="7" /></td><td rowspan="2" colspan="2" class="hoverbox_top_r"></td></tr><tr><td class="hoverbox_hwhite"><img src="/assets/images/spacer.gif" width="10" height="9" /></td></tr><tr><td class="hoverbox_vclear"><img src="/assets/images/spacer.gif" width="7" height="10" /></td><td class="hoverbox_vwhite"><img src="/assets/images/spacer.gif" width="9" height="10" /></td><td class="hoverbox_content"><img src="/assets/images/spacer.gif" class="arrow_' + position + '"/><a href="javascript:void(0);" onclick="javascript:closeWindow(\'' + id + '\'); return false;" class="x_close"></a><span id="' + id + '_info_error" class="info_error"></span><span>' + info + '</span></td><td class="hoverbox_vwhite"><img src="/assets/images/spacer.gif" width="9" height="10" /></td><td class="hoverbox_vclear"><img src="/assets/images/spacer.gif" width="7" height="10" /></td></tr><tr><td rowspan="2" colspan="2" class="hoverbox_bottom_l"></td><td class="hoverbox_hwhite"><img src="/assets/images/spacer.gif" width="10" height="9" /></td><td rowspan="2" colspan="2" class="hoverbox_bottom_r"></td></tr><tr><td class="hoverbox_hclear"><img src="/assets/images/spacer.gif" width="10" height="7" /></td></tr></table></div>';
}

//More
function more(div) {
	var spanDiv = 'more_' + div;
	var linkDiv = spanDiv + '_link';
	displayInline(spanDiv);
	displayNone(linkDiv); 
}

// Switch Class
function switchClass(divID,newClass) {

	if (document.getElementById) { // DOM3 = IE5, NS6
		document.getElementById(divID).className = newClass;
	}
	else {
		if (document.layers) { // Netscape 4
			document.divID.className = newClass;
		}
		else { // IE 4
			document.all.divID.className = newClass;
		}
	}
}

// Rollovers
var loaded = new Array();

function rollover_load(image,imageName) {
   if (image && image.src &&
    (null == image.out || typeof(image.out) == typeof(void(0)))) {
      s = image.src;
      image.out = new Image();
      image.out.src = s;
      image.over = new Image();
      if (imageName.lastIndexOf('/') >= 0 || imageName.lastIndexOf('\\') >=0) {
         s = imageName;
      } else {
         i = s.lastIndexOf('/');
         if (i<0) i = s.lastIndexOf('\\');
         if (i<0) {
         	s = imageName;
         } else {
         	s = s.substring(0,i+1) + imageName;
         }
      }
      image.over.src = s;
      loaded[image.name] = image;
   }
}

function rollover(imageName,over) {
   if (document.images) {
      if (over) { imageObject = "over"; }
      else      { imageObject = "out"; }
   image = loaded[imageName];
   if (image) {
       ref = eval("image."+imageObject);
       if (ref) image.src = eval("image."+imageObject+".src");
   }
   if (window.event)
      window.event.cancelBubble = true;
   }
}

// Detect Arrows
function checkArrows (field, evt) {
  var keyCode =
    document.layers ? evt.which :
    document.all ? event.keyCode :
    document.getElementById ? evt.keyCode : 0;
  var r = '';
  if (keyCode == 39)
    r += 'arrow right';
  else if (keyCode == 40)
    r += 'arrow down';
  else if (keyCode == 38)
    r += 'arrow up';
  else if (keyCode == 37)
    r += 'arrow left';
  r += ' ' + keyCode;
  alert(r);
  return true;
}

// Change Website Edit Mode

changeWebsiteMode = function() {
		var websiteMode = getCookie('WebsiteMode');
		if(websiteMode == 'edit') {
			websiteMode = 'preview';
			setCookie('WebsiteMode',websiteMode,0);
		} else {
			websiteMode = 'edit';
			setCookie('WebsiteMode',websiteMode,0);
		}
		location.reload();
	}
	
// Set, Get and Erase Cookies

function setCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/;domain=." + siteDomainName;
}

function getCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) {
	setCookie(name,"",-1);
}

// Fade In - Fade Out

function fadeIn(fadeDiv) {
	var fadeThis = "document.getElementById('" + fadeDiv + "').style.visibility = 'visible';";
	if (typeof fadeTimer != 'undefined') { clearTimeout(fadeTimer); }
	fadeTimer = setTimeout(fadeThis,0);
	//new Effect.Appear(fadeDiv);
}

function fadeOut(fadeDiv) {
	var fadeThis = "document.getElementById('" + fadeDiv + "').style.visibility = 'hidden';";
	//var fadeThis = new Effect.Fade(fadeDiv);
	fadeTimer = setTimeout(fadeThis,1000);
}

// Blind Up - Blind Down
function slideDiv(sliderDiv) {
	
if ($(sliderDiv).hasClassName('invisible')) {
					new Effect.SlideDown(sliderDiv);
					document.getElementById(sliderDiv).removeClassName('invisible');
					setCookie(sliderDiv, 'visible', 365);
					if (sliderDiv == 'bookmark_nav') {
					setTimeout("shadedLoop('nav_bookmarks','nav_bookmarks_shaded','999999')",100);}
					if(sliderDiv == 'publisher_holder') {
						if(document.getElementById('slide_profile')) { if ($('slide_profile').hasClassName('up')) { $('slide_profile').removeClassName('up');}}
					}
				} else {
					new Effect.SlideUp(sliderDiv);
					document.getElementById(sliderDiv).addClassName('invisible');
					setCookie(sliderDiv, 'invisible', 365);
					if(sliderDiv == 'publisher_holder') {
						if(document.getElementById('slide_profile')) { if (!$('slide_profile').hasClassName('up')) { $('slide_profile').addClassName('up');}}
					}
				}
				udtBg();
}

// Show Hide Div
function showHideDiv(showHideDiv) {
	
if ($(showHideDiv).hasClassName('invisible')) {
					document.getElementById(showHideDiv).removeClassName('invisible');
					setCookie(showHideDiv, 'visible', 365);
				} else {
					document.getElementById(showHideDiv).addClassName('invisible');
					setCookie(showHideDiv, 'invisible', 365);
				}
				
				udtBg();
}

// Submit Login
function submitLogin(loginDiv,url) {
		var responseDiv = loginDiv + '_response';
		var holderDiv = loginDiv + '_holder';
   					$(responseDiv).innerHTML = 'Checking..';
   					new Ajax.Updater(responseDiv, '/assets/p_login.php', {
		method: 'post',
		parameters : Form.serialize(loginDiv),
		onComplete: function(returned) {
			if(returned.responseText == '') {
				response(holderDiv,'loading');
				if (url.match(/^\/default[.]*/) || url.match(/^\/index[.]*/) || url.match(/^\/$/)) {
				location.href = '/store';
				} else {
				location.href = url;
				}
			}
		},
		asynchronous:true, 
		evalScripts:true
});
}

// Forget Me
function forgetMe(loginDiv) {
		var responseDiv = 'forget_me' + loginDiv;
		var emailID = 'Email' + loginDiv;
		if(document.getElementById(emailID)) {document.getElementById(emailID).value = '';}
		var passwordID = 'Password' + loginDiv;
		if(document.getElementById(passwordID)) {document.getElementById(passwordID).value = '';}
   					new Ajax.Updater(responseDiv, '/assets/p_login.php?ForgetMe=True&Ajax=True', {
   					asynchronous:true,
   					evalScripts:true
   					});
}

// Load Login
function loadLogin(loginDiv,unique,uniqueTitle,next,fid) {

	if(loginDiv == 'overlay_box') {
	if (typeof playingFlag != 'undefined') { if (playingFlag == true) { sendEvent('stop');}} displayBlock('overlay_box');hideElement('stage');displayNone('login_open');displayBlock('login_close'); }

	new Ajax.Updater(loginDiv, '/assets/ajax.php?task=loadLogin&DivID=' + loginDiv + '&Unique=' + unique + '&UniqueTitle=' + uniqueTitle + '&Next=' + next + '&FID=' + fid, {
		asynchronous:true,
		evalScripts:true
	});
}

// Submit Signup
function submitSignup() {
	var responseDiv = 'signup_response';
	response(responseDiv,'loading');
   		new Ajax.Request('/assets/p_signup.php?ajax=True', {
		method: 'post',
		parameters : Form.serialize('Register'),
		onSuccess: function(returned) {
			if(returned.responseText != '') {
				returnedData = eval(returned.responseText);
				udtSignup(returnedData[0],returnedData[1],returnedData[2],returnedData[3],returnedData[4],returnedData[5],returnedData[6],returnedData[7],returnedData[8],returnedData[9],returnedData[10],returnedData[11],returnedData[12]);
			}
		},
		asynchronous:true, 
		evalScripts:true
		});
	}

// Update Signup
function udtSignup(publisherProID,next,fid,action,username,fullname,email,commentID,comment,blogID,projectID,subscription,account) {
	if(action == 'Subscribe' && fid != 'Subscribe' && (account == 'Login' || account == 'Signup')) {
	var udtDiv = 'signup';
	udtAction = 'udtSignup';
	} else if(action == 'Subscribe' && fid != 'Subscribe') {
	var udtDiv = 'payments_window';
	udtAction = 'udtSignup';
	} else if(action == 'Subscribe' && fid == 'Subscribe') {
	var udtDiv = 'payments_window';
	udtAction = 'udtSubscribe';
	var loadWindow = 'Payments';
	} else if((action == 'Comment' || action == 'Forum') && (fid == 'Posted' || fid == 'Welcome!' || fid == 'Account Created')) {
		location.reload();
	} else if(action == 'Contact' && fid == 'Posted') {
	var currentUrl = window.location;
	if(window.location.search != '') {
	var fidParam = '&FID=' + fid;
	} else {
	var fidParam = '?FID=' + fid;
	}
	window.location = window.location + fidParam;
	} else if(action == 'Signup' && fid == 'Account Created') {
	window.location = '/create';
	} else if(action == 'Signup' && fid == 'Welcome!') {
	window.location = '/store';
	} else {
	var udtDiv = 'signup';
	udtAction = 'udtSignup';
	}
	if(action == 'Subscribe' && !$('payments_window') && udtDiv != 'signup') {
	window.location = next;
	} else {
	response(udtDiv,'loading');
   		new Ajax.Updater(udtDiv,'/assets/ajax.php?task='+udtAction+'&PublisherProID='+publisherProID+'&Next='+next+'&FID='+fid+'&Action='+action+'&Username='+username+'&FullName='+fullname+'&Email='+email+'&CommentID='+commentID+'&Comment='+comment+'&BlogID='+blogID+'&PlaylistID='+projectID+'&Subscription='+subscription+'&Account='+account+'&Window='+loadWindow, {
		asynchronous:true, 
		evalScripts:true
	});
	}
}

// Submit Form
function submitform(myform)
{
  document.myform.submit();
}

//Submit on Enter
function submitenter(divID,url,e)
{
var keycode =
    document.layers ? e.which :
    document.all ? event.keycode :
    document.getElementById ? e.keycode : 0;
    
    var keyCode = e.keycode;
if (keycode == 13)
{
submitLogin(divID,url);
return false;
}
else
return true;
}

// Confirm Credit Transaction
function confirmPurchase(type,id,responseDiv) {
		new Ajax.Updater(responseDiv, '/assets/ajax.php?task=creditsTransaction&type='+type+'&id='+id, {
		asynchronous:true, 
		evalScripts:true
	});
}

// Get Content
function getContent(page,name,id) {
		new Ajax.Request('/assets/ajax.php?task=getContent&page='+page+'&name='+name+'&id='+id, {
		method:'get',
		asynchronous:true, 
		evalScripts:true,
		onComplete: function(returned) {
		var responseData = returned.responseText;
			
        document.getElementById(name).innerHTML = responseData;
		udtBg();
		}
	});
}

// Load Content Scripts
var head;
var script;
 
head = $$('head')[0];

loadScript = function(resource) {
            var script = new Element('script', {
            	'type' : 'text/javascript',
            	'src' : resource
            });
            head.appendChild(script);
			alert(resource);
        }

// Edit Content
function editContent(id,name) {
		new Ajax.Updater(name, '/assets/ajax.php?task=editContent&id='+id, {
		asynchronous:true, 
		evalScripts:true,
		onComplete: function(returned) {
			udtBg();
		}
	});
}

// Edit Content
function addContent(action,pageName,contentTitle,contentName,parentPage) {
		new Ajax.Request('/assets/ajax.php?task=addContent&Action='+action+'&PageName='+pageName+'&ContentTitle='+contentTitle+'&ContentName='+contentName+'&ParentPage='+parentPage, {
		asynchronous:true, 
		evalScripts:true,
		onComplete: function(returned) {
			if(returned.responseText == 'Saved') {
			window.location.reload();
			} else {
			document.getElementById(contentName).innerHTML = returned.responseText;
			}
		}
	});
}

// Edit Comment
function editComment(publisherProID,projectID,blogID,commentID,action,uniqueUrl) {
		if(blogID != 0) {
			var commentsForm = document.BlogCommentsForm;
			var commentsDiv = 'blog_comments';
			var commentsResponse = 'blog_comments_response';
		} else if (projectID != 0) {
			var commentsForm = document.CommentsForm;
			var commentsDiv = 'comments';
			var commentsResponse = 'comments_response';
		} else {
			var commentsForm = document.CommentsForm;
			var commentsDiv = 'contact';
			var commentsResponse = 'comments_response';
			var sort = 'publisher';
			var pageName = 'Publisher';
		}
		if(action == 'New') {
		//response(commentsResponse,'loading');
		if(commentsForm.Comment.value == '') {
			document.getElementById(commentsResponse).innerHTML = 'Please enter a comment';
		} else {
   		new Ajax.Request('/assets/p_comments.php?ajax=True', {
		method: 'post',
		parameters : Form.serialize(commentsForm),
		onSuccess: function(returned) {
				var newCommentID = returned.responseText;
				response(commentsDiv,'loading');
				new Ajax.Updater(commentsDiv,'/assets/ajax.php?task=writeComments&PublisherID='+publisherProID+'&sort='+sort+'&PageName='+pageName+'&BlogID='+blogID+'&PlaylistID='+projectID+'&CommentID='+newCommentID+'&UniqueUrl='+uniqueUrl, {
				asynchronous:true,
				evalScripts:true,
				onComplete: function() {
					udtBg();
					}
				});
		},
		asynchronous:true, 
		evalScripts:true
		});
		}
		} else if (action = 'Remove') {
		if(confirm('Are you sure you want to remove this comment?')) {
		new Ajax.Request('/assets/p_comments.php?ajax=True&Action='+action+'&CommentID='+commentID, {
		method:'get',
		asynchronous:true, 
		evalScripts:true,
		onComplete: function(returned) {
		var responseData = returned.responseText;
		if (responseData == 'Removed') {
		response(commentsDiv,'loading');
   		new Ajax.Updater(commentsDiv,'/assets/ajax.php?task=writeComments&PublisherID='+publisherProID+'&BlogID='+blogID+'&PlaylistID='+projectID+'&UniqueUrl='+uniqueUrl, {
   			asynchronous:true,
   			evalScripts:true,
   			onComplete: function() {
					udtBg();
					}
		});
		}
		}
	});
	}
}
}

function editForum(publisherProID,threadID,postID,action) {
			var postForm = document.EditPost;
			var forumDiv = 'ForumPosts';
			var forumResponse = 'forum_response';
		if(action == 'New') {
		if(postForm.Subject.value == '' || postForm.PostText.value == '') {
			document.getElementById(forumResponse).innerHTML = 'Please enter a Subject &amp; Post';
		} else {
   		new Ajax.Request('/assets/p_forum.php?ajax=True', {
		method: 'post',
		parameters : Form.serialize(postForm),
		onSuccess: function(returned) {
				var newPostID = returned.responseText;
				response(forumDiv,'loading');
				new Ajax.Updater(forumDiv,'/assets/ajax.php?task=udtForum&PublisherID='+publisherProID+'&ThreadID='+threadID+'&PostID='+newPostID, {
				asynchronous:true,
				evalScripts:true,
				onComplete: function() {
					udtBg();
					}
				});
		},
		asynchronous:true, 
		evalScripts:true
		});
		}
		} else if (action = 'Remove') {
		if(confirm('Are you sure you want to remove this post?')) {
		new Ajax.Request('/assets/p_forum.php?ajax=True&Action='+action+'&PostID='+postID, {
		method:'get',
		asynchronous:true, 
		evalScripts:true,
		onComplete: function(returned) {
		var responseData = returned.responseText;
		if (responseData == 'Removed') {
		response(forumDiv,'loading');
   		new Ajax.Updater(forumDiv,'/assets/ajax.php?task=udtForum&PublisherID='+publisherProID+'&ThreadID='+threadID, {
   			asynchronous:true,
   			evalScripts:true,
   			onComplete: function() {
					udtBg();
					}
		});
		}
		}
	});
	}
}
}

// Contact Us
function contactUs(fid) {
		new Ajax.Updater('main_content', '/assets/ajax.php?task=contactUs&FID='+fid, {
		asynchronous:true, 
		evalScripts:true
	});
}

// Check Username

function checkUsername(username) {
	return new Ajax.Request('/assets/ajax.php?task=checkUsername&Username=' + username , {
		method:'get',
		asynchronous:false,
		evalScripts:true,
		onSuccess: function(transport) {
			usernameResponse = transport.responseText;
			}
		});
}

// Set Validator
function setValidator(theForm,input) {
	currentForm = theForm;
	currentInput = input;
	setTimeout('validate(currentForm,currentInput)',200);
}

// Form Validator
function Validator (frmname) {
	this.formobj=document.forms[frmname];
	if(!this.formobj) {
		alert("BUG: couldnot get Form object "+frmname);
		return;
	}
	
	if(this.formobj.onsubmit) {
		this.formobj.old_onsubmit = this.formobj.onsubmit;
		this.formobj.onsubmit=null;
	} else {
		this.formobj.old_onsubmit = null;
	}
	
	this.formobj.onsubmit=form_submit_handler;
	this.addValidation = add_validation;
	this.setAddnlValidationFunction=set_addnl_vfunction;
	this.clearAllValidations = clear_all_validations;
}

function set_addnl_vfunction(functionname) {
	this.formobj.addnlvalidation = functionname;
}

function DoCustomValidation() {
	var frm = document.forms["myform"];
	if(frm.pwd1.value != frm.pwd2.value) {
		alert('The Password and verified password don not match!');
		return false;
	} else {
		return true;
	}
}

function clear_all_validations() {
	for(var itr=0;itr < this.formobj.elements.length;itr++) {
		this.formobj.elements[itr].validationset = null;
	}
}

function form_submit_handler() {
	for(var itr=0;itr < this.elements.length;itr++) {
		if(this.elements[itr].validationset &&
	   !this.elements[itr].validationset.validate()) {
			return false;
		}
	}
	
	if(this.addnlvalidation) {
		str =" var ret = "+this.addnlvalidation+"()";
		eval(str);
    	if(!ret) return ret;
	}
	return true;
}

function add_validation (itemname,descriptor,errstr) {
	if(!this.formobj) {
		alert("BUG: the form object is not set properly");
		return;
	}//if
	var itemobj = this.formobj[itemname];
	if(!itemobj) {
		alert("BUG: Couldnot get the input object named: "+itemname);
		return;
	}
	
	if(!itemobj.validationset) {
		itemobj.validationset = new ValidationSet(itemobj);
	}
	itemobj.validationset.add(descriptor,errstr);
}

function ValidationDesc (inputitem,desc,error) {
	this.desc=desc;
	this.error=error;
	this.itemobj = inputitem;
	this.validate=vdesc_validate;
}

function vdesc_validate() {
	if(!V2validateData(this.desc,this.itemobj,this.error)) {
		this.itemobj.focus();
		return false;
	}
	return true;
}

function ValidationSet (inputitem) {
	this.vSet=new Array();
	this.add= add_validationdesc;
	this.validate= vset_validate;
	this.itemobj = inputitem;
}

function add_validationdesc(desc,error) {
  this.vSet[this.vSet.length]= 
  new ValidationDesc(this.itemobj,desc,error);
}

function vset_validate() {
	for(var itr=0;itr<this.vSet.length;itr++) {
		if(!this.vSet[itr].validate()) {
			return false;
		 }
	}
	return true;
}

function validateEmailv2 (email) {
// a very simple email validation checking. 
// you can add more complex email checking if it helps 
	var splitted = email.match("^(.+)@(.+)$");
	if(splitted == null) return false;
	if(splitted[1] != null) {
		var regexp_user=/^\"?[\w-_\.]*\"?$/;
		if(splitted[1].match(regexp_user) == null) return false;
    }
	
    if(splitted[2] != null) {
		var regexp_domain=/^[\w-\.]*\.[A-Za-z]{2,4}$/;
		if(splitted[2].match(regexp_domain) == null) {
			var regexp_ip =/^\[\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\]$/;
			if(splitted[2].match(regexp_ip) == null) return false;
		}
		return true;
    }
	return false;
}
function V2validateData (strValidateStr,objValue,strError) { 
	var epos = strValidateStr.search("="); 
	var  command  = ""; 
	var  cmdvalue = ""; 
	if(epos >= 0) { 
		command  = strValidateStr.substring(0,epos); 
		cmdvalue = strValidateStr.substr(epos+1); 
    } else { 
		command = strValidateStr; 
    }
	
    switch(command) { 
		case "req": 
		case "required": { 
			if(eval(objValue.value.length) == 0) { 
				if(!strError || strError.length ==0) { 
					strError = objValue.name + " : Required Field"; 
				}
				alert(strError); 
				return false; 
			}
			break;             
		}
		case "maxlength": 
        case "maxlen": { 
			if(eval(objValue.value.length) >  eval(cmdvalue)) { 
				if(!strError || strError.length ==0) { 
					strError = objValue.name + " : "+cmdvalue+" characters maximum "; 
				}
				alert(strError + "\n[Current length = " + objValue.value.length + " ]"); 
				return false; 
			}//if 
			break; 
		}//case maxlen 
		case "minlength": 
		case "minlen": { 
			if(eval(objValue.value.length) <  eval(cmdvalue)) { 
				if(!strError || strError.length ==0) { 
					strError = objValue.name + " : " + cmdvalue + " characters minimum  "; 
				}//if               
				alert(strError + "\n[Current length = " + objValue.value.length + " ]"); 
				return false;                 
			}//if 
			break; 
		}//case minlen 
        case "alnum": 
        case "alphanumeric": { 
			var charpos = objValue.value.search("[^A-Za-z0-9]"); 
			if(objValue.value.length > 0 &&  charpos >= 0) { 
				if(!strError || strError.length ==0) { 
					strError = objValue.name+": Only alpha-numeric characters allowed "; 
				}//if 
				alert(strError + "\n [Error character position " + eval(charpos+1)+"]"); 
				return false; 
			}//if 
			break; 
		}//case alphanumeric 
        case "num": 
        case "numeric": { 
			var charpos = objValue.value.search("[^0-9]"); 
			if(objValue.value.length > 0 &&  charpos >= 0) { 
				if(!strError || strError.length ==0) { 
					strError = objValue.name+": Only digits allowed "; 
				}//if               
				alert(strError + "\n [Error character position " + eval(charpos+1)+"]"); 
				return false; 
			}//if 
			break;               
		}//numeric 
        case "alphabetic": 
        case "alpha": { 
			var charpos = objValue.value.search("[^A-Za-z]"); 
			if(objValue.value.length > 0 &&  charpos >= 0) { 
				if(!strError || strError.length ==0) { 
					strError = objValue.name+": Only alphabetic characters allowed "; 
                }//if                             
                alert(strError + "\n [Error character position " + eval(charpos+1)+"]"); 
                return false; 
			}//if 
			break; 
		}//alpha 
		case "alnumhyphen": {
			var charpos = objValue.value.search("[^A-Za-z0-9\-_]"); 
			if(objValue.value.length > 0 &&  charpos >= 0) { 
				if(!strError || strError.length ==0) { 
					strError = objValue.name+": characters allowed are A-Z,a-z,0-9,- and _"; 
                }//if                             
                alert(strError + "\n [Error character position " + eval(charpos+1)+"]"); 
                return false; 
			}//if 			
			break;
		}
        case "email": { 
			if(!validateEmailv2(objValue.value)) { 
				if(!strError || strError.length ==0) { 
					strError = "Please enter a valid email address. "; 
				}//if                                               
				alert(strError); 
				return false; 
			}//if 
			break; 
		}//case email 
		case "lt": 
		case "lessthan": { 
			if(isNaN(objValue.value)) { 
				alert(objValue.name+": Should be a number "); 
				return false; 
            }//if 
            if(eval(objValue.value) >=  eval(cmdvalue)) { 
				if(!strError || strError.length ==0) { 
					strError = objValue.name + " : value should be less than "+ cmdvalue; 
				}//if               
				alert(strError); 
				return false;                 
			}//if             
			break; 
		}//case lessthan 
        case "gt": 
        case "greaterthan": { 
			if(isNaN(objValue.value)) { 
				alert(objValue.name+": Should be a number "); 
				return false; 
            }//if 
			if(eval(objValue.value) <=  eval(cmdvalue)) { 
				if(!strError || strError.length ==0) { 
					strError = objValue.name + " : value should be greater than "+ cmdvalue; 
				}//if               
				alert(strError); 
				return false;                 
			}//if             
			break; 
		}//case greaterthan 
        case "regexp": { 
			if(!objValue.value.match(cmdvalue)) { 
				if(!strError || strError.length ==0) { 
					strError = objValue.name+": Invalid characters found "; 
				}//if                                                               
				alert(strError); 
				return false;                   
			}//if 
			break; 
		}//case regexp 
        case "dontselect": { 
			if(objValue.selectedIndex == null) { 
				alert("BUG: dontselect command for non-select Item"); 
				return false; 
            } 
            if(objValue.selectedIndex == eval(cmdvalue)) { 
				if(!strError || strError.length ==0) { 
					strError = objValue.name+": Please Select one option "; 
				}//if                                                               
				alert(strError); 
				return false;                                   
			} 
			break; 
		}//case dontselect 
	}//switch 
	return true; 
}

function getImage(projectID,customID,image) {

			return new Ajax.Request('/assets/ajax.php?task=getImage&params[0]=' + projectID + '&params[1]=' + customID + '&params[2]=' + image , {
			method:'get',
			onSuccess: function(returned) {
			imageFile = returned.responseText;
			},
			asynchronous:false,
			evalScripts:true
			});
}

function hideElement(element) {
	//safe function to hide an element with a specified id
	if (document.getElementById) { // DOM3 = IE5, NS6
		document.getElementById(element).style.visibility = 'hidden';
	}
	else {
		if (document.layers) { // Netscape 4
			document.element.visibility = 'hidden';
		}
		else { // IE 4
			document.all.element.style.visibility = 'hidden';
		}
	}
}

function showElement(element) {
	//safe function to hide an element with a specified id
	if (document.getElementById) { // DOM3 = IE5, NS6
		document.getElementById(element).style.visibility = 'visible';
	}
	else {
		if (document.layers) { // Netscape 4
			document.element.visibility = 'visible';
		}
		else { // IE 4
			document.all.element.style.visibility = 'visible';
		}
	}
}

function displayBlock(element) {
	//safe function to hide an element with a specified id
	if (document.getElementById) { // DOM3 = IE5, NS6
		document.getElementById(element).style.display = 'block';
	}
	else {
		if (document.layers) { // Netscape 4
			document.element.display = 'block';
		}
		else { // IE 4
			document.all.element.style.display = 'block';
		}
	}
}

function displayInline(element) {
	//safe function to hide an element with a specified id
	if (document.getElementById) { // DOM3 = IE5, NS6
		document.getElementById(element).style.display = 'inline';
	}
	else {
		if (document.layers) { // Netscape 4
			document.element.display = 'inline';
		}
		else { // IE 4
			document.all.element.style.display = 'inline';
		}
	}
}

function displayNone(element) {
	//safe function to hide an element with a specified id
	if (document.getElementById) { // DOM3 = IE5, NS6
		document.getElementById(element).style.display = 'none';
	}
	else {
		if (document.layers) { // Netscape 4
			document.element.display = 'none';
		}
		else { // IE 4
			document.all.element.style.display = 'none';
		}
	}
}

function setHeight(container,setDiv) {
	if (document.getElementById(container) && document.getElementById(setDiv)) {
	if (document.getElementById(container).offsetHeight) {
	var h = document.getElementById(container).offsetHeight;
	} else {
	var h = document.getElementById(container).style.pixelHeight;
	}
	if (typeof pageStyle != 'undefined') { if (pageStyle == 'channel') { h = h - 9;} else if (pageStyle == 'home') { h = h - 20;} }
	if (setDiv == 'track_display_holder') { h = h - 265; if (h < 200) { h = 200;}}
	document.getElementById(setDiv).style.height = h+'px';
	}
	}

updateBg = "setHeight('stage','website_bg')";

function udtBg() {
		setTimeout(updateBg,500);
		setTimeout(updateBg,1000);
	}

function shaded(container,shadeDiv,shade) {
	if (!document.all) {
	var h = document.getElementById(container).offsetHeight;
	document.getElementById(shadeDiv).style.height = h+'px';
	document.getElementById(shadeDiv).style.backgroundColor = '#'+shade;
	}
	}

function response(id,action) {
	var closeWindow = '';
	displayBlock(id);
   	document.getElementById(id).innerHTML = '<br /><img class="' + action + '" src="/assets/images/spacer.gif"/>';
}

function toggleListStyle(style) {
	var trackLists = new Array('lib_tracks','track_display_holder','player_playlist','asset_window','TrackResults');
	for(i=0;i<trackLists.length;i++) {
			if ($(trackLists[i])) {
			if ($(trackLists[i]).hasClassName('list')) {$(trackLists[i]).removeClassName('list');}
			if ($(trackLists[i]).hasClassName('icons')) {$(trackLists[i]).removeClassName('icons');}
			if (!$(trackLists[i]).hasClassName(style)) {$(trackLists[i]).addClassName(style);}
			}
		}
	setCookie('trackListStyle', style, 365);
	udtBg();
}


/*****************************************
Script to enable tab keystrokes for textareas
*****************************************/
// Posted on webdeveloper.com (http://www.webdeveloper.com/forum/showthread.php?t=32317&page=1&pp=15)
// Script originally created by Craig a.k.a crh3675
// Improved by kennthburgener

function setSelectionRange(input, selectionStart, selectionEnd) {
  if (input.setSelectionRange) {
    input.focus();
    input.setSelectionRange(selectionStart, selectionEnd);
  }
  else if (input.createTextRange) {
    var range = input.createTextRange();
    range.collapse(true);
    range.moveEnd('character', selectionEnd);
    range.moveStart('character', selectionStart);
    range.select();
  }
}

function replaceSelection (input, replaceString) {
	if (input.setSelectionRange) {
		var selectionStart = input.selectionStart;
		var selectionEnd = input.selectionEnd;

// Hack by kennethburgener to avoid Firefox scrolling to top after using tab key when textarea has been scrolled downwards.
// Modified by Chitetskoy 2008-04-30: it works
		var scrollTop = input.scrollTop; // fix scrolling issue with Firefox

		input.value = input.value.substring(0, selectionStart)+ replaceString + input.value.substring(selectionEnd);
    
		if (selectionStart != selectionEnd){ 
			setSelectionRange(input, selectionStart, selectionStart + 	replaceString.length);
		}else{
			setSelectionRange(input, selectionStart + replaceString.length, selectionStart + replaceString.length);
		}

		// Set the scrollTop of an input AFTER changes has been made in the input (or the textbox) content
		// Modified by Chitetskoy
		input.scrollTop = scrollTop;

	}else if (document.selection) {
		var range = document.selection.createRange();

		if (range.parentElement() == input) {
			var isCollapsed = range.text == '';
			range.text = replaceString;

			 if (!isCollapsed)  {
				range.moveStart('character', -replaceString.length);
				range.select();
			}
		}
	}
}


// We are going to catch the TAB key so that we can use it, Hooray!
function catchTab(item,e){
	if(navigator.userAgent.match("Gecko")){
		c=e.which;
	}else{
		c=e.keyCode;
	}
	if(c==9){
		replaceSelection(item,String.fromCharCode(9));

// magistus 2006-11-06 Comment out the timeout as advised by kennethburgener to avoid IE jumping to top of page, works OK!
//		setTimeout("document.getElementById('"+item.id+"').focus();",0);	

		return false;
	}
		    
}

/*****************************************
New Captcha (depends on prototype)
*****************************************/
function newCaptcha(id) {
	var newid = id + 1;
	new Ajax.Updater('captcha', '/assets/ajax.php?task=captchaMaker&id='+newid, {
		asynchronous:true, 
		evalScripts:true
	});
}

/*****************************************
Default Image (depends on prototype)
*****************************************/
defaultImage = function(id,image,projectID,customID,blogID) {
					new Ajax.Request('/assets/p_images_delete.php?ajax=True', {
   					method: 'get',
   					parameters : 'Image=' + image + '&ProjectID=' + projectID + '&CustomID=' + customID + '&BlogID=' + blogID,
   					onComplete: function(returned) {
   						if (returned.responseText == '') {
   						if(image == 'Background_Custom' || image == 'Background_Home' || image == 'Background') {
   							updateStyles('image');
						} else if (image == 'Banner_Custom') {
							showBanner();
						}
						}
   					},
   					asynchronous:false, 
   					evalScripts:false
   					});
				}


/*****************************************
Reload Media (depends on prototype)
*****************************************/
function reloadMedia(visitorID) {
	new Ajax.Request('/assets/ajax.php', {
		method: 'get',
		parameters : {
		"task" : "reloadMedia",
		"VisitorID" : visitorID
		},
		onComplete : function(){
		window.location.reload(true);
		}
		});
	}

/*****************************************
Bookmark/Unbookmark (depends on prototype)
*****************************************/

function bm(producerID,projectID,Place) {
 bookmarksDivs = new Array('TitleResults','my_bookmarks','cached_bookmarks','gr','related','bookmarks_main','page',Place);

 new Ajax.Updater('bmLink', '/assets/p_bookmark.php?ajax=true&ProducerID='+producerID+'&ProjectID='+projectID, {
		onComplete:function(returned){
			if(returned.responseText != '') { 	
			for(i=0;i<bookmarksDivs.length;i++) {
			var bookmarksDiv = bookmarksDivs[i] + '_bmk_' + projectID;
			if(document.getElementById(bookmarksDiv)) {
				if(returned.responseText == 'added') { if(!$(bookmarksDiv).hasClassName('bmkd')) {$(bookmarksDiv).addClassName('bmkd');} $(bookmarksDiv).firstChild.title = 'Remove from your bookmarks';}
				if(returned.responseText == 'removed') { if($(bookmarksDiv).hasClassName('bmkd')) {$(bookmarksDiv).removeClassName('bmkd'); $(bookmarksDiv).firstChild.title = 'Bookmark it';}}
				}
			}
			if(returned.responseText == 'removed') {
				if (Place == 'cached_bookmarks') {
					var cachedBm = 'CachedBM_' + projectID;
					if($(cachedBm)) { displayNone(cachedBm);}
				} else if (Place == 'my_bookmarks') {
					new Ajax.Updater('nav_bookmarks', '/assets/ajax.php?task=bookmarksNav', {asynchronous:true, evalScripts:true});
				}
			}
			}
			
		},
		asynchronous:true, 
		evalScripts:true
	});
}

function ubm(producerID,projectID,Place) {

	bookmarksDivs = new Array('TitleResults','my_bookmarks','cached_bookmarks','gr','related','bookmarks_main',Place);

	new Ajax.Updater('bmLink', '/assets/p_unpromote.php?ajax=true&ProducerID='+producerID+'&ProjectID='+projectID+'&Place='+Place, {
		onComplete:function(){ 
			// update the bookmark navigation at top of page	
			new Ajax.Updater('nav_bookmarks', '/assets/ajax.php?task=bookmarksNav', {asynchronous:true, evalScripts:true});
			//
			if (Place  == 'cached_bookmarks') {
			var cachedBm = 'CachedBM_' + projectID;
			if($(cachedBm)) { displayNone(cachedBm);}
			}
			for(i=0;i<bookmarksDivs.length;i++) {
			var bookmarksDiv = bookmarksDivs[i] + '_bmk_' + projectID;
			if(document.getElementById(bookmarksDiv)) {
				if($(bookmarksDiv).hasClassName('bmkd')) {$(bookmarksDiv).removeClassName('bmkd');}
				}
			}
			// update the bookmark stat at bottom right
			//new Ajax.Updater('bookmarktotal', '/assets/ajax.php?task=bookmarkedTotal&params[0]='+projectID, {asynchronous:true, evalScripts:true});
			/*
			$("boomk").update('<a href="assets/p_promote.php?ProducerID='+producerID+'&ProjectID='+projectID+'" onclick="bm('+producerID+','+projectID+');return false;">&nbsp;</a>')
			*/
			//setTimeout("shadedLoop('nav_bookmarks','nav_bookmarks_shaded','999999')",200);	
		},
		asynchronous:true, 
		evalScripts:true
	});
}

/*****************************************
Dashboard/Un-Dashboard (depends on prototype)
*****************************************/

function dbd(producerID,listID,location) {		
 new Ajax.Updater('widget_box', '/assets/p_dashboard.php?ajax=true&Action=Add&ProducerID='+producerID+'&ListID='+listID+'&Location='+location, {
		onComplete:function(){ 	
			// update the navbar				
			new Ajax.Updater('nav_favourites', '/assets/ajax.php?task=dashboardWidgets&params[0]='+listID +'&params[1]=nav', {asynchronous:true, evalScripts:true});
			if (location != 'nav') {
			// update the dashboard				
			new Ajax.Updater('dashbd_list', '/assets/ajax.php?task=dashboardWidgets&params[0]='+listID, {asynchronous:true, evalScripts:true});
			new Ajax.Updater('widget_box', '/assets/ajax.php?task=widgetBox&params[0]='+listID, {asynchronous:true, evalScripts:true});
			new Ajax.Updater('search_widgets', '/assets/ajax.php?task=searchWidgets&params[0]=&params[1]='+listID, {asynchronous:true, evalScripts:true});
			}
		},
		asynchronous:true, 
		evalScripts:true
	});
}

function udbd(widgetID,listID,location) {		
 new Ajax.Updater('widget_box', '/assets/p_dashboard.php?ajax=true&Action=Remove&WidgetID='+widgetID+'&ListID='+listID+'&Location='+location, {
		onComplete:function(){ 	
			// update the navbar				
			new Ajax.Updater('nav_favourites', '/assets/ajax.php?task=dashboardWidgets&params[0]='+listID +'&params[1]=nav', {asynchronous:true, evalScripts:true});
			if (location != 'nav') {				
			// update the dashboard				
			new Ajax.Updater('dashbd_list', '/assets/ajax.php?task=dashboardWidgets&params[0]='+listID, {asynchronous:true, evalScripts:true});
			new Ajax.Updater('widget_box', '/assets/ajax.php?task=widgetBox&params[0]='+listID, {asynchronous:true, evalScripts:true});
			new Ajax.Updater('search_widgets', '/assets/ajax.php?task=searchWidgets&params[0]=&params[1]='+listID, {asynchronous:true, evalScripts:true});
			}	
		},
		asynchronous:true, 
		evalScripts:true
	});
}

/*****************************************
SEARCH WIDGETS (depends on prototype)
*****************************************/

function swidgets(searchTerm,listID) {		
 new Ajax.Updater('search_widgets', '/assets/ajax.php?task=searchWidgets&params[0]='+searchTerm+'&params[1]='+listID, {
		asynchronous:true, 
		evalScripts:true
	});
}

/*****************************************
PAGINATED TOP EIGHT (depends on prototype)
*****************************************/

function tp8(searchTerm,searchLoc,searchCat,page) {		
 new Ajax.Updater('top_8_content', '/assets/ajax.php?task=topEight&params[0]='+searchTerm+'&params[1]='+searchLoc+'&params[2]='+searchCat+'&params[3]='+page, {
		asynchronous:true, 
		evalScripts:true
	});
}

/*****************************************
PAGINATED PRODUCER PROJECT SEARCH (depends on prototype)
*****************************************/

function spp(unique,producerID,keywords,pageName,projectType,category,order,page,limit,style,back) {		
 new Ajax.Updater('project_results', '/assets/ajax.php?task=searchProProjects&params[0]='+unique+'&params[1]='+producerID+'&params[2]='+keywords+'&params[3]='+pageName+'&params[4]='+projectType+'&params[5]='+category+'&params[6]='+order+'&params[7]='+page+'&params[8]='+limit+'&params[9]='+style+'&params[10]='+back, {
		asynchronous:true, 
		evalScripts:true
	});
	document.getElementById('Category').value = category;
}

/*****************************************
PAGINATED PRODUCER SEARCH (depends on prototype)
*****************************************/

function spro(unique,producerID,keywords,category,resultsPage,pageName,order,page,limit,style,back) {		
 new Ajax.Updater('people_results', '/assets/ajax.php?task=searchProducers&params[0]='+unique+'&params[1]='+producerID+'&params[2]='+keywords+'&params[3]='+category+'&params[4]='+resultsPage+'&params[5]='+pageName+'&params[6]='+order+'&params[7]='+page+'&params[8]='+limit+'&params[9]='+style+'&params[10]='+back, {
		asynchronous:true, 
		evalScripts:true
	});
}

/*****************************************
PAGINATED TRACK SEARCH (depends on prototype)
*****************************************/

function spt(unique,producerID,keywords,category,resultsPage,pageName,order,page,limit,style,back) {		
 new Ajax.Updater('track_results', '/assets/ajax.php?task=searchTracks&params[0]='+unique+'&params[1]='+producerID+'&params[2]='+keywords+'&params[3]='+category+'&params[4]='+resultsPage+'&params[5]='+pageName+'&params[6]='+order+'&params[7]='+page+'&params[8]='+limit+'&params[9]='+style+'&params[10]='+back, {
		asynchronous:true, 
		evalScripts:true
	});
}

/*****************************************
PAGINATED MOST POPULAR PROJECTS (depends on prototype)
*****************************************/

function mpps(unique,customProducerID,category,customCategory,limit,page,back) {		
 new Ajax.Updater('all_projects', '/assets/ajax.php?task=allMostPopProjects&params[0]='+unique+'&params[1]='+customProducerID+'&params[2]='+category+'&params[3]='+customCategory+'&params[4]='+limit+'&params[5]='+page+'&params[6]='+back, {
		asynchronous:true, 
		evalScripts:true
	});
}

/*****************************************
PAGINATED PAYMENTS (depends on prototype)
*****************************************/
function copyProject(divID,projectID) {
	$(divID).innerHTML = 'Copying';		
 new Ajax.Updater(divID, '/assets/p_copy_project.php?PlaylistID='+projectID, {
		asynchronous:true, 
		evalScripts:true
	});
}


/*****************************************
PAGINATED PAYMENTS (depends on prototype)
*****************************************/
function getPayments(divID,producerID,type,format,projectID,category,pageName,order,page,limit,back,inOut) {		
 response('account_paginate','loading');
 new Ajax.Updater(divID, '/assets/ajax.php?task=getPayments&DivID='+divID+'&PublisherID='+producerID+'&Type='+type+'&Format='+format+'&PlaylistID='+projectID+'&Category='+category+'&PageName='+pageName+'&Order='+order+'&Page='+page+'&Limit='+limit+'&Back='+back+'&InOut='+inOut, {
		asynchronous:true, 
		evalScripts:true
	});
}

/*****************************************
RECEIPTS SUM TOTALS TALLY (depends on prototype)
*****************************************/

function rt(sortSum,projectID,format) {		
 new Ajax.Updater('receipt_tally', '/assets/ajax.php?task=receiptTally&params[0]='+sortSum+'&params[1]='+projectID+'&params[2]='+format, {
		asynchronous:true, 
		evalScripts:true
	});
}

/*****************************************
VIEWS TALLYS (depends on prototype)
*****************************************/

function vt(sortViews,projectID,producerID,unique,search,subSearch,format) {		
 new Ajax.Updater('views_tally', '/assets/ajax.php?task=viewsTally&params[0]='+sortViews+'&params[1]='+projectID+'&params[2]='+producerID+'&params[3]='+unique+'&params[4]='+search+'&params[5]='+subSearch+'&params[6]='+format, {
		asynchronous:true, 
		evalScripts:true
	});
}

/*****************************************
ACCOUNT VIEWS TALLYS (depends on prototype)
*****************************************/

function avt(sortViews,projectID,producerID,unique,search,subSearch,format) {		
 new Ajax.Updater('account_views_tally', '/assets/ajax.php?task=viewsTally&params[0]='+sortViews+'&params[1]='+projectID+'&params[2]='+producerID+'&params[3]='+unique+'&params[4]='+search+'&params[5]='+subSearch+'&params[6]='+format, {
		asynchronous:true, 
		evalScripts:true
	});
}

/*****************************************
GEO VIEWS TALLYS (depends on prototype)
*****************************************/

function gvt(stats,sortViews,producerID,projectID,format) {		
 new Ajax.Updater('geo_views_tally', '/assets/ajax.php?task=globalStats&params[0]='+stats+'&params[1]='+sortViews+'&params[2]='+producerID+'&params[3]='+projectID+'&params[4]='+format, {
		asynchronous:true, 
		evalScripts:true
	});
}

/*****************************************
REFERRALS STATS (depends on prototype)
*****************************************/

function refstats(stats,sortViews,producerID,projectID,format) {		
 new Ajax.Updater('referrals_stats', '/assets/ajax.php?task=globalStats&params[0]='+stats+'&params[1]='+sortViews+'&params[2]='+producerID+'&params[3]='+projectID+'&params[4]='+format, {
		asynchronous:true, 
		evalScripts:true
	});
}

/*****************************************
UPDATE FRIEND LINK (depends on prototype)
*****************************************/

function udtFriendLink(producerID,action,page) {
	friendLinkDiv = 'friend_link_' + producerID;
	if(document.getElementById(friendLinkDiv)) {
 new Ajax.Updater(friendLinkDiv, '/assets/p_friend_link.php?ajax=true&Action=' + action + '&ProducerID='+producerID + '&Page='+page, {
		onComplete:function(){ 	
		},
		asynchronous:true, 
		evalScripts:true
	});
	}
	pageFriendLinkDiv = 'pageFriend_link_' + producerID;
	if(document.getElementById(pageFriendLinkDiv)) {
new Ajax.Updater(pageFriendLinkDiv, '/assets/p_friend_link.php?ajax=true&Action=' + action + '&ProducerID='+producerID + '&Page='+page, {
		onComplete:function(){ 	
		},
		asynchronous:true, 
		evalScripts:true
	});
	}
	
	if(document.getElementById('FriendsRecent')) { latestElements('FriendsRecent');}
	if(document.getElementById('Happenings')) {
			updateMicroBlog('Happenings','','','','Latest','','1','2','');
			udtHappeningTimer = setInterval(udtHappenings,30000);
	}
}

/**
 * Ajax.Request.abort
 * extend the prototype.js Ajax.Request object so that it supports an abort method
 */
Ajax.Updater.prototype.abort = function() {
    // prevent and state change callbacks from being issued
    this.transport.onreadystatechange = Prototype.emptyFunction;
    // abort the XHR
    this.transport.abort();
    // update the request counter
    Ajax.activeRequestCount--;
};


/*****************************************
UPDATE HAPPENINGS (depends on prototype)
*****************************************/

udtHappenings = function() {
	updateMicroBlog('Happenings','','','','Latest','','1',happeningsLimit,'');
	if(document.getElementById('KeywordHappenings')) {
	if(typeof searchHappeningsKeywords != 'undefined') {
		if (searchHappeningsKeywords != '') {
			updateMicroBlog('KeywordHappenings',searchHappeningsKeywords,'','','Latest','','1','20','');
		}
	}
	}
}

/*****************************************
SEARCH (depends on prototype)
*****************************************/

main = '';
editID = '';
producerDiv = '';
projectID = 0;
producerID = 0;
projectDiv = '';

submitSearch = function() {
				
				searchArea = $('SearchArea').value;
				if (searchArea == 'All' || searchArea == 'My' || searchArea == 'Global') { 
				if ($('Search_Publisher') || !$('lib_Explorer')) {
				document.TuppashareSearch.onsubmit = '';
				document.TuppashareSearch.submit();
				} else if ($('lib_Explorer')) {
				searchKeywords = document.TuppashareSearch.Keywords.value;
				librarySearch(1);}
				} else {
				document.TuppashareSearch.onsubmit = '';
				document.TuppashareSearch.submit();}
}

udtSearchArea = function(searchArea) {
				searchArea = searchArea;
				if(!$('lib_header').hasClassName('hover')) { $('lib_header').addClassName('hover');}
				var searchAreas = new Array('Publisher','All','My','Global','Network','Messages');
				var searchAreaTab = 'Search_' + searchArea;
				for(i=0;i<searchAreas.length;i++) {
					var searchAreasTab = 'Search_' + searchAreas[i];
					if ($(searchAreasTab)) { if($(searchAreasTab).hasClassName('selected')) { $(searchAreasTab).removeClassName('selected');}}
				}
				$('SearchArea').value = searchArea;
				if ($(searchAreaTab)) { $(searchAreaTab).addClassName('selected');}
				if (searchArea == 'Network') { $('TuppashareSearch').action = '/friends';}
				if (searchArea == 'Messages') { $('TuppashareSearch').action = '/messages';}
				if (searchArea == 'Publisher') { $('TuppashareSearch').action = '/search';}
				if (searchArea == 'All' || searchArea == 'My' || searchArea == 'Global') { setCookie('defaultSearchArea', searchArea, 365); if ($('Search_Publisher')) { $('TuppashareSearch').action = 'http://' + siteDomainName + '/store'; } else { $('TuppashareSearch').action = '/store'; }}
				if($(searchAreaTab) && $('SelectedSearch')) { $('SelectedSearch').innerHTML = $(searchAreaTab).childNodes[0].innerHTML; }
				if($('lib_header').hasClassName('hover')) { $('lib_header').removeClassName('hover');}
				for (i=0;i<document.TuppashareSearch.SearchAreas.length;i++) {
					if(document.TuppashareSearch.SearchAreas[i].value == searchArea) {
						document.TuppashareSearch.SearchAreas[i].checked = true;
					} else {
						document.TuppashareSearch.SearchAreas[i].checked = false;
					}
			}
}

searchProducers =  function(keywords,category,pageName,order,page,limit,style,back) {
				explorerHidden = false;
				if(document.getElementById('explorer_window')) {
					if ($('explorer_window').hasClassName('invisible')) { explorerHidden = true;}
				}
				if (!explorerHidden) {
				if (main == 'Uploaded' || main == 'Sent' || main == 'Published' || main == 'Private' || main == 'Postbox') {
				if($('lib_producers')) {document.getElementById('lib_producers').innerHTML = '';}
				} else {
				if($('producers_window')) {response('producers_window','loading');}
				if(typeof producersLoading != 'undefined') { producersLoading.abort();}
				if(typeof qlsLoading != 'undefined') { for(i=0;i<qlsLoading.length;i++) { qlsLoading[i].abort();}}
					producersLoading = new Ajax.Updater('lib_producers', '/assets/ajax.php?task=udtLibProducers&Main=' + main + '&Keywords=' + keywords + '&Category=' + category + '&PageName=' + pageName + '&Order=' + order + '&Page=' + page + '&Limit=' + limit + '&Style=' + style + '&Back=' + back + '&EditID=' + editID, {
						asynchronous:true,
						evalScripts:true
						});
				}
				}
}

getPublisher = function(divID,producerID,subPage,fid) {
				if(typeof publisherUnique != 'undefined') {
				location.href = 'http://www.tuppashare.com/'+publisherUnique;
				} else {
				if(typeof udtBlogTimer != 'undefined') {clearTimeout(udtBlogTimer);liveBlog = false;}
				new Ajax.Updater(divID, '/assets/ajax.php?task=getPublisher&DivID=' + divID + '&PublisherID=' + producerID + '&SubPage=' + subPage + '&FID=' + fid, {
						asynchronous:true,
						evalScripts:true,
						onComplete: function() {
						hideExplorer = function() {
						//slideDiv('explorer');
						displayBlock('show_explorer');
						}
						if($(divID).hasClassName('invisible')) {showHideDiv(divID);}
						if($('friend_holder').hasClassName('invisible')) {slideDiv('friend_holder');}
						//if(!$('explorer').hasClassName('invisible')) {setTimeout(hideExplorer,500);}
						udtBg();
						}
						});
						udtStats(producerID,'Account',pageReferrer,subPage,'','');
						}
}

updateMicroBlog = function(updaterDiv,keywords,producerID,blogID,pageName,order,page,limit,back) {

	if(typeof liveBlog == 'undefined') {liveBlog = false;}
	if (updaterDiv == 'Happenings') { happeningsLimit = limit;}
	new Ajax.Updater(updaterDiv, '/assets/ajax.php?task=udtMicroBlog&DivID=' + updaterDiv + '&BloggerID=' + producerID + '&Keywords=' + keywords + '&BlogID=' + blogID + '&Order=' + order + '&PageName=' + pageName + '&Page=' + page + '&Limit=' + limit + '&Back=' + back, {
			onComplete: function() {
			if(producerID != 0 && producerID != loginID && keywords == '' && page == 1 && blogID == 0 && liveBlog == true) {
				blogUpdater = 'updateMicroBlog(\''+updaterDiv+'\',\''+keywords+'\',\''+producerID+'\',\''+blogID+'\',\''+pageName+'\',\''+order+'\',\''+page+'\',\''+limit+'\',\''+back+'\')';
				udtBlogTimer = setTimeout(blogUpdater,30000);
				document.getElementById('live_blog_toggle').innerHTML = '<img src="/assets/images/spacer.gif" class="live"/> <a href="javascript:void(0);" onclick="javascript:liveBlog=false;updateMicroBlog(\''+updaterDiv+'\',\''+keywords+'\',\''+producerID+'\',\''+blogID+'\',\''+pageName+'\',\''+order+'\',\''+page+'\',\''+limit+'\',\''+back+'\');return false;" class="simple_btn"><span>Switch Off?</span></a><br />';
			}
			},
			asynchronous:true, 
			evalScripts:true
		});
		if(producerID != 0) { window.scroll(0,0);}
		udtBg();
	}

updateForum = function(updaterDiv,keywords,producerID,posterID,postID,threadID,pageName,order,page,limit,back) {
	new Ajax.Updater(updaterDiv, '/assets/ajax.php?task=udtForum&PublisherID=' + producerID + '&PosterID=' + posterID + '&PostID=' + postID + '&Keywords=' + keywords + '&ThreadID=' + threadID + '&Order=' + order + '&PageName=' + pageName + '&Page=' + page + '&Limit=' + limit + '&Back=' + back, {
			asynchronous:true, 
			evalScripts:true
		});
	}
				
searchProjects =  function(divID,producerID,keywords,category,pageName,order,page,limit,style,back) {
				explorerHidden = false;
				if(document.getElementById('explorer_window')) {
					if ($('explorer_window').hasClassName('invisible')) { explorerHidden = true;}
				}
				if(pageName == 'widgets') { main = 'Published';}
				if (!explorerHidden || divID != 'lib_titles_') {
				var resultsWindow = 'projects_window'+category;
				projectsContainerDiv = document.getElementById(divID);
				if(projectsContainerDiv.childNodes[1]) { projectsContainerDiv.childNodes[1].innerHTML = '<img src="/assets/images/spacer.gif" class="loading"/>';}
				if (typeof producerDiv != 'undefined') {
				if (document.getElementById(producerDiv)) {
					$(producerDiv).removeClassName('selected');
				}
				}
				producerDiv = 'producerLink_' + producerID;
				if (document.getElementById(producerDiv)) {
					$(producerDiv).addClassName('selected');
				}
				if(typeof projectsLoading != 'undefined') { projectsLoading.abort();}
				if(typeof qlsLoading != 'undefined') { for(i=0;i<qlsLoading.length;i++) { qlsLoading[i].abort();}}
				projectsLoading = new Ajax.Updater(divID, '/assets/ajax.php?task=udtLibTitles&DivID=' + divID + '&Main=' + main + '&Keywords=' + keywords + '&PublisherID=' + producerID + '&PlaylistID=' + projectID + '&Category=' + category + '&PageName=' + pageName + '&Order=' + order + '&Page=' + page + '&Limit=' + limit + '&Style=' + style + '&Back=' + back + '&EditID=' + editID, {
						asynchronous:true,
						evalScripts:true
						});
						if (pageName == 'store') {
						searchTracks(producerID,0,keywords,category,pageName,order,page,limit,style,back);
						if(producerID != 0 && editID == 0) { 
						if($('welcome_holder')) {if($('welcome_holder').hasClassName('invisible')) { showHideDiv('welcome_holder');}}
						if($('content_pane')) {if(!$('content_pane').hasClassName('invisible')) { showHideDiv('content_pane');}}
						publisherLoading = getPublisher('welcome_holder',producerID,'','');}}
				}
}

udtMainTrackDisplay = function() {
				if($('selected_tracklist') && $('track_display')) {
				var tracksStr = $('selected_tracklist').innerHTML;
				var displayTracksStr = tracksStr.replace(/trackLink/g,"trackLink_main");
				var displayTracksStr = displayTracksStr.replace(/qLinks/g,"qLinks_main");
				var displayTracksStr = displayTracksStr.replace(/single_trackP/g,"single_trackP_main");
				$('track_display').innerHTML = displayTracksStr;
				switchTrackDisplay();
				}
				}
				
searchTracks =  function(producerID,projectID,keywords,category,pageName,order,page,limit,style,back) {
				if(document.getElementById('website_header')) {$('website_header').addClassName('invisible');}
				if (projectID == editID && editID != 0) {
				document.getElementById('tracks_window').innerHTML = '<h4>Currently Editing..</h4>';
				} else {
				response('tracks_window','loading');
				if(pageName == 'store') {
				if (document.getElementById(projectDiv)) { $(projectDiv).removeClassName('selected');}
				if (currentProjectID != projectID && projectID != 0) {
				 projectDiv = 'projectLink_store_' + projectID;
				 producerDiv = 'producerLink_' + producerID;
				}
				if (document.getElementById(projectDiv)) {
					$(projectDiv).addClassName('selected');
				}
				if (document.getElementById(currentProjectDiv)) {
					$(currentProjectDiv).addClassName('current');
				}
				if (document.getElementById(trackDiv)) {
					$(trackDiv).addClassName('current');
				}
				}
				if(typeof tracksLoading != 'undefined') { tracksLoading.abort();}
				if(typeof qlsLoading != 'undefined') { for(i=0;i<qlsLoading.length;i++) { qlsLoading[i].abort();}}
				tracksLoading = new Ajax.Updater('lib_tracks', '/assets/ajax.php?task=udtLibTracks&Main=' + main + '&Keywords=' + keywords + '&PublisherID=' + producerID + '&PlaylistID=' + projectID + '&Category=' + category + '&PageName=' + pageName + '&Order=' + order + '&Page=' + page + '&Limit=' + limit + '&Style=' + style + '&Back=' + back + '&EditID=' + editID, {
						onComplete: function() {
						if (pageName == 'store' && editID == 0) {
						udtMainTrackDisplay();
						}
						},
						asynchronous:true,
						evalScripts:true
						});
				}
}

setQuickLinks = function(trMain,producerOnly,trEditID,publicSubscriptions) {
	qlsLoading = new Array();
	for(i=0;i<SearchTracksArray.length;i++) {
	var qlID = SearchTracksArray[i][1] + '_' + SearchTracksArray[i][0] + '_' + SearchTracksArray[i][2];
	var qlDiv = 'qLinks_' + qlID;
	var qlMainDiv = 'qLinks_main_' + qlID;
	qlsLoading[i] = new Ajax.Updater(qlDiv, '/assets/ajax.php?task=setQuickLinks&Main=' + trMain + '&ProducerOnly=' + producerOnly + '&EditID=' + trEditID+ '&PublicSubscriptions=' + publicSubscriptions + '&TrProjectID=' + SearchTracksArray[i][0] + '&List=' + SearchTracksArray[i][1] + '&Position=' + SearchTracksArray[i][2] + '&TrTrackID=' + SearchTracksArray[i][3] + '&TrProducerID=' + SearchTracksArray[i][4] + '&DownloadPrice=' + SearchTracksArray[i][5] + '&TrTrackStatus=' + SearchTracksArray[i][6] + '&TrFileName=' + SearchTracksArray[i][7] + '&TrTrackTitle=' + SearchTracksArray[i][8] + '&TrTrackSort=' + SearchTracksArray[i][9], {
			asynchronous:true, 
			evalScripts:true,
			onComplete: function() {
				udtMainTrackDisplay();
			}
		});
	}
	}

archiveTrack = function(track_id,action) {
					new Ajax.Request('/assets/p_tracks.php?ajax=True', {
   					method: 'post',
   					parameters : 'TrackID=' + track_id + '&Action=' + action,
   					onComplete: function(returned) {
   						if (returned.responseText != '') {
   						if(document.getElementById('tracks_list') && document.getElementById(track_id)) {
   							var d1=document.getElementById(track_id).parentNode;
   							var d2=document.getElementById(track_id);
   							d1.removeChild(d2);
						}
						var libTrackDiv = 'trackLink_Search_'+track_id;
						if(document.getElementById('tracks_window') && document.getElementById(libTrackDiv)) {
   							var d1=document.getElementById(libTrackDiv).parentNode;
   							var d2=document.getElementById(libTrackDiv);
   							d1.removeChild(d2);
						} else if(document.getElementById('files_list')) {
   							udtAssetWindow();
						}
						if (document.getElementById('track_editor')) {
						document.getElementById('track_editor').innerHTML = '<span class="small_mist">' + returned.responseText + '</span>';
						}
						if (document.getElementById('player')) {
						document.getElementById('player').innerHTML = '';
						}
						} else {
						if (document.getElementById('track_editor')) {
							document.getElementById('track_editor').innerHTML = '<span class="small_mist">Sorry there was an error.. Please <a href="javascript:archiveTrack(' + trackID + ',\'Archive\');" class="trash"><img src="/assets/images/spacer.gif" border="0" alt="" title="Delete Item"/><label>click here</label></a> to try again</span>';
						}
						}
   					},
   					asynchronous:false, 
   					evalScripts:false
   					});
				}

/*****************************************
MAIL STORE (depends on prototype)
*****************************************/

searchMail =  function(main,keywords,senderID,tags,order,page,limit,back) {
				response('explorer','loading');
					new Ajax.Updater('explorer', '/assets/ajax.php?task=searchMail&Main=' + main + '&SenderID=' + senderID + '&Keywords=' + keywords + '&Tags=' + tags + '&Order=' + order + '&Page=' + page + '&Limit=' + limit + '&Back=' + back, {
						asynchronous:true,
						evalScripts:true
						});
}

loadMessage =  function(messageID) {
				if (typeof messageLinkDiv != 'undefined') {
					if ($(messageLinkDiv)) { if($(messageLinkDiv).hasClassName('selected')) { $(messageLinkDiv).removeClassName('selected');}}
				}
				messageLinkDiv = 'message_link_' + messageID;
				if ($(messageLinkDiv).hasClassName('new')) { $(messageLinkDiv).removeClassName('new');}
				$(messageLinkDiv).addClassName('selected');
				if (!$('message_holder')) { document.getElementById('content_pane').innerHTML = '<div id="message_holder"></div>';}
				response('message_holder','loading');
					new Ajax.Updater('content_pane', '/assets/ajax.php?task=getMessage&MessageID=' + messageID, {
						asynchronous:true,
						evalScripts:true
						});
}

newMessage =  function(messageID) {
				response('content_pane','loading');
					new Ajax.Updater('content_pane', '/assets/ajax.php?task=newMessage&MessageID=' + messageID, {
						asynchronous:true,
						evalScripts:true
						});
}

autoSaveText =  function(action,responseDiv,idDiv,titleDiv,textareaDiv) {
				response(responseDiv,'saving');
				itemID = document.getElementById(idDiv).value;
				title = document.getElementById(titleDiv).value;
				textarea = document.getElementById(textareaDiv).value;
					new Ajax.Updater(responseDiv, '/assets/' + action + '.php?ajax=True&Action=AutoSave&ItemID=' + itemID + '&title=' + title + '&textarea=' + textarea, {
						asynchronous:true,
						evalScripts:true
						});
}

// Set Caret Position
function setCaretPosition(elemId, caretPos) {
    var elem = document.getElementById(elemId);

    if(elem != null) {
        if(elem.createTextRange) {
            var range = elem.createTextRange();
            range.move('character', caretPos);
            range.select();
        }
        else {
            if(elem.selectionStart) {
                elem.focus();
                elem.setSelectionRange(caretPos, caretPos);
            }
            else
                elem.focus();
        }
    }
}

// Update Stats
udtStats = function(publisherID,statName,pageReferrer,statContents,statContents2,statContents3) {
					new Ajax.Request('/assets/ajax.php?task=udtStats&PublisherID='+publisherID+'&StatName='+statName+'&PageReferrer='+pageReferrer+'&StatContents='+statContents+'&StatContents2='+statContents2+'&StatContents3'+statContents3, {
					asynchronous:false, 
   					evalScripts:false
   					});
				}