/**********************************************************************
Functies die worden uitgevoerd als de pagina is ingeladen
**********************************************************************/
window.addEvent('domready', function() {
	
	// statistieken bijhouden
	pageHit();
	
	// ratings inladen
	initRating();
	
	// default values in upload formulier zetten
	formDefaults();
	
	// ff voor de debug
	/*
	$('title').value = 'dit is de titel';
	$('tags').value = 'aap noot mies';
	$('name').value = 'Arie';
	*/
	
	// Als bij het upload iets fout is gegaan, de ingevulde waardes weer invullen
	if(bUpload && !bValid){
		$('title').value = aValues[0];
		$('tags').value = aValues[1];
		$('name').value = aValues[2];
	}

	// Function to slide the upload form up and down
	var mySlide = new Fx.Slide('uploadWrap');
	
	// In screen.css is de uploadWrap op display:none gezet, omdat je anders bij het inladen van de pagina de div opengeklapt ziet staan.
	$('uploadWrap').style.display = 'block';
	
	// zodra je op de pagina komt, moet het uploadformulier verborgen zijn, tenzij je net wat hebt geupload
	if(!bUpload){
		mySlide.hide(); 
	}
	
	$('uploadTab').addEvent('click', function(e){
		e = new Event(e);
		mySlide.toggle();
		e.stop();
	});
	
	$('closeUploadWrapLink').addEvent('click', function(e){
		e = new Event(e);
		mySlide.slideOut();
		e.stop();
	});

});

/**********************************************************************
Statistieken teller. De stats zijn in webbeheer uit te lezen.
**********************************************************************/
function pageHit(){
	p = escape(document.location.href);
	rfr = escape(document.referrer);
	if (rfr == "undefined"){ rfr = "";}
	sx = screen.width;
	sy = screen.height;
	sc = (navigator.appName.indexOf("Microsoft") > -1) ? screen.colorDepth : screen.pixelDepth;
	src = 'stats.php?p=' + p + '&rfr=' + rfr + '&sx=' + sx + '&sy=' + sy + '&sc=' + sc;
	//src = '<img style="position:absolute;left:-10px;top:-10px;" src="' + src + '" width="1" height="1" border="0" alt="" />';
	src = '<img src="' + src + '" width="1" height="1" border="0" alt="" />';
	document.getElementById('counter').innerHTML = src;
}

/**********************************************************************
Default values voor het upload formulier
**********************************************************************/
aFormDefaults = new Array();
aFormDefaults[0] = 'short description...';
aFormDefaults[1] = 'keywords separated by spaces...';
aFormDefaults[2] = 'your (nick)name...';

function formDefaults(){
	$('title').value = aFormDefaults[0];
	$('tags').value = aFormDefaults[1];
	$('name').value = aFormDefaults[2];
	
	sCookieName = Cookie.get("name");
	if(sCookieName != ''){
		$('name').value = sCookieName;
	}
}

function clearDefaults(element){
	if(element.id == 'title' && element.value == aFormDefaults[0]){
		element.value = '';
	}
	if(element.id == 'tags' && element.value == aFormDefaults[1]){
		element.value = '';
	}
	if(element.id == 'name' && element.value == aFormDefaults[2]){
		element.value = '';
	}
}

/**********************************************************************
Upload functions
**********************************************************************/

function submitform() {
	// check if all required information is filled out
	bValid = true;
	if($('file').value.length < 2) {
		alert('Please choose a file');	
		$('file').focus();
		bValid = false;
	}	
	else if($('title').value == aFormDefaults[0] || $('title').value.length < 3) {
		alert('Please provide a title');
		$('title').focus();
		bValid = false;
	}
	else if($('tags').value == aFormDefaults[1] || $('tags').value.length < 2) {
		alert('Please provide at least one tag');	
		$('tags').focus();
		bValid = false;
	}
	else if($('name').value == aFormDefaults[2] || $('name').value.length < 2) {
		alert('Please enter your name');
		$('name').focus();
		bValid = false;
	}
	
	if(bValid){
		// hide submit button, show upload indicator
		$('submitBtn').style.display = 'none';
		$('submitLdr').style.display = 'block';
		
		// set hidden value
		$('form_checked').value = 'ok';
		
		// save name in a cookie
		Cookie.set('name', $('name').value, {duration: 100}); // save thisfor 100 days
		
		// submit form
		//document.fileUpload.submit();
		$('fileUpload').submit();
	}
}

/**********************************************************************
Rating functions
**********************************************************************/

var NUMBER_OF_STARS = 5;

function initRating(){
    var ratings = document.getElementsByTagName('div');
    for (var i = 0; i < ratings.length; i++){
        if (ratings[i].className != 'rating')
            continue;
            
        var rating = ratings[i].firstChild.nodeValue; // De score uitlezen die in het divje staat
        ratings[i].removeChild(ratings[i].firstChild); // De score uit het divje verwijderen
		
        if (rating > NUMBER_OF_STARS || rating < 0)
            continue;
        
		for (var j = 0; j < NUMBER_OF_STARS; j++){
            var star = document.createElement('img');
            if (rating >= 1){
                star.setAttribute('src', './images/star_on.gif');
                star.className = 'on';
                rating--;
            } else if(rating == 0.5) {
                star.setAttribute('src', './images/star_half.gif');
                star.className = 'half';
                rating = 0;
            } else {
                star.setAttribute('src', './images/star_off.gif');
                star.className = 'off';
            }
            var widgetId = ratings[i].getAttribute('id').substr(7);
            star.setAttribute('id', 'star_'+widgetId+'_'+j);
            star.onmouseover = new Function("evt", "displayHover("+widgetId+", "+j+");");
            star.onmouseout = new Function("evt", "displayNormal("+widgetId+", "+j+");");
            ratings[i].appendChild(star);
        } 
    }
	
	// Aan alle sterren een click event koppelen
	$$(".rating").getChildren().each(function(star) {
	    star.addEvent('click', submitRating);
    });
}

function displayHover(ratingId, star){
    for (var i = 0; i <= star; i++){
        $('star_'+ratingId+'_'+i).setAttribute('src', './images/star_over.gif');
    }
}

function displayNormal(ratingId, star){
    for (var i = 0; i <= star; i++){
        var status = $('star_'+ratingId+'_'+i).className;
        $('star_'+ratingId+'_'+i).setAttribute('src', './images/star_'+status+'.gif');
    }
}

function submitRating(evt){
    var tmp = new Event(evt).target.getAttribute('id').substr(5);
    var widgetId = tmp.substr(0, tmp.indexOf('_'));
    var starNbr = tmp.substr(tmp.indexOf('_')+1);
    var queryString = Object.toQueryString({'ratingID': widgetId, 'value': starNbr});
    var myAjax = new Ajax('./rating.php?'+queryString, {
			method: 'get',
			onComplete: function(result){
                				
				if(result == 'error'){
					alert('Error: something went wrong...');
				} else if(result == 'doublevote'){
					alert('You can only vote once per wallpaper!');
				} else {
					aResult = result.split('|');
					
					// aantal keer gestemd bijwerken
					$('num_ratings_'+widgetId).innerHTML = aResult[0]; //aResult[0] = aantal ratings
					
					// sterren opnieuw tekenen (er worden express geen onmouseover en onclick events aan gekoppeld)
					$('rating_'+widgetId).innerHTML = ''; // eerst de oude sterren verwijderen
					
					rating = aResult[1]; //aResult[1] = score
					
					for (var j = 0; j < NUMBER_OF_STARS; j++){
						var star = document.createElement('img');
						if (rating >= 1) {
							star.setAttribute('src', './images/star_on.gif');
							star.className = 'on';
							rating--;
						} else if(rating == 0.5) {
							star.setAttribute('src', './images/star_half.gif');
							star.className = 'half';
							rating = 0;
						} else {
							star.setAttribute('src', './images/star_off.gif');
							star.className = 'off';
						}
												
						$('rating_'+widgetId).appendChild(star);
					} 
					
					
				}	
            }
        }).request();
}

