var Cookie_Data={
	'redirect': null,
	'cookie_name':'gamedrop-visited',
	'cookie_value':'1',
	'expires':365*1000*60*60*24,
	'domain':null,
	'path':null
};

function Set_Cookie(name,value,expires,path,domain){
	var today=new Date();
	today.setTime(today.getTime());
	if(expires)expires=expires*60*60*24;
	else expires=Cookie_Data.expires;
	if(!domain)
		domain=Cookie_Data.domain;
	if(!path)
		path=Cookie_Data.path;
	if(!name)
		name=Cookie_Data.cookie_name;
	if(!value)
		value=Cookie_Data.cookie_value;
	var expires_date=new Date(today.getTime()+(expires));
	document.cookie=name+"="+escape(value)+"; "+
		"; expires="+expires_date.toGMTString();+
		"; path="+path+"; domain="+domain;
}

function Get_Cookie(check_name){
	var a_all_cookies=document.cookie.split( ';' );
	var a_temp_cookie='';
	var cookie_name='';
	var cookie_value='';

	for (i =0;i<a_all_cookies.length;i++){
		a_temp_cookie=a_all_cookies[i].split( '=' );
		cookie_name=a_temp_cookie[0].replace(/^\s+|\s+$/g, '');
		if (cookie_name==check_name)
		{
			if(a_temp_cookie.length>1)
				cookie_value=unescape(a_temp_cookie[1].replace(/^\s+|\s+$/g,''));
			return cookie_value;
			break;
		}
		a_temp_cookie=null;
		cookie_name='';
	}
	return null;
}

function AddOnAllForms(){
	var forms=document.getElementsByTagName("form");
	if(!forms||!forms.length){
		alert("No forms found!");
		return false;
	}
	for(var i=0;i<forms.length;i++){
		if(forms[i].onsubmit){
			var old=forms[i].onsubmit;
			forms[i].onsubmit=function(form){
				if(!old(form))
					return false;
				Set_Cookie();
				return true;
			};
		}else forms[i].onsubmit=function(form){Set_Cookie();};
	}
}

function __add_handler(func,element,action,only_if_old_succes){
	var old=element[action];
	if(old){
		if(only_if_old_succes){
			element[action]=function(arg1,arg2,arg3,arg4){ //just in case old function wants parameters
				var ret=old(arg1,arg2,arg3,arg4);
				if(ret)
					func();
				return ret;
			};
		}else{
			element[action]=function(arg1,arg2,arg3,arg4){ //just in case old function wants parameters
				var ret=old(arg1,arg2,arg3,arg4);
				func();
				return ret;
			};		
		}
	}else element[action]=func;
}

function AddOnElement(element,action,only_if_old_succes){
	__add_handler(function(){Set_Cookie();return true;},element,action,only_if_old_succes);
}


function ShouldRedirect(){
	var cook=Get_Cookie(Cookie_Data.cookie_name);
	if(cook!=null&&cook==Cookie_Data.cookie_value)
		document.location.href=Cookie_Data.redirect;
}

function AddRedirectOn(element,action,only_if_old_succes){
	__add_handler(function(){ShouldRedirect();return true;},element,action,only_if_old_succes);
}

function Init(x){
	if(!(Cookie_Data.redirect=x.Redirect)){
		alert("Redirect location is required!");
		return false;
	}
	if(x.Expires)
		Cookie_Data.expires=x.Expires*60*60*24;
	if(x.Name)
		Cookie_Data.cookie_name=x.Name;
	if(x.Value)
		Cookie_Data.cookie_value=x.Value;
	if(x.Domain)
		Cookie_Data.domain=x.Domain;
	if(x.Path)
		Cookie_Data.path=x.Path;
	if(!x.DontHookForms)
		__add_handler(function(){AddOnAllForms()},window,'onload',1);
	if(!Cookie_Data.domain||!Cookie_Data.path){
		var arr=/^([^:]+):\/\/([^\/:]+)(?::[0-9]+)?(\/.+)$/.exec(document.location.href);
		if(!Cookie_Data.domain)
			Cookie_Data.domain=arr[2];
		if(!Cookie_Data.path){
			var index=arr[3].lastIndexOf('/');
			Cookie_Data.path=index>0?arr[3].substr(0,index+1):arr[3];
		}
	}
	if(!x.DontCallOnStart)
		ShouldRedirect();
}

