/*
var globalAjaxHandlers = {
	onCreate:function() {
		Element.show('loading');
	},
	onComplete:function() {
		if(Ajax.activeRequestCount == 0){
			Element.hide('loading');
		}
	}
};
Ajax.Responders.register(globalAjaxHandlers);
*/

/**
*
* URL encode / decode
* http://www.webtoolkit.info/
*
**/

var Url = {

    // public method for url encoding
    encode : function (string) {
        return escape(this._utf8_encode(string));
    },

    // public method for url decoding
    decode : function (string) {
        return this._utf8_decode(unescape(string));
    },

    // private method for UTF-8 encoding
    _utf8_encode : function (string) {
        string = string.replace(/\r\n/g,"\n");
        var utftext = "";

        for (var n = 0; n < string.length; n++) {

            var c = string.charCodeAt(n);

            if (c < 128) {
                utftext += String.fromCharCode(c);
            }
            else if((c > 127) && (c < 2048)) {
                utftext += String.fromCharCode((c >> 6) | 192);
                utftext += String.fromCharCode((c & 63) | 128);
            }
            else {
                utftext += String.fromCharCode((c >> 12) | 224);
                utftext += String.fromCharCode(((c >> 6) & 63) | 128);
                utftext += String.fromCharCode((c & 63) | 128);
            }

        }

        return utftext;
    },

    // private method for UTF-8 decoding
    _utf8_decode : function (utftext) {
        var string = "";
        var i = 0;
        var c = c1 = c2 = 0;

        while ( i < utftext.length ) {

            c = utftext.charCodeAt(i);

            if (c < 128) {
                string += String.fromCharCode(c);
                i++;
            }
            else if((c > 191) && (c < 224)) {
                c2 = utftext.charCodeAt(i+1);
                string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
                i += 2;
            }
            else {
                c2 = utftext.charCodeAt(i+1);
                c3 = utftext.charCodeAt(i+2);
                string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
                i += 3;
            }

        }

        return string;
    }

}

function gothere(props) {

	var params = $H(new String(Url.decode(location.search)).parseQuery());

	if(document.getElementById('charid'))
		charId=$('charid').options[$('charid').selectedIndex].value
	else{
		charId="";
	}

	params = params.merge(props);
	

	for (var i=0; i<params.length; i++)
		if (params[i] == undefined)
			params[i] = "";

	var url = "?"+params.toQueryString()+"&charid="+charId;
	document.location.href = url;
}

function changePic(src, x, y) {
	var pic = $("pic");
	var bigpicture = pic.parentNode;

	var img = Builder.node("img", {height:x, width:y, style:"display:none;"});
	Event.observe(img, 'load', function() {
		new Effect.Fade(pic, {duration:0.4, afterFinish:function() { bigpicture.removeChild(pic); img.setAttribute("id", "pic"); Effect.Appear(img, {duration:0.4}); }}); 
	});
	bigpicture.appendChild(img);
	img.setAttribute("src", src);
}

function changeMotherObject(qbankid,objid, src, x, y) {
	changePic(src, x, y)

	var params = {id:qbankid,objectid:objid};
	new Ajax.Request(
		"ajax/switchmotherobject.php", {
			method:"get",
			parameters: $H(params).toQueryString()
		}
	);
	
	str="editprofile.php?id="+qbankid;
	
	setTimeout('location.href='+str+';', 800);

	document.location.href=str;
}


function visitcardchange(value,column,objectid,folderid) {

	var params = {objectId:objectid,folderId:folderid,val:value,col:column};
	new Ajax.Request(
		"ajax/setinformationonobject.php", {
			method:"get",
			parameters: $H(params).toQueryString(),
			onSuccess:function(req) {
				//alert(req.responseText);
			},
			onFailure:function() {			
				//alert(req.responseText);
			}
		}
	);
	
}

function sendmessageproject(charid){
	
	afolder=($('messagea').checked ? 1:0);
	bfolder=($('messageb').checked ? 1:0);
	appliers=($('appliers').checked ? 1:0);
	text=$('messagetext').value;
	subj=$('subject').value;

	if(!afolder && !bfolder && !appliers){
		alert("du måste välja en mapp");	
	} else {
		var params = {characterid:charid,a:afolder,b:bfolder,app:appliers,message:text,subject:subj};
		new Ajax.Request(
			"ajax/sendmessagefolder.php", {
				method:"get",
				parameters: $H(params).toQueryString(),
				onSuccess:function(req) {
					//alert(req.responseText);'
					$('messagea').checked=0;
					$('messageb').checked=0;
					$('appliers').checked=0;
					$('messagetext').innerHTML="";
					$('subject').value="";
					
					$('resptext').innerHTML="Meddelande skickat.";
					Effect.Pulsate("resptext", {duration: 1})
				},
				onFailure:function() {
					//alert(req.responseText);
				}
			}
		);	
		
	}
}

function changePassword(){
	
	p1=document.getElementById("password1").value;
	p2=document.getElementById("password2").value;
	
	if(p1!="" && p1==p2){
		var params = {pass1:p1};
		new Ajax.Request(
			"ajax/changepassword.php", {
				method:"get",
				parameters: $H(params).toQueryString(),
				onSuccess:function(req) {
					Effect.Appear('changepassword', {duration:1});
					$("passworderror").style.color="green";
					$("passworderror").innerHTML="Ditt lösenord är utbytt!";
					Effect.Pulsate("passworderror",{afterFinish:function() {Effect.Fade('changepassword');}});
					
				}
			}
		);
	}
	else if(p1==""){
		Effect.Appear('changepassword', {duration:1});
		$("passworderror").style.color="red";
		$("passworderror").innerHTML="Du måste fylla i lösenord!";
	}
	else if(p1!=p2){
		Effect.Appear('changepassword', {duration:1});
		$("passworderror").style.color="red";
		$("passworderror").innerHTML="Fyll i samma lösenord två gånger!";
	}
	
}

function toggleSearch(adv, simple) {
	var searchbox = $("advsearchbox");
	advs=$('advsearch');
	simps=$('simplesearch');
	if (searchbox.style.display == "none") {
		advs.style.display = "none";
		simps.style.display = searchbox.style.display = "block";
	} else {
		advs.style.display = "block";
		simps.style.display = searchbox.style.display = "none";
	}
}

function zoomSearchhit(id) {
}

function removeZoom() {

}

function sendForgotEmail(emailaddress){
	
	var params = {email:emailaddress};
	new Ajax.Request(
		"ajax/forgottmail.php", {
			method:"get",
			parameters: $H(params).toQueryString(),
			onSuccess:function(req) {
				if(req.responseText=="true"){
					Effect.Fade('forgottform', {duration:0.4, afterFinish:function(){Effect.Appear('loginform', {duration:0.4});Effect.Appear('mailsent', {duration:0.4});}});
				}
				else{
					alert(req.responseText);
					Effect.Fade('forgotttext', {duration:0.4, afterFinish:function(){Effect.Appear('wrongmail', {duration:0.4});}});
				}
			},
			onFailure:function() {			
				alert("Addressen du angav kunde inte hittas.");
			}
		}
	);
	
}

function trashIt(objectId, childId) {
	var params = {id:objectId, childid:childId};
	new Ajax.Request(
		"ajax/trashmedia.php", {
			method:"get",
			parameters: $H(params).toQueryString(),
			onSuccess:function(req) {
				Effect.Puff("pic"+childId, { afterFinish:function() { Element.remove("pic"+childId); }} );	
				var upl = Builder.node("a", { href:"javascript:;", onclick:"Effect.Appear('imageupload', {duration:1});", style:"text-decoration:none; display:none;", 'class':"picture"}); upl.innerHTML = "<br><br>Klicka h&auml;r <br>f&ouml;r att ladda upp <br>en ny bild"; $("smallpics").appendChild(upl); Effect.Grow(upl);
			},
			onFailure:function() {
				alert("Kunde inte ta bort bilden.");
			}
		}
	);
}

function applyToProject(appliers,charid){
	var params = {appliers:appliers,charid:charid};
	new Ajax.Request(
		"ajax/applytoproject.php", {
			method:"get",
			parameters: $H(params).toQueryString(),
			onSuccess:function(req) {
				$("apply"+charid).innerHTML="<a href=\"javascript:if(confirm('är du säker på att du vill återkalla ansökan?')){document.location.href='?remove="+charid+"&appliers="+appliers+"&from=topmenu'}\">återkalla ansökan</a>";
				$("messagefromactor").style.display="block";	
			},
			onFailure:function() {
				alert("Det gick inte att ansöka till detta projekt.");
			}
		}
	);	
}



function isActorInProject(){
	
	if($('charid').options[$('charid').options.selectedIndex].getAttribute("isinproject")=="yes"){
		$('addproject').innerHTML="ta bort";
		$('addproject').className="projectbtnprof"
		$('addproject').title="ta bort från projekt"
	}
	else if($('charid').options[$('charid').options.selectedIndex].getAttribute("isinproject")=="no"){
		$('addproject').innerHTML="lägg till";
		$('addproject').className="projectbtnprof"
		$('addproject').title="lägg till i projekt"
	}
	else{
		$('addproject').innerHTML="";
		$('addproject').className="";
	}	
}


var lastCharId = 0;
function getProjectInfo(obj, projectId, projectName, charId, charName) {
	var params = {
		projectid:projectId,
		projectname:projectName,
		characterid:charId,
		charactername:charName
	};

	if (lastCharId != 0) {
		$("toggle"+lastCharId).src = "images/plus.gif";
		$("char"+lastCharId).hide();
		$("project"+lastCharId).className = "";
	}
	if (charId == lastCharId) {
		lastCharId = 0; return;
	}
	lastCharId = charId;

	new Ajax.Request (
		"ajax/folderinfo.php", {
			method:"get",
			parameters: $H(params).toQueryString(),
			onSuccess:function(req) {
				var chara = $("char"+charId);
				chara.innerHTML = req.responseText;
				Element.show(chara);
				obj.className = "exinfotop";
				$("toggle"+charId).src = "images/minus.gif";
			},
			onFailure:function() {}
		}
	);	
}

var lastMessageId = 0;
function getMessage(obj, messageId,toId,coming) {
	var params = { messageid:messageId,toid:toId};

	if (lastMessageId != 0) {
		$("toggle"+lastMessageId).src = "images/plus.gif";
		$("msg"+lastMessageId).hide();
		$("header"+lastMessageId).className = "";
	}
	if (messageId == lastMessageId) {
		lastMessageId = 0; return;
	}
	lastMessageId = messageId;

	new Ajax.Request (
		"ajax/getmessage.php", {
			method:"get",
			parameters: $H(params).toQueryString(),
			onSuccess:function(req) {
				var msg = $("msg"+messageId);
				msg.innerHTML = req.responseText;
				Element.show(msg);
				obj.className = "exinfotop";
				$("toggle"+messageId).src = "images/minus.gif";
			},
			onFailure:function() {}
		}
	);	
}

function help(e) {
	var targ;
	if (!e) var e = window.event;
	if (e.target) targ = e.target;
	else if (e.srcElement) targ = e.srcElement;
	if (targ.nodeType == 3) // defeat Safari bug
		targ = targ.parentNode;
	
	if($("help")){
		$("help").innerHTML = targ.getAttribute("helptext");
		$("help").morph("top: "+Position.cumulativeOffset(targ)[1]+"px", {duration:0.2});
	}
	else{
		$("helpwizz").innerHTML = targ.getAttribute("helptext");
		$("helpwizz").morph("top: "+Position.cumulativeOffset(targ)[1]+"px", {duration:0.2});
	}
		
}

function initHelp() {
	var list, types;
	types = Array("input", "textarea", "select");
	for (var i=0; i<types.length; i++) {
		list = document.getElementsByTagName(types[i]);
		for (var j=0; j<list.length; j++)
			if (list[j].getAttribute("helptext") != undefined)
				list[j].onmouseover = list[j].onfocus = help;
	}
}

window.onload=initHelp;

function toggleTab(active, other) {
	other.each(function(x) {
		$(x+"Tab").className = "";
		$(x).hide();
	});

	$(active+"Tab").className = "current";
	$(active).show();
}

function toggleProjectActors(charId, silent) {
	var actors = $("actors"+charId);
	var toggle = $("toggle"+charId);
	var hash = $A(new String(document.location.hash.substr(1)).split(/,/g));

	if (!actors || !toggle)
		return;

	if (new String(toggle.src).indexOf("plus") > -1) {
		if (!silent)
			hash.push(charId);

		toggle.src = "images/minus.gif";
		if (!silent)
			Effect.BlindDown(actors, {duration:0.5});
		else
			Element.show(actors);
	} else {
		if (!silent)
			hash = hash.without(charId);

		toggle.src = "images/plus.gif";	
		if (!silent)
			Effect.BlindUp(actors, {duration:0.5});
		else
			Element.hide(actors);
	}

	location.hash = "#"+hash;
}

function openFolders() {
	var hash = $A(new String(document.location.hash.substr(1)).split(/,/g));
	hash.each( function(charId) {
		if (charId != undefined && charId != null && charId != "")
			toggleProjectActors(charId, true);
	});
}

function addToProject(projectid, charid){
	var params = {
		projectid:projectid,
		charid:charid
	};
	new Ajax.Request(
		"ajax/applytoproject.php", {
			method:"get",
			parameters: $H(params).toQueryString(),
			onSuccess:function() {
				
			},
			onFailure:function() {
				alert("Ett fel uppstod!");
			}
		}
	);	
}

function addFromSearch(o, objectId,from) {
	var chara = $("charid");
	var charId = chara.options[chara.selectedIndex].value;
	if(from=="search"){
		var add = new String(o.src).indexOf("add") > -1;
	}
	else{
		var add = new String($('addproject').innerHTML).indexOf("till") > -1;
		o=$('addproject');
	}
	var params = {
		charid:charId,
		objectid:objectId,
		action:add?"add":"remove"
	};
	new Ajax.Request(
		"ajax/addtoproject.php", {
			method:"get",
			parameters: $H(params).toQueryString(),
			onSuccess:function(req) {
				if(from=="search")
					o.src = (add ? "images/remove_char.gif" : "images/add_char.gif");
				else{ 
					(add ? o.innerHTML="Ta bort" : o.innerHTML="L&auml;gg till");
					(add ? chara.options[chara.selectedIndex].style.backgroundColor="ddd" : chara.options[chara.selectedIndex].style.backgroundColor="fff");
					(add ? chara.options[chara.selectedIndex].setAttribute("isinproject","yes") : chara.options[chara.selectedIndex].setAttribute("isinproject","no"));
					
					
				}
				
				added=(add ? 1 : -1);
				number=parseInt(chara.options[chara.selectedIndex].getAttribute("name"))+parseInt(added);
				
				chara.options[chara.selectedIndex].setAttribute("name",number);
				chara.options[chara.selectedIndex].text=chara.options[chara.selectedIndex].id+" ("+number+")";	
				//Effect.Pulsate("charid",{afterFinish:function(){Effect.Appear("charid", {duration:0.4});}});
				
				//Effect.Pulsate(o,{afterFinish:function(){Effect.Appear(o, {duration:0.4});}});
			},
			onFailure:function() {
				alert("Ett fel uppstod!");
			}
		}
	);
}

var charObjects;
function getObjectsByCharId(projId) {
	
	if($('notcharid')){
		$('notcharid').value=projId;
	}
	
	var params = {
		projid:projId
	};
	new Ajax.Request(
		"ajax/getcharacters.php", {
			method:"get",
			parameters: $H(params).toQueryString(),
			onSuccess:function(req) {
				var actors = document.getElementsByClassName("dummy");

				try {
					charObjects = eval(req.responseText);
				} catch(e) {
					actors.each(function(obj) {
						obj.src = "images/x.gif";
					});
					return;
				}

				actors.each(function(obj) {
					if (charObjects.indexOf(obj.id.replace("actor", "")) > -1){
						obj.src = "images/remove_char.gif";
						obj.title="ta bort från projekt";
					}	
					else{
						obj.src = "images/add_char.gif";
						obj.title="lägg till i projekt";
					}	
				});
			},
			onFailure:function() {
				alert("Ett fel uppstod!");
			}
		}
	);	
}

function goToProfile(objectid,step){
	
	if($("charid")){
		projid=document.getElementById("charid").options[document.getElementById("charid").options.selectedIndex].getAttribute('projectid');
	}
	else{
		projid=0;
	}
	document.location.href="navobject.php?id="+objectid+"&go="+step+"&projectid="+projid;
	
	
}

function moveToFolder(objectId, charId, newFolder, fromFolder) {
	var params = {
		objectid:objectId,
		charid:charId,
		folder:newFolder
	};
	
	new Ajax.Request(
		"ajax/movetofolder.php", {
			method:"get",
			parameters: $H(params).toQueryString(),
			onSuccess:function(req) {
	
				var actor = $("actor"+objectId);
				$("actor"+objectId+"a").src = "images/a_off.gif";
				$("actor"+objectId+"b").src = "images/b_off.gif";
				//$("actor"+objectId+"c").src = "images/c_off.gif";
				$("actor"+objectId+newFolder.toLowerCase()).src = "images/"+newFolder.toLowerCase()+"_on.gif";
				
				changeNum(actor.parentNode.parentNode.getElementsByTagName("span")[0], -1);
				//Effect.Fade(actor, {duration:0.5, afterFinish:function(){ actor.parentNode.removeChild(actor); document.getElementsByClassName("actors"+newFolder)[0].appendChild(actor); Effect.Appear(actor, {duration:0.5}); }});
				actor.parentNode.removeChild(actor); document.getElementsByClassName("actors"+newFolder)[0].appendChild(actor);
				changeNum(document.getElementsByClassName("actors"+newFolder)[0].parentNode.getElementsByTagName("span")[0], 1);
				//document.location.reload();
				//movecomplete = true;
				
			},
			onFailure:function() {
				alert("Ett fel uppstod!");
			}
		}
	);	
}


function SetCookie(cookieName,cookieValue,nDays) {
	var today = new Date();
	var expire = new Date();
	if (nDays==null || nDays==0) nDays=1;
	expire.setTime(today.getTime() + 3600000*24*nDays);
	document.cookie = cookieName+"="+escape(cookieValue) + ";expires="+expire.toGMTString();
}

function closeSearchInfo(o) {
	//o.style.display = "none";
	Effect.Fade(infomessage, {duration:1.0});
	SetCookie("SearchInfo", 1, 3000);
}

function deleteFromProject(charId, objectId) {
	var params = {
		objectid:objectId,
		charid:charId
	};
	
	new Ajax.Request(
		"ajax/deletefromproject.php", {
			method:"get",
			parameters: $H(params).toQueryString(),
			onSuccess:function(req) {
				var actor = $("actor"+objectId);
				Effect.Puff(actor);

				changeNum(actor.parentNode.parentNode.getElementsByTagName("span")[0], -1);
				changeNum($("persons"), -1);
				changeNum($("persons"+charId), -1);
			},
			onFailure:function() {
				alert("Ett fel uppstod!");
			}
		}
	);	
	//document.location.reload();
}

function deleteFromAgent(objectId) {
	var params = {
		objectid:objectId
	};
	
	new Ajax.Request(
		"ajax/deletefromagent.php", {
			method:"get",
			parameters: $H(params).toQueryString(),
			onSuccess:function(req) {
				var actor = $("actor"+objectId);
				Effect.Puff(actor);
			},
			onFailure:function() {
				alert("Ett fel uppstod!");
			}
		}
	);	
	//document.location.reload();
}

function changeNum(obj, num) {
	obj.innerHTML = parseInt(obj.innerHTML)+num;
}

function processPayment(){
	
	Effect.Fade("payform",{duration:0.5,afterFinish:function(){Effect.Appear("processing", {duration:0.4});}});
	
	document.projectform.submit();	
}

function checkProjectForm(){

	var re = /(19|20)\d\d-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])/;
	
	if( !re.test($('projectend').value) ){
		alert('Fel datumformat på projektslut. Formatet skall vara åååå-mm-dd');
		$('projectend').focus();
		return false;
	} 
	if( !re.test($('lastapplydate').value) ){
		alert('Fel datumformat på senaste anmälningsdatum. Formatet skall vara åååå-mm-dd');
		$('lastapplydate').focus();
		return false;
	} 
	if( !re.test($('provfilmning').value) && $('provfilmning').value!="" ){
		alert('Fel datumformat på provfilmningsdatum. Formatet skall vara åååå-mm-dd');
		$('provfilmning').focus();
		return false;
	} 
	if( !re.test($('fittingdatum').value) && $('fittingdatum').value!=""){
		alert('Fel datumformat på kostymprov. Formatet skall vara åååå-mm-dd');
		$('fittingdatum').focus();
		return false;
	} 
	return true;
	
}	
function checkProjectAds(){

	var re = /(19|20)\d\d-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])/;
	
	if( !re.test($('lastapplydate').value) ){
		alert('Fel datumformat på senaste anmälningsdatum. Formatet skall vara åååå-mm-dd');
		$('lastapplydate').focus();
		return false;
	} 
	if( !re.test($('provfilmning').value) && $('provfilmning').value!="" ){
		alert('Fel datumformat på provfilmningsdatum. Formatet skall vara åååå-mm-dd');
		$('provfilmning').focus();
		return false;
	} 
	if( !re.test($('fittingdatum').value) && $('fittingdatum').value!=""){
		alert('Fel datumformat på kostymprov. Formatet skall vara åååå-mm-dd');
		$('fittingdatum').focus();
		return false;
	} 
	return true;
	
}	

function checkProjectDescription(){

	var re = /(19|20)\d\d-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])/;
	
	if( !re.test($('projectend').value) ){
		alert('Fel datumformat på projektslut. Formatet skall vara åååå-mm-dd');
		$('projectend').focus();
		return false;
	} 
	
	return true;
	
}	

function newproject(){
	window.open('projwizz.php','popup','height=680,width=665,scrolling=no');
			
}

function vote(movie, vote) {
	if ($("votetext").innerHTML.strip() == "") {
		var params = {
			movie:movie,
			vote:vote
		};
		
		new Ajax.Request(
			"ajax/vote.php", {
				method:"get",
				parameters: $H(params).toQueryString(),
				onSuccess:function(req) {
					var rating = $("rating");
					rating.style.width = req.responseText+"%";
					$("votetext").innerHTML = "Tack f&ouml;r din r&ouml;st!";
				},
				onFailure:function() {
					alert("Ett fel uppstod!");
				}
			}
		);
	}
}
