function $(id){
	return document.getElementById(id);
}

function trim(strText)
{
    while (strText.substring(0,1) == ' ')
	strText = strText.substring(1, strText.length);

    while (strText.substring(strText.length-1,strText.length) == ' ')
	strText = strText.substring(0, strText.length-1);

    return strText;
}

function doValidate()
{
	var s="";
    if(trim(document.frmReviews.alias.value)==""){
		s=s+"The field \"Your Name / Alias\" is empty!\r\n";
	}
	var rx=new RegExp("^[\\w\.=-]+@[\\w\\.-]+\\.[a-z]{2,4}$");
	if(!rx.test(document.frmReviews.email.value)){
		s=s+"Please, verify your email address!\r\n";
	}
	if(trim(document.frmReviews.content.value)==""){
		s=s+"The field \"Your Review\" is empty!\r\n";
	}
	if(trim(document.frmReviews.code.value)==""){
		s=s+"Please enter the \"Verification Code\"!\r\n";
	}
	if(s!=""){
	alert(s);
	return;
	}
	document.frmReviews.submit();
}


// AJAX, baby!
function getFile(url, callback, post_keys, post_values, xml){
	try{ var xmlHttp=new XMLHttpRequest(); }   // Firefox, Opera 8.0+, Safari
	catch (e){
		// Internet Explorer
		try{ var xmlHttp=new ActiveXObject('MSXML2.XMLHTTP.3.0'); }
		catch(e){
			try{ var xmlHttp=new ActiveXObject('MSXML3.XMLHTTP'); }
			catch(e){
				try{ var xmlHttp=new ActiveXObject('Msxml2.XMLHTTP'); }
				catch(e){
					try{ var xmlHttp=new ActiveXObject('Microsoft.XMLHTTP'); }
					catch(e){
						throw new Error("Could not find an XMLHttpRequest alternative.");
					}
				}
			}
		}
	}

	var post_string='';
	if(post_keys){
		if(!post_values){
			for(var i in post_keys)
				post_string+=escape(i)+'='+post_keys[i]+'&';
		}
		else
			for(var i=0;i<post_keys.length;i++)
				post_string+=escape(post_keys[i])+'='+escape(post_values[i])+'&';
		post_string=post_string.substring(0, post_string.length-1);
	}

	xmlHttp.open(post_string?'POST':'GET', url, callback?true:false);

	if(post_string){
		xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		xmlHttp.setRequestHeader("Content-length", post_string.length);
		xmlHttp.setRequestHeader("Connection", "close");
		var method='POST';
	}

	if(callback){
		xmlHttp.onreadystatechange=function(){
			if(xmlHttp.readyState==4){
				if(xmlHttp.status==200)
					callback(xml?xmlHttp.responseXML.documentElement:xmlHttp.responseText);
				else
					throw new Error('Page returned error '+xmlHttp.status+' '+xmlHttp.statusText);
			}
		}
	}

	xmlHttp.send(post_string);
	if(!callback)
		return xml?xmlHttp.responseXML.documentElement:xmlHttp.responseText;
	else
		return 'Wait for async';
}


function tabArray(txt, sep, eol){
	if(!txt.length)
		return new Array();
	if(!eol)
		eol='\r\n';
	if(!sep)
		sep='\t';
	var arr=new Array();
	var lines=txt.split(eol)
	for(var i=0;i<lines.length;i++){
		var tmp=lines[i].split(sep);
		arr[tmp[0]]=tmp[1];
	}
	return arr;
}


function fillSelect(elm, keys, values, first_key, first_value, select){
	if(!values){ // keys is an associative array
		values=new Array();
		var k=new Array();
		for(var i in keys){
			k[k.length]=i;
			values[values.length]=keys[i];
		}
		keys=k;
	}
	elm.options.length=0;
	if(first_key || first_value)
		elm.options[elm.options.length]=new Option(first_value, first_key);
	if(!select)
		select=null;
	for(var i=0;i<keys.length;i++){
		elm.options[elm.options.length]=new Option(values[i], keys[i]);
		if(select==keys[i])
			elm.options[elm.options.length-1].selected=true;
	}
	//if((first_key || first_value) && keys.length && elm.selectedIndex==0)
	//	elm.options[1].selected=true;
}


var currentPrice=0;
function fillAnnouncer(type){
        if(type==0)
        	getFile('_serveme.php?c_game='+document.forms['frmAnnouncer'].elements['c_game'].value,
            function(txt){
            	//fillSelect(document.frmAnnouncer.c_srv, tabArray(txt), false, false, false, false);
            	fillSelect(document.frmAnnouncer.c_srv, tabArray(txt), false, false, false, selServer);
                fillAnnouncer(1);
            }
        );
        else if(type==1)
            getFile('_serveme.php?c_srv='+document.forms['frmAnnouncer'].elements['c_srv'].value,
            function(txt){
                //fillSelect(document.frmAnnouncer.c_fact, tabArray(txt), false, false, false, false);
                fillSelect(document.frmAnnouncer.c_fact, tabArray(txt), false, false, false, selFaction);
                document.frmAnnouncer.c_fact.style.display=txt.length?'inline':'none';
                //document.frmAnnouncer.c_fact.style.display=txt.length?'inline':'inline';
                fillAnnouncer(2);
            }
        );
        else if(type==2)
            getFile('_serveme.php?c_game='+document.forms['frmAnnouncer'].elements['c_game'].value+'&c_srv='+document.forms['frmAnnouncer'].elements['c_srv'].value+'&c_fact='+document.forms['frmAnnouncer'].elements['c_fact'].value,
            function(txt){
            	//fillSelect(document.frmAnnouncer.c_amnt, tabArray(txt), false, false, false, false);
            	fillSelect(document.frmAnnouncer.c_amnt, tabArray(txt), false, false, false, selAmount);
                fillAnnouncer(3);
            }
        );
        else if(type==3){
            getFile('_serveme.php?c_game='+document.forms['frmAnnouncer'].elements['c_game'].value+'&c_srv='+document.forms['frmAnnouncer'].elements['c_srv'].value+'&c_fact='+document.forms['frmAnnouncer'].elements['c_fact'].value+'&c_amnt='+document.forms['frmAnnouncer'].elements['c_amnt'].value,
            function(txt){
            	currentPrice=parseFloat(txt);
                document.frmAnnouncer.price.value=txt;
            	}
        	);
    	}
}

function announcerSubmit(go){
    var sp=parseFloat(document.forms['frmAnnouncer'].elements['price'].value);
    if(currentPrice*0.7>sp){
        alert('Price is with 30% smaller than current price');
        var err=true;
    }
    else if(currentPrice<sp){
        alert('Price is larger than current price');
        var err=true;
    }
    else
        var err=false;

	if(!(document.frmAnnouncer.email.value.match(/^[a-z0-9._-]+@[a-z0-9._-]+\.[a-z]+$/))){
	    alert('Please, verify your e-mail address');
	    var err=false;
	    return;
    }

	//if(document.frmAnnouncer.email.value.match(/^[a-z0-9._-]+@[a-z0-9._-]+\.[a-z]+$/) && !err)
    //   document.frmAnnouncer.sub.style.display='inline';
    //else
    //   document.frmAnnouncer.sub.style.display='inline';

    if(go){
	   //alert('_serveme.php?c_game='+document.forms['frmAnnouncer'].elements['c_game'].value+'&c_srv='+document.forms['frmAnnouncer'].elements['c_srv'].value+'&c_fact='+document.forms['frmAnnouncer'].elements['c_fact'].value+'&c_amnt='+document.forms['frmAnnouncer'].elements['c_amnt'].value+'&email='+document.frmAnnouncer.email.value+'&price='+document.frmAnnouncer.price.value);
	   getFile('_serveme.php?c_game='+document.forms['frmAnnouncer'].elements['c_game'].value+'&c_srv='+document.forms['frmAnnouncer'].elements['c_srv'].value+'&c_fact='+document.forms['frmAnnouncer'].elements['c_fact'].value+'&c_amnt='+document.forms['frmAnnouncer'].elements['c_amnt'].value+'&email='+document.frmAnnouncer.email.value+'&price='+document.frmAnnouncer.price.value, function(txt){ alert(txt); });
	}
}

// search form *******************************************************************
function fillSearchForm(type){
		if(type==0)
        	getFile('_serveme.php?c_game='+document.forms['frmSearch'].elements['game'].value,
            function(txt){
            	fillSelect(document.frmSearch.srv, tabArray(txt), false, false, false, selServer);
                fillSearchForm(1);
            }
        );

        else if(type==1)
            getFile('_serveme.php?c_srv='+document.forms['frmSearch'].elements['srv'].value,
            function(txt){
                fillSelect(document.frmSearch.fact, tabArray(txt), false, false, false, selFaction);
                document.frmSearch.fact.style.display=txt.length?'inline':'none';
                document.frmSearch.fact.disabled='';
                fillSearchForm(2);
            }
        );

        else if(type==2){
            getFile('_serveme.php?c_game='+document.forms['frmSearch'].elements['game'].value+'&c_srv='+document.forms['frmSearch'].elements['srv'].value+'&c_fact='+document.forms['frmSearch'].elements['fact'].value,
            function(txt){
            	fillSelect(document.frmSearch.amount, tabArray(txt), false, false, false, selAmount);
            	document.frmSearch.send.disabled=false;
            	document.frmSearch.amount.disabled='';
            	document.frmSearch.send.style.background='#ecbe0d';
            }
        	);
        }
}

function fillSearchFormReview(type){
        if(type==0)
		{
            getFile('_serveme.php?c_game='+$('frmReviewsGame').options[$('frmReviewsGame').selectedIndex].title,
				function(txt){
					fillSelect($('frmReviewsServ'), tabArray(txt), false, false, false, selServer);
					$('frmReviewsServ').disabled = '';                                
					//fillSearchForm(1);
				}
			);
			//$('game').value = $('frmReviewsGame').options[$('frmReviewsGame').selectedIndex].title;
		}
}

function changeCurrency(c){
	document.forms['currencyForm'].elements['currency'].value=c;
	document.forms['currencyForm'].submit();
}
