// Array de Separadores para a data
var lA_ArrayOfSeparators = new Array("/", "-");

// Constantes de validacao de datas
var DAY 	= 1;
var MONTH 	= 2;
var YEAR	= 3;
var YEAR_RANGE_SUP	= 2100;
var YEAR_RANGE_INF	= 1900;

function Guid () 
{
	var g = "";
	for(var i = 0; i < 32; i++)
	g += Math.floor(Math.random() * 0xF).toString(0xF) + (i == 8 || i == 12 || i == 16 || i == 20 ? "_" : "")       
	g = g.substring (1,36) + g.substring (0,1);    		
	return g ;
}


function DownloadFile(filename, fileurl) 
{
	var ifr_src = 'download.aspx?filename=' + escape(filename) + '&fileurl=' + escape(fileurl);
	var ifr = document.getElementById('ifrDownload');
	
	
	if (!ifr) return
		ifr.src = ifr_src;
}

function Vote(frm, Id, op) 
{
	var v, i, vote
	var v=0;

	var cookiename = "poll" + Id;
	
	if (op == 1 && frm != null)
	{		
		vote=-1;
		for (i = 0; i <= frm.Vote.length - 1; i++) {
			if (frm.Vote[i].checked) 
			{
				v = 1; 
				vote = frm.Vote[i].value
			}
		}
		if (vote==-1) return;
	}
		
	if (op > 0 && readCookie(cookiename) == 1) {
		var url = 'default.aspx?SqlPage=poll&CpPollId=' + Id + '&CpPollResultId=' + vote + '&Checked=1';
		window.open(url, "windowpoll", "screenX=50,screenY=50,width=450,height=265,resizable=0,scrollbars=1,dependent=0")
		return
	}
	
	if (op > 0 && frm == null) {
		v = 1;
		vote = op;
	}

	if (v == 1) 
	{
		writeCookie(cookiename, 1, 100000);
		var url = 'default.aspx?SqlPage=poll&CpPollId=' + Id + '&CpPollResultId=' + vote  + '&Checked=0';
		
		window.open(url, "windowpoll", "screenX=50,screenY=50,width=415,height=265,resizable=0,scrollbars=1,dependent=0")
	}
	else 
	{
		var url = 'default.aspx?SqlPage=poll&CpPollId=' + Id;
		window.open(url, "windowpoll", "screenX=50,screenY=50,width=415,height=265,resizable=0,scrollbars=1,dependent=0")
	}
}

function readCookie(name) 
{

	var namearg = name + "=";
	var nlen = namearg.length;
	var clen = document.cookie.length;
	var i = 0;
	while (i < clen) {
		var j = i + nlen;
		if (document.cookie.substring(i, j) == namearg) {
			var endpos = document.cookie.indexOf (";", j);
			if (endpos == -1) endpos = document.cookie.length;
			return unescape(document.cookie.substring(j, endpos));
		}
		i = document.cookie.indexOf(" ", i) + 1;
		if (i == 0) break;
	}
	return null;
}

function writeCookie(name, value, expiry) {
	var expdate = new Date();
	if(expiry) { //horas
		expdate.setTime(expdate.getTime() + 1000 * 60 * 60 * expiry);
		document.cookie = name + "=" + escape(value) + "; expires=" + expdate.toGMTString();
	}
	else {
		document.cookie = name + "=" + escape(value);
	}
}

function deleteCookie(name) {
   if (readCookie(name)) {
     document.cookie = name + "=" + "; expires=Thu, 01-Jan-70 00:00:01 GMT";
   }
}



function CollectIds( id )
{						
	str='';			
	for( n=0; n<arraySearch.length;n++ )
	{
		str = str + arraySearch[n] + '-';						
	}
	
	str = str.substring(0,str.length-1);
	window.location='default.aspx?SqlPage=ImageDetail&IadImagemId=' + id + '&Ids=' + str;
}



function Before()
{
	window.location='default.aspx?SqlPage=ImageDetail&IadImagemId=' + document.getElementById("Before").value + '&Ids=' + document.getElementById("Ids").value;
}				


function Next()
{
	window.location='default.aspx?SqlPage=ImageDetail&IadImagemId=' + document.getElementById("Next").value + '&Ids=' + document.getElementById("Ids").value;
}


function PutNavigation()
{				

	if ( document.getElementById("Before").value != 0 )
	{
		document.getElementById("BeforeNav").innerHTML='<a class="navigationheader2" href="javascript:Before()" title="Anterior"> « </a>';
	}


	if ( document.getElementById("Next").value != 0 )
	{
		document.getElementById("NextNav").innerHTML='<a class="navigationheader2" href="javascript:Next()" title="Seguinte"> » </a>';
	}				
}
				

function Go( fieldName, fieldValue )
{
	eval("document.getElementById('" + fieldName + "').value=fieldValue");					 
	document.getElementById("frmSearch").submit();					
}


function Download ( url, width, height )
{				
	width= eval(width) + 20;
	height= eval(height) + 20;					
	janela=window.open( url ,'window','width=' + width + ',height=' + height);					
}				


function BreakIds()
{
	strIds = document.getElementById("Ids").value;
	arrIds = strIds.split("-");
	
	for ( n = 0; n < arrIds.length; n++ )
	{		
		if ( arrIds[n] == document.getElementById("Id").value )						
		{
			if ( n >0 )
			{
				document.getElementById("Before").value = arrIds[n-1];
			}
			else
			{								
				document.getElementById("Before").value = 0;
			}
			
			if ( n+1 < arrIds.length )
			{							
				document.getElementById("Next").value = arrIds[n+1];
			}							
			else
			{
				document.getElementById("Next").value = 0;
			}					
			break;									
		}												
	}							

	PutNavigation();																					
}				

function ChangeClass(id, css)
{
	var elem = document.getElementById(id);
	elem.className = css;
}


function ChangeImg(id, path)
{
	if (document.images)
  {
		var img = document.getElementById(id);
		img.src = path;
	}
}


function ValidateEmail(emailStr) {

	/* The following variable tells the rest of the function whether or not
		 to verify that the address ends in a two-letter country or well-known
		 TLD.  1 means check it, 0 means don't. */
	var checkTLD=1;

	/* The following is the list of known TLDs that an e-mail address must end with. */
	var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;

	/* The following pattern is used to check if the entered e-mail address
		 fits the user@domain format.  It also is used to separate the username
		 from the domain. */
	var emailPat=/^(.+)@(.+)$/;

	/* The following string represents the pattern for matching all special
		 characters.  We don't want to allow special characters in the address. 
		 These characters include ( ) < > @ , ; : \ " . [ ] */
	var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";

	/* The following string represents the range of characters allowed in a 
		 username or domainname.  It really states which chars aren't allowed.*/
	var validChars="\[^\\s" + specialChars + "\]";

	/* The following pattern applies if the "user" is a quoted string (in
		 which case, there are no rules about which characters are allowed
		 and which aren't; anything goes).  E.g. "jiminy cricket"@disney.com
		 is a legal e-mail address. */
	var quotedUser="(\"[^\"]*\")";

	/* The following pattern applies for domains that are IP addresses,
		 rather than symbolic names.  E.g. joe@[123.124.233.4] is a legal
		 e-mail address. NOTE: The square brackets are required. */
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;

	/* The following string represents an atom (basically a series of non-special characters.) */
	var atom=validChars + '+';

	/* The following string represents one word in the typical username.
		 For example, in john.doe@somewhere.com, john and doe are words.
		 Basically, a word is either an atom or quoted string. */
	var word="(" + atom + "|" + quotedUser + ")";

	// The following pattern describes the structure of the user
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$");

	/* The following pattern describes the structure of a normal symbolic
		 domain, as opposed to ipDomainPat, shown above. */
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");

	/* Finally, let's start trying to figure out if the supplied address is valid. */

	/* Begin with the coarse pattern to simply break up user@domain into
		 different pieces that are easy to analyze. */
	var matchArray=emailStr.match(emailPat);

	if (matchArray==null) {
		/* Too many/few @'s or something; basically, this address doesn't
			 even fit the general mould of a valid e-mail address. */
		return false;
	}

	var user=matchArray[1];

	var domain=matchArray[2];

	// Start by checking that only basic ASCII characters are in the strings (0-127).
	for (i=0; i<user.length; i++) {
		if (user.charCodeAt(i)>127)
		{
			return false;
		}
	}

	for (i=0; i<domain.length; i++) {
		if (domain.charCodeAt(i)>127) {
			return false;
  	}
	}

	// See if "user" is valid 
	if (user.match(userPat)==null) {
		// user is not valid
		return false;
	}

	/* if the e-mail address is at an IP address (as opposed to a symbolic
		 host name) make sure the IP address is valid. */
	var IPArray=domain.match(ipDomainPat);

	if (IPArray!=null) {
		// this is an IP address
		for (var i=1;i<=4;i++) {
			if (IPArray[i]>255) {
				return false;
   		}
		}
		return true;
	}

	// Domain is symbolic name.  Check if it's valid.
	var atomPat=new RegExp("^" + atom + "$");

	var domArr=domain.split(".");

	var len=domArr.length;

	for (i=0;i<len;i++) {
		if (domArr[i].search(atomPat)==-1) {
			return false;
  	}
	}

	/* Domain name seems valid, but now make sure that it ends in a
		 known top-level domain (like com, edu, gov) or a two-letter word,
		 representing country (uk, nl), and that there's a hostname preceding 
		 the domain or country. */
	if (checkTLD && domArr[domArr.length-1].length!=2 && domArr[domArr.length-1].search(knownDomsPat)==-1) {
		return false;
	}

	// Make sure there's a host name preceding the domain.
	if (len<2) {
		return false;
	}

	// If we've gotten this far, everything's valid!
	return true;

}


function GiveMe(pValue, pWhat)
{
	var lValue = new String(""), lnIndex = 0;

	lnIndex = 0;
	while(lnIndex < lA_ArrayOfSeparators.length && lValue.length==0)
	{
		switch(pWhat)
		{
			case 1 : //Day
				lValue = new String(pValue.substring(0, pValue.indexOf(lA_ArrayOfSeparators[lnIndex])));
				break;
			case 2 : //MONTH
			 	lValue = new String(pValue.substring(pValue.indexOf(lA_ArrayOfSeparators[lnIndex]) + 1, pValue.lastIndexOf(lA_ArrayOfSeparators[lnIndex])));
			 	break;
			case 3 : //YEAR
			 	lValue = new String(pValue.substring(pValue.lastIndexOf(lA_ArrayOfSeparators[lnIndex]) + 1, pValue.length));
			 	if (lValue == pValue) lValue= new String("");
			 	break;
		}
		lnIndex++;
	}
	return lValue.length == 0 ? null : lValue;
}


function ValidateDateValue(pValue)
{
	var lDate = null;
	var lDay, lMonth, lYear;
	
	if(pValue == null)
		return null;
	if(pValue.lenght == 0)
		return null;
	
	lDay = GiveMe(pValue,DAY)
	lMonth = GiveMe(pValue, MONTH);
	lYear = GiveMe(pValue, YEAR)
	
	if (lDay != null && lMonth != null && lYear != null)
	{
		lDate = new Date ();
		lDate.setMonth(lMonth - 1);
		lDate.setDate(lDay);

		if ( lYear.length > 2 )
		{
			lDate.setFullYear(lYear);
			
			if ((lDay == lDate.getDate()) && (lMonth == (lDate.getMonth() + 1)) && (lYear == lDate.getFullYear()))
			{
				if (lDate.getFullYear() >= YEAR_RANGE_INF && lDate.getFullYear() <= YEAR_RANGE_SUP)
					return new String(lDate.getFullYear() + "-" + (lDate.getMonth() + 1) + "-" + lDate.getDate())
			}
		}
		else
		{
			lDate.setYear(lYear);
			if ((lDay == lDate.getDate()) && (lMonth == lDate.getMonth() + 1) && (lYear == lDate.getYear()))
			{
				if (lDate.getFullYear() >= YEAR_RANGE_INF && lDate.getFullYear() <= YEAR_RANGE_SUP)
					return new String(lDate.getFullYear() + "-" + (lDate.getMonth() + 1) + "-" + lDate.getDate())
			}
		}
	}
	return null;
}
