function rotateStore(){
	//alert(isRotated);
	RotateBoard(!isRotated);
	//alert(isRotated);
	storeFlip(isRotated);	
}

function checkStoredRotate(){
	if(loadFlip() == "true"){ RotateBoard(loadFlip()); isRotated = true; }
}

function storeFlip(val){
	var visitordata = new Cookie(document, "365chess", 9999);
	visitordata.flip = val;
	visitordata.store();
	//alert(val);
}

function loadFlip(){
	var visitordata = new Cookie(document, "365chess", 9999);
	
	if (visitordata.load()) {
		return visitordata.flip;
	}
	else return 0;
}

function hidestatus(){
	var statusmsg=""
	window.status=statusmsg
	return true
}


function Popup(url,ancho,alto) { 
	derecha=(screen.width-ancho)/2;
	arriba=(screen.height-alto)/2;
	ww = window.open(url,"","width="+ancho+",height="+alto+",resizable,scrollbars=no,status=0, left="+derecha+", top="+arriba+"");
	if(!ww){
		alert("It seems you have blocked pop-ups windows.\nYou should allow pop-ups from 365chess.com to use this function");
	}
}

function Cookie(document, name, hours, path, domain, secure)
{
    // All the predefined properties of this object begin with '$'
    // to distinguish them from other properties which are the values to
    // be stored in the cookie.
    this.$document = document;
    this.$name = name;
    if (hours)
        this.$expiration = new Date((new Date()).getTime() + hours*3600000);
    else this.$expiration = null;
    if (path) this.$path = path; else this.$path = null;
    if (domain) this.$domain = domain; else this.$domain = null;
    if (secure) this.$secure = true; else this.$secure = false;
}
// This function is the store() method of the Cookie object.
function _Cookie_store()
{
    // First, loop through the properties of the Cookie object and
    // put together the value of the cookie. Since cookies use the
    // equals sign and semicolons as separators, we'll use colons
    // and ampersands for the individual state variables we store 
    // within a single cookie value. Note that we escape the value
    // of each state variable, in case it contains punctuation or other
    // illegal characters.
    var cookieval = "";
    for(var prop in this) {
        // Ignore properties with names that begin with '$' and also methods.
        if ((prop.charAt(0) == '$') || ((typeof this[prop]) == 'function')) 
            continue;
        if (cookieval != "") cookieval += '&';
        cookieval += prop + ':' + escape(this[prop]);
    }
    // Now that we have the value of the cookie, put together the 
    // complete cookie string, which includes the name, and the various
    // attributes specified when the Cookie object was created.
    var cookie = this.$name + '=' + cookieval;
    if (this.$expiration)
        cookie += '; expires=' + this.$expiration.toGMTString();
    if (this.$path) cookie += '; path=' + this.$path;
    if (this.$domain) cookie += '; domain=' + this.$domain;
    if (this.$secure) cookie += '; secure';
    // Now store the cookie by setting the magic Document.cookie property.
    this.$document.cookie = cookie;
}
// This function is the load() method of the Cookie object.
function _Cookie_load()
{
    // First, get a list of all cookies that pertain to this document.
    // We do this by reading the magic Document.cookie property.
    var allcookies = this.$document.cookie;
    if (allcookies == "") return false;
    // Now extract just the named cookie from that list.
    var start = allcookies.indexOf(this.$name + '=');
    if (start == -1) return false;   // cookie not defined for this page.
    start += this.$name.length + 1;  // skip name and equals sign.
    var end = allcookies.indexOf(';', start);
    if (end == -1) end = allcookies.length;
    var cookieval = allcookies.substring(start, end);
    // Now that we've extracted the value of the named cookie, we've
    // got to break that value down into individual state variable 
    // names and values. The name/value pairs are separated from each
    // other with ampersands, and the individual names and values are
    // separated from each other with colons. We use the split method
    // to parse everything.
    var a = cookieval.split('&');  // break it into array of name/value pairs
    for(var i=0; i < a.length; i++)  // break each pair into an array
        a[i] = a[i].split(':');
    // Now that we've parsed the cookie value, set all the names and values
    // of the state variables in this Cookie object. Note that we unescape()
    // the property value, because we called escape() when we stored it.
    for(var i = 0; i < a.length; i++) {
        this[a[i][0]] = unescape(a[i][1]);
    }
    // We're done, so return the success code.
    return true;
}
// This function is the remove() method of the Cookie object.
function _Cookie_remove()
{
    var cookie;
    cookie = this.$name + '=';
    if (this.$path) cookie += '; path=' + this.$path;
    if (this.$domain) cookie += '; domain=' + this.$domain;
    cookie += '; expires=Fri, 02-Jan-1970 00:00:00 GMT';
    this.$document.cookie = cookie;
}
// Create a dummy Cookie object, so we can use the prototype object to make
// the functions above into methods.
new Cookie();
Cookie.prototype.store = _Cookie_store;
Cookie.prototype.load = _Cookie_load;
Cookie.prototype.remove = _Cookie_remove;

function flipdiv(divid){
	divadv = document.getElementById(divid);
	
	if(divadv.style.display=='block')
		divadv.style.display='none'
	else
		divadv.style.display='block'
}

function checkHelp(help_id){
	var visitordata = new Cookie(document, "help"+help_id, 9999);
	
	if (visitordata.load()) {
		if(visitordata.view == 0)
			document.getElementById("help"+help_id).style.display='none';
	}
}

function hideHelp(help_id){
	var visitordata = new Cookie(document, "help"+help_id, 9999);
	visitordata.view = 0;
	visitordata.store();
	
	divadv = document.getElementById("help"+help_id);

	divadv.style.display='none';
}

function stripPGNHeader(s){
	 
	 var re = new RegExp('\\[[^>]*\]', 'gi');
 	s = s.replace(re,'');
	
	var re2 = new RegExp('\{[^>]*\}', 'gi');
	return s.replace(re2,'');
	}
	
function stripGameTags(){
	if(document.getElementById('PgnMoveText')){
    	PgnMoveTextElem = document.getElementById('PgnMoveText');
	
		PgnMoveTextElem.value = stripPGNHeader(PgnMoveTextElem.value);
  	}
 }	
	
function flipnstore(ckname, idsarray, visid){
	divs = idsarray.split("-");
	
	for(i=0; i < divs.length; i++){
		if (visid == divs[i]){
			divadv = document.getElementById(visid);
			divadv.style.display='block';
		}else{
			divadv = document.getElementById(divs[i]);
			divadv.style.display='none';		
		}
	}
	
	var cookiedata = new Cookie(document, ckname, 9999);
	cookiedata.view = visid;
	cookiedata.store();
}

function loadnflip(ckname, idsarray){
	var cookiedata = new Cookie(document, ckname, 9999);
	divs = idsarray.split("-");
	
	if (cookiedata.load()) {
		for(i=0; i < divs.length; i++){
			if (cookiedata.view == divs[i]){
				divadv = document.getElementById(cookiedata.view);
				divadv.style.display='block';
			}else{
				divadv = document.getElementById(divs[i]);
				divadv.style.display='none';		
			}
		}
		
		return cookiedata.view;
	}
	
	return 0;
}

function flipDetails(divid,btndetailsid){
	divadv = document.getElementById(divid);
	btn = document.getElementById(btndetailsid);
	
	if(divadv.style.display=='block'){
		divadv.style.display='none';
		btn.value='Show details'
	}else{
		divadv.style.display='block';
		btn.value='Hide details'
	}
}

function validate_info(){
		 wlname = document.getElementById('wlname').value;		 
		 blname = document.getElementById('blname').value;		 
		 openn = document.getElementById('open').value;
		 eco = document.getElementById('eco').value;		 		 
		 
	if(wlname.length < 1 && blname.length < 1){
		alert("You must specify a player on your search criteria");
		return false;
	}
	else{
		return true;
	}
}
