ajaxFile = "http://partypalooza.de/inc/inc.ajax_actions.php";

requiredFormFields = new Array();

requiredFormFields['searchbox'] = new Array(0);
requiredFormFields['searchbox'][0] = new Array();
requiredFormFields['searchbox'][0]['input_name'] = "searchstring";
requiredFormFields['searchbox'][0]['input_type'] = "text";
requiredFormFields['searchbox'][0]['output_name'] = "Suchbegriff";

requiredFormFields['frm-register'] = new Array(0, 1, 2, 3);
requiredFormFields['frm-register'][0] = new Array();
requiredFormFields['frm-register'][0]['input_name'] = "profile_user";
requiredFormFields['frm-register'][0]['input_type'] = "text";
requiredFormFields['frm-register'][0]['output_name'] = "Username";
requiredFormFields['frm-register'][1] = new Array();
requiredFormFields['frm-register'][1]['input_name'] = "profile_email";
requiredFormFields['frm-register'][1]['input_type'] = "email";
requiredFormFields['frm-register'][1]['output_name'] = "E-Mail";
requiredFormFields['frm-register'][2] = new Array();
requiredFormFields['frm-register'][2]['input_name'] = "profile_pass";
requiredFormFields['frm-register'][2]['input_type'] = "text";
requiredFormFields['frm-register'][2]['output_name'] = "Passwort";
requiredFormFields['frm-register'][3] = new Array();
requiredFormFields['frm-register'][3]['input_name'] = "profile_passrepeat";
requiredFormFields['frm-register'][3]['input_type'] = "text";
requiredFormFields['frm-register'][3]['output_name'] = "Wiederholung";

requiredFormFields['frm-profile'] = new Array(0, 1);
requiredFormFields['frm-profile'][0] = new Array();
requiredFormFields['frm-profile'][0]['input_name'] = "profile_user";
requiredFormFields['frm-profile'][0]['input_type'] = "text";
requiredFormFields['frm-profile'][0]['output_name'] = "Username";
requiredFormFields['frm-profile'][1] = new Array();
requiredFormFields['frm-profile'][1]['input_name'] = "profile_email";
requiredFormFields['frm-profile'][1]['input_type'] = "email";
requiredFormFields['frm-profile'][1]['output_name'] = "E-Mail";

requiredFormFields['loginbox'] = new Array(0, 1);
requiredFormFields['loginbox'][0] = new Array();
requiredFormFields['loginbox'][0]['input_name'] = "loginuser";
requiredFormFields['loginbox'][0]['input_type'] = "text";
requiredFormFields['loginbox'][0]['output_name'] = "Username";
requiredFormFields['loginbox'][1] = new Array();
requiredFormFields['loginbox'][1]['input_name'] = "loginpass";
requiredFormFields['loginbox'][1]['input_type'] = "text";
requiredFormFields['loginbox'][1]['output_name'] = "Passwort";

requiredFormFields['frm-contact'] = new Array(0, 1, 2);
requiredFormFields['frm-contact'][0] = new Array();
requiredFormFields['frm-contact'][0]['input_name'] = "contact_name";
requiredFormFields['frm-contact'][0]['input_type'] = "text";
requiredFormFields['frm-contact'][0]['output_name'] = "Name";
requiredFormFields['frm-contact'][1] = new Array();
requiredFormFields['frm-contact'][1]['input_name'] = "contact_email";
requiredFormFields['frm-contact'][1]['input_type'] = "email";
requiredFormFields['frm-contact'][1]['output_name'] = "E-Mail";
requiredFormFields['frm-contact'][2] = new Array();
requiredFormFields['frm-contact'][2]['input_name'] = "contact_msg";
requiredFormFields['frm-contact'][2]['input_type'] = "textarea";
requiredFormFields['frm-contact'][2]['output_name'] = "Nachricht";

requiredFormFields['frm-add-news'] = new Array(0, 1);
requiredFormFields['frm-add-news'][0] = new Array();
requiredFormFields['frm-add-news'][0]['input_name'] = "news_head";
requiredFormFields['frm-add-news'][0]['input_type'] = "text";
requiredFormFields['frm-add-news'][0]['output_name'] = "berschrift";
requiredFormFields['frm-add-news'][1] = new Array();
requiredFormFields['frm-add-news'][1]['input_name'] = "news_text";
requiredFormFields['frm-add-news'][1]['input_type'] = "textarea";
requiredFormFields['frm-add-news'][1]['output_name'] = "Nachricht";

requiredFormFields['frm-gb'] = new Array(0, 1);
requiredFormFields['frm-gb'][0] = new Array();
requiredFormFields['frm-gb'][0]['input_name'] = "gb_name";
requiredFormFields['frm-gb'][0]['input_type'] = "text";
requiredFormFields['frm-gb'][0]['output_name'] = "Name";
requiredFormFields['frm-gb'][1] = new Array();
requiredFormFields['frm-gb'][1]['input_name'] = "gb_msg";
requiredFormFields['frm-gb'][1]['input_type'] = "textarea";
requiredFormFields['frm-gb'][1]['output_name'] = "Nachricht";

requiredFormFields['frm-calendar'] = new Array(0, 1, 2);
requiredFormFields['frm-calendar'][0] = new Array();
requiredFormFields['frm-calendar'][0]['input_name'] = "event_name";
requiredFormFields['frm-calendar'][0]['input_type'] = "text";
requiredFormFields['frm-calendar'][0]['output_name'] = "Event";
requiredFormFields['frm-calendar'][1] = new Array();
requiredFormFields['frm-calendar'][1]['input_name'] = "event_location";
requiredFormFields['frm-calendar'][1]['input_type'] = "text";
requiredFormFields['frm-calendar'][1]['output_name'] = "Ort";
requiredFormFields['frm-calendar'][2] = new Array();
requiredFormFields['frm-calendar'][2]['input_name'] = "event_start";
requiredFormFields['frm-calendar'][2]['input_type'] = "text";
requiredFormFields['frm-calendar'][2]['output_name'] = "Beginn";

requiredFormFields['frm-web-upload-1'] = new Array(0, 1, 2, 3);
requiredFormFields['frm-web-upload-1'][0] = new Array();
requiredFormFields['frm-web-upload-1'][0]['input_name'] = "set_name";
requiredFormFields['frm-web-upload-1'][0]['input_type'] = "text";
requiredFormFields['frm-web-upload-1'][0]['output_name'] = "Event";
requiredFormFields['frm-web-upload-1'][1] = new Array();
requiredFormFields['frm-web-upload-1'][1]['input_name'] = "set_location";
requiredFormFields['frm-web-upload-1'][1]['input_type'] = "text";
requiredFormFields['frm-web-upload-1'][1]['output_name'] = "Ort";
requiredFormFields['frm-web-upload-1'][2] = new Array();
requiredFormFields['frm-web-upload-1'][2]['input_name'] = "set_date";
requiredFormFields['frm-web-upload-1'][2]['input_type'] = "date";
requiredFormFields['frm-web-upload-1'][2]['output_name'] = "Datum";
requiredFormFields['frm-web-upload-1'][3] = new Array();
requiredFormFields['frm-web-upload-1'][3]['input_name'] = "set_descr";
requiredFormFields['frm-web-upload-1'][3]['input_type'] = "text";
requiredFormFields['frm-web-upload-1'][3]['output_name'] = "Beschreibung";

requiredFormFields['frm-web-upload-2'] = new Array(0);
requiredFormFields['frm-web-upload-2'][0] = new Array();
requiredFormFields['frm-web-upload-2'][0]['input_name'] = "set_file";
requiredFormFields['frm-web-upload-2'][0]['input_type'] = "text";
requiredFormFields['frm-web-upload-2'][0]['output_name'] = "Photo";

requiredFormFields['frm-web-upload-3'] = new Array(0);
requiredFormFields['frm-web-upload-3'][0] = new Array();
requiredFormFields['frm-web-upload-3'][0]['input_name'] = "preview";
requiredFormFields['frm-web-upload-3'][0]['input_type'] = "radio";
requiredFormFields['frm-web-upload-3'][0]['output_name'] = "Vorschaubild";

requiredFormFields['frm-comment'] = new Array(0);
requiredFormFields['frm-comment'][0] = new Array();
requiredFormFields['frm-comment'][0]['input_name'] = "comment_msg";
requiredFormFields['frm-comment'][0]['input_type'] = "text";
requiredFormFields['frm-comment'][0]['output_name'] = "Kommentar";


var boolIsIE = (document.all) ? true : false;

function checkForm(strFormID) {

  var f = document.forms[strFormID];
	var r = requiredFormFields[strFormID];
	var missingFields = new Array();
	var email_error = false;
	var date_error = false;
	var comment_error = false;
	var error_msg = "";
	
	for(i=0, j=r.length; i<j; i++) {
		var failed = false;
		
		if (r[i]['input_type'] == "radio") {
			failed = true;
			arrRadio = f.eval(r[i]['input_name']);
			
			for (m=0, n=arrRadio.length; m<n; m++) {
				if (arrRadio[m].checked) {
					failed = false;
				}
			}
			
		}
		
		if (r[i]['input_type'] == "text" || r[i]['input_type'] == "textarea" || r[i]['input_type'] == "email" || r[i]['input_type'] == "date") {
			if(f.eval(r[i]['input_name']).value == "") failed = true;
		}
		
		if (!failed && r[i]['input_type'] == "email") {
			if(!is_valid_email(f.eval(r[i]['input_name']).value)) email_error = true;
		}
		
		if (!failed && r[i]['input_type'] == "date") {
			if(!is_valid_date(f.eval(r[i]['input_name']).value)) date_error = true;
		}
		
		if (failed) missingFields.push(r[i]['output_name']);
	}

	// Bei Kommentarfeld
	/*if (strFormID == 'frm-comment') {
		for (i=0, j=arrUsedBBElems.length; i<j; j++) {
			if (arrUsedBBElems[i][2] != 0) {
				alert(i);
				comment_error = true;
				break;
			}
		}
	}*/
	
  if (missingFields.length==0 && !email_error && !date_error && !comment_error){
    return true;
  } else {
		if (missingFields.length>0) {
			error_msg += "Folgende Felder mssen ausgefllt werden:\n- "+missingFields.join("\n- ");
			if (email_error || date_error) error_msg += "\n\n";
		}
		
		if (email_error)   error_msg += "Die angegebene E-Mail-Adresse ist ungltig.\n";
		if (date_error)    error_msg += "Das angegebene Datum ist ungltig (Format: TT.MM.JJJJ).\n";
		if (comment_error) error_msg += "\n\nBitte schliee alle BB-Tags.";
		
    alert(error_msg);
    return false;
  }
}

function is_valid_email(s)
{
	return (s.search('@') >= 1 && s.lastIndexOf('.') > s.search('@') && s.lastIndexOf('.') >= s.length-5);
}

function is_valid_date(s)
{
	var date = s.split(".");
	var retVal = true;
	
	if (date.length == 3) {
		if (date[0].length < 1 || date[0].length > 2 || date[0] > 31) retVal = false;
		if (date[1].length < 1 || date[1].length > 2 || date[1] > 12) retVal = false; 
		if (date[2].length != 4) retVal = false; 
	} else {
		retVal = false; 
	}
	
	return retVal;
}

function conf(strURL, strType){
	switch (strType) {
		case 'simulate': 
			strMessage = 'Dieses Userprofil simulieren?';
			break;
			
		case 'delete_all_photos': 
			strMessage = 'Sollen wirklich alle Photos gelscht werden?';
			break;	
		
		default : strMessage = 'Soll das Objekt wirklich gelscht werden?'; // loeschen ist default
	}
	
  check = confirm(strMessage);
	
	if(check) {
		window.location = strURL+'&confirm=1';
	} else {
		return false;
	}
}

/**
 *	BB Code
 */
// zum Speichern der Zustaende
arrUsedBBElems          = new Array('b', 'u', 'i', 'quote', 'url', 'mail');
arrUsedBBElems['b']     = new Array('[b]', '[/b]', 0);
arrUsedBBElems['u']     = new Array('[u]', '[/u]', 0);
arrUsedBBElems['i']     = new Array('[i]', '[/i]', 0);
arrUsedBBElems['quote'] = new Array('[quote]', '[/quote]', 0);
arrUsedBBElems['url']   = new Array('[url]', '[/url]', 0);
arrUsedBBElems['mail']  = new Array('[mail]', '[/mail]', 0);

function insert_bb(strBB, strFormID) {
	if (strFormID == null)
		strFormID = 'comment-msg';

	objTA = document.getElementById(strFormID);
	
	if (arrUsedBBElems[strBB]) {
		if (arrUsedBBElems[strBB][2] == 0) {
			objTA.value += arrUsedBBElems[strBB][0];
			arrUsedBBElems[strBB][2] = 1;
		} else {
			objTA.value += arrUsedBBElems[strBB][1];
			arrUsedBBElems[strBB][2] = 0;
		}
		objTA.focus();
		return true;
	} else {
		return false;
	}
}

function insert_smiley(strSmiley) {
	objTA = document.getElementById('comment-msg');
	objTA.value += " "+strSmiley+" ";
}

/**
 *	Datepicker
 */
function datepicker(strFormID){
	var datepickerURL = "datepicker.php";
	var strDate = document.forms[strFormID].set_date.value;
	if (is_valid_date(strDate)){
		var arrDate =  strDate.split(".");
 		datepickerURL += "?formID=" + strFormID + "&year=" + arrDate[2] + "&month=" + arrDate[1] + "&day=" + arrDate[0];
	}
	windowDatepicker = window.open(datepickerURL, "pp_datepicker", 'width=160, height=150, scrollbars=no, resizable=no');
}

/**
 *	Tooltip
 */
var intTTOffsetX = 15;
var intTTOffsetY = 0;

function showTT() {
	document.getElementById('tooltip').style.display = "block";
}

function hideTT(){
	var objTT = document.getElementById('tooltip');
	objTT.innerHTML = '';
	objTT.style.display = "none";
}

function positionTT(e) {
	var objTT = document.getElementById('tooltip');

	if (objTT.innerHTML != '') {
		if (!e) e = window.event;
		// Groesse des Anzeigebereichs
		var iW    = (document.all) ? document.documentElement.clientWidth : window.innerWidth;
		var iH    = (document.all) ? document.documentElement.clientHeight : window.innerHeight;
		// Groesse des Tooltips
		var ttW   = objTT.clientWidth;
		var ttH   = objTT.clientHeight;
		// Position berechnen
		var x = (document.all) ? e.x + document.documentElement.scrollLeft : e.pageX;
		var y = (document.all) ? e.y + document.documentElement.scrollTop  : e.pageY;
		// rechts oder links, oberhalb oder unterhalb des Mauszeigers? 
		var switchPosX = ((x+intTTOffsetX+ttW+25)>=iW) ? true : false;
		var switchPosY = ((y+intTTOffsetY+ttH+25)>=(iH + document.documentElement.scrollTop)) ? true : false;
		// Offset einrechnen
		x = (switchPosX) ? x-intTTOffsetX-ttW : x+intTTOffsetX;
		y = (switchPosY) ? y-intTTOffsetY-ttH : y+intTTOffsetY;
		// positionieren
		objTT.style.left = x + "px";
		objTT.style.top = y + "px";
	}
}

function init() {
	document.onmousemove = positionTT;
}

/**
 *	Kalender
 */
function setEventTooltip(strEvents, strSets) {
	var strTT = '';
	var strEventList = '';
	var arrEvents = strEvents.split('###');
	var strSetList = '';
	var arrSets = strSets.split('###');
	
	// Listen generieren
	for (i=0, j=arrEvents.length; i<j; i++) strEventList += '<li>'+arrEvents[i]+'</li>';
	for (i=0, j=arrSets.length; i<j; i++) strSetList += '<li>'+arrSets[i]+'</li>';
	
	if (strEventList != '<li></li>') strTT += '<h2>Events</h2><ul id="tt-events">' + strEventList + '</ul>';
	if (strSetList != '<li></li>') strTT += '<h2>Photosets</h2><ul id="tt-photosets">' + strSetList + '</ul>';
	
	document.getElementById('tooltip').innerHTML = strTT;
}

function toggleCalExpand()
{
	objExpand = document.getElementById('calExpand');
	
	objExpand.style.display = (objExpand.style.display == "none" || objExpand.style.display == "")
	                        ? "block"
													: "none";
													
	document.getElementById('linkExpand').innerHTML = (objExpand.style.display == "block") 
	                                                ? "Details ausblenden"
																									: "Details angeben";
}

/**
 *	AJAX Function
 */
var req = getReq();

// Calendar
function calGetMonth(intYear, intMonth) {
	
	req.open("POST", ajaxFile+"?a=AJAX_cal_get_month&calY="+intYear+"&calM="+intMonth, true); // Request starten
	
	req.onreadystatechange = function() {
		var res = getResponse(0);
	
		if (res) {
			document.getElementById("calendar").innerHTML = res;
		}
	}
	req.send(null);
	
	return true;
}

function calEditEvent(intEventID, intUserID) {
	
	req.open("POST", ajaxFile+"?a=AJAX_cal_edit_event&event_id="+intEventID+"&user_id="+intUserID, true); // Request starten
	
	req.onreadystatechange = function() {
		var res = getResponse(0);
		
		if (res) {
			arrValues = res.split('###');
			document.getElementById("event-id").value = arrValues[0];
			document.getElementById("event-name").value = arrValues[1];
			document.getElementById("event-city").value = arrValues[2];
			document.getElementById("event-start").value = arrValues[3];
			document.getElementById("event-url").value = arrValues[4];
			//document.getElementById("event-descr").innerHTML = ' ';
			document.getElementById("event-descr").innerHTML = arrValues[5];
			window.location = window.location + "#frm-calendar";
		}
	}
	req.send(null);
	
	return true;
}

// Kommentare
function editComment(strType, intCommentID, intUserID) {
	
	req.open("POST", ajaxFile+"?a=AJAX_edit_comment&type="+strType+"&comment_id="+intCommentID+"&user_id="+intUserID, true); // Request starten
	
	req.onreadystatechange = function() {
		var res = getResponse(0);
		
		if (res) {
			arrValues = res.split('###');
			document.getElementById("comment-id").value = arrValues[0];
			//document.getElementById("comment-msg").innerHTML = ' ';
			document.getElementById("comment-msg").innerHTML = arrValues[1];
			window.location = window.location + "#write-comment";
		}
	}
	req.send(null);
	
	return true;
}

// News
function editNews(intNewsID, intUserID) {

	req.open("POST", ajaxFile+"?a=AJAX_edit_news&news_id="+intNewsID+"&user_id="+intUserID, true); // Request starten
	
	req.onreadystatechange = function() {
		var res = getResponse(0);
		
		if (res) {
			arrValues = res.split('###');
			document.getElementById("news-id").value = arrValues[0];
			document.getElementById("news-head").value = arrValues[1];
			document.getElementById("news-text").innerHTML = arrValues[2];
			window.location = window.location + "#frm-add-news";
		}
	}
	req.send(null);
	
	return true;
}

// Photobox
function into_lightbox(intPhotoID) {

	req.open("POST", ajaxFile+"?a=AJAX_into_lightbox&photo_id="+intPhotoID, true); // Request starten
	
	req.onreadystatechange = function() {
		var res = getResponse(0);
	
		if (res) {
			if (res != '') {
				document.getElementById("lb-text-count").innerHTML = res;
			} else {
				alert('Es trat ein Fehler auf. Das Photo konnte nicht in die Photobox gelegt werden.');
			}
			
			// Bei 0 Bildern runterladen Button verstecken
			strLbCount = document.getElementById("lb-text-count").innerHTML;
			if (strLbCount.indexOf(" 0 ") == -1) {
				document.getElementById("btn-download-lightbox").style.visibility = 'visible';
			}
			
		}
	}
	req.send(null);
	
	return true;
}

function remove_from_lightbox(intPhotoID, intUserID, intListIteration) {

	req.open("POST", ajaxFile+"?a=AJAX_remove_from_lightbox&photo_id="+intPhotoID+"&user_id="+intUserID, true); // Request starten
	
	req.onreadystatechange = function() {
		var res = getResponse(0);
	
		if (res) {
			if (res != '') {
				document.getElementById("lb-text-count").innerHTML = res;
				objList = document.getElementById("lb-list");
				objRem  = document.getElementById("lb-file-"+intPhotoID);
				objList.removeChild(objRem);

				// Liste neu ordnen
				intCountLI = Math.floor(objList.childNodes.length/2);
				for (i=0, j=objList.childNodes.length, num=1; i<j; i++) {
					objLI = objList.childNodes[i];
					if (objLI.className) {
						num = (num>4) ? 1 : num;
						objLI.className = "col"+num;
						num++;
					}
				}
				
				// Bei 0 Bildern runterladen Button verstecken
				strLbCount = document.getElementById("lb-text-count").innerHTML;
				if (strLbCount.indexOf(" 0 ") != -1) {
					document.getElementById("btn-download-lightbox").style.visibility = 'hidden';
				}
				
			} else {
				alert('Es trat ein Fehler auf. Das Photo konnte nicht aus der Photobox gelscht werden.');
			}
		}
	}
	req.send(null);
	
	return true;
}

// Ads
function countAdClick(intAdID)
{
	req.open("GET", ajaxFile+"?a=AJAX_count_ad_click&ad_id="+intAdID, true); // Request starten
	
	/*req.onreadystatechange = function() {
		var res = getResponse(0);
		
		if (res) {
			arrValues = res.split('###');
			document.getElementById("news-id").value = arrValues[0];
			document.getElementById("news-head").value = arrValues[1];
			document.getElementById("news-text").innerHTML = arrValues[2];
			window.location = window.location + "#frm-add-news";
		}
	}*/
	req.send(null);
	
	return true;
}

/*function download_lightbox(intUserID) {

	req.open("POST", ajaxFile+"?a=AJAX_download_lightbox&user_id="+intUserID, true); // Request starten
	
	req.onreadystatechange = function() {
		var res = getResponse(0);
	
		if (res) {
			if (res == 'error') {
				alert('Es trat ein Fehler auf. Die Photobox konnte nicht heruntergeladen werden.');
			}
		}
	}
	req.send(null);
	
	return true;
}


function loadData(file) {
	req.open("POST", file, true); // Request starten
	
	req.onreadystatechange = function() {
		var res = getResponse(0);
	
		if (res) {
			document.getElementById("test").innerHTML = res;
		}
	}
	req.send(null);
}

*/
