var GV={
   Data : {
      ServerBaseUrl : document.location.href.substr(0,(document.location.href.lastIndexOf("/")+1)),
      ConnectionUrl : 'gvAPI.php',
      BlinkingClassName  : 'blink-style',
      BlinkingClassName2 : 'blink-style-2',
      InputOverClass     : 'InputOver'
   },
   $ : function(i){return document.getElementById(i)},
   init : function(){

      GV.InitIframes();
      GV.MainSlider.Init();
      GV.BlinkStyles.Init();


      //GV.InputOver.Init();
   	//this.FixPNG();
   	//GV.Scrool.Init();
   	//GV.ActiveBox.Init();
      //GV.InitIframes();
   },
  	goTo:function(url){
		window.location = url;
	},
	makeHome : function(sender){
      try{sender.setHomePage('http://gamevance.com/');}
         catch(e){};
      try{sender.style.behavior='url(#default#homepage)';}
         catch(e){};
	},
	menuRol: function(obj){
		var pos = obj.style.backgroundPosition;

		obj.style.backgroundPositionX = '-80px 0px';
		obj.onMouseOut = function(){this.backgroundPosition = pos};
			
	},Utf8 :{
       encode : function (string) {
           string = string.replace(/\r\n/g,"\n");
           var utftext = "";
           for (var n = 0; n < string.length; n++) {
               var c = string.charCodeAt(n);
               if (c < 128) {
                   utftext += String.fromCharCode(c);
               }
               else if((c > 127) && (c < 2048)) {
                   utftext += String.fromCharCode((c >> 6) | 192);
                   utftext += String.fromCharCode((c & 63) | 128);
               }
               else {
                   utftext += String.fromCharCode((c >> 12) | 224);
                   utftext += String.fromCharCode(((c >> 6) & 63) | 128);
                   utftext += String.fromCharCode((c & 63) | 128);
               }
           }
           return utftext;
       },

       decode : function (utftext) {
           var string = "";
           var i = 0;
           var c = c1 = c2 = 0;
           while ( i < utftext.length ) {
               c = utftext.charCodeAt(i);
               if (c < 128) {
                   string += String.fromCharCode(c);
                   i++;
               }
               else if((c > 191) && (c < 224)) {
                   c2 = utftext.charCodeAt(i+1);
                   string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
                   i += 2;
               }
               else {
                   c2 = utftext.charCodeAt(i+1);
                   c3 = utftext.charCodeAt(i+2);
                   string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
                   i += 3;
               }
           }
           return string;
       }
    },

    Base64 : {
       _keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
       encode : function (input) {
           var output = "";
           var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
           var i = 0;
           input = GV.Utf8.encode(input);
           while (i < input.length) {
               chr1 = input.charCodeAt(i++);
               chr2 = input.charCodeAt(i++);
               chr3 = input.charCodeAt(i++);
               enc1 = chr1 >> 2;
               enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
               enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
               enc4 = chr3 & 63;
               if (isNaN(chr2)) {
                   enc3 = enc4 = 64;
               } else if (isNaN(chr3)) {
                   enc4 = 64;
               }
               output = output +
               this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +
               this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);
           }
           return output;
       },

       decode : function (input) {
           var output = "";
           var chr1, chr2, chr3;
           var enc1, enc2, enc3, enc4;
           var i = 0;
           input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
           while (i < input.length) {
               enc1 = this._keyStr.indexOf(input.charAt(i++));
               enc2 = this._keyStr.indexOf(input.charAt(i++));
               enc3 = this._keyStr.indexOf(input.charAt(i++));
               enc4 = this._keyStr.indexOf(input.charAt(i++));
               chr1 = (enc1 << 2) | (enc2 >> 4);
               chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
               chr3 = ((enc3 & 3) << 6) | enc4;
               output = output + String.fromCharCode(chr1);
               if (enc3 != 64) {
                   output = output + String.fromCharCode(chr2);
               }
               if (enc4 != 64) {
                   output = output + String.fromCharCode(chr3);
               }
           }
           output = GV.Utf8.decode(output);
           return output;
       }
    },
 	showMessage : function(Text, Status){
      var mainMessageBox = GV.$('ctl0_mainStatus_mainMessageBox');
      var Style = '';
      if(Status==null)
         Style = 'messagebox_info';
      else if( Status == false )
         Style = 'messagebox_error';
      else
         Style = 'messagebox_ok';
      mainMessageBox.className  = 'messagebox '+Style;
      mainMessageBox.style.display = '';
      mainMessageBox.innerHTML = '<b>'+Text+'</b>';
   },
   hideMessage : function(){
      var mainMessageBox = GV.$('ctl0_mainStatus_mainMessageBox');
      mainMessageBox.style.display = 'none';
   },
	showLoading : function(){
      
     if(!GV.$('TLoadingDivRoot')){
         var element = document.createElement("div");         
         element.id="TLoadingDivRoot";
         element.style.position="fixed";
         element.style.top=0;
         element.style.right=0;
         element.style.display="none";
         element.style.color="#333333";
         element.style.padding="3px";
         element.style.border="1px solid #00CC00";
         element.style.borderTop="none";
         element.style.borderRight="none";
         element.style.backgroundColor="#E8FFE8";
         element.style.fontFamily= "Arial";
         element.style.fontSize= "12px";
         element.innerHTML= " Loading ... <img src='/images/loader.gif' alt='' style='margin-bottom:-5px;'/>";
         document.body.appendChild(element);
     }
     GV.$('TLoadingDivRoot').style.display = 'block';
   },
   hideLoading : function(){
      if(GV.$('TLoadingDivRoot'))
         GV.$('TLoadingDivRoot').style.display = 'none';
   },
	   // TOOLTIP SUPPORT
   ToolTip : {
       tip_Xoffset:20,
       tip_Yoffset:10,
       tip_hidden:1,
       tip_move:1,
       tip_Width :400,
       PopupDiv:'',
       init:false,
      Write : function (){
     
        var element = document.createElement("div");
         element.id="TTooltipRoot";
         element.title="Click to Close";
         element.style.position= "absolute";
         element.style.display= "none";
         element.style.maxWidth= "400px";
         element.style.zIndex= 999999;
		
         document.body.appendChild(element);
         
      	this.init = true;
      	
         this.PopupDiv=element;
         this.PopupDiv.onclick=function(){GV.ToolTip.tip_move=1;GV.ToolTip.tip_hide()};
      },

     tip_mouseMove : function (e) {
         if(GV.ToolTip.tip_move == 0)
            return;

         e || (e = window.event);

         var x = document.documentElement.scrollLeft + document.body.scrollLeft + e.clientX;
         var y = document.documentElement.scrollTop  + document.body.scrollTop + e.clientY;

         x = x + GV.ToolTip.tip_Xoffset;
         y = y + GV.ToolTip.tip_Yoffset;

         Xmin=document.body.scrollLeft;
         Xmax = document.body.offsetWidth-document.body.scrollLeft-GV.ToolTip.tip_Xoffset;
         if(x>Xmax){ x=Xmax }
         if(x<Xmin){ x=Xmin }

         GV.ToolTip.PopupDiv.style.left  = x+'px';
         GV.ToolTip.PopupDiv.style.top = y+'px';
      },
      tip_write : function (text, title){
         if(GV.ToolTip.tip_move == 0)
            return;
         GV.ToolTip.tip_hide();
         var displayText='';
         var titlestr = "<div id='TTooltipOuter'>"+title+"</div>";
         var textstr = "<div id='TTooltipTitle'>"+text+"</div>";

         displayText += ( title ? titlestr : '' );
         displayText += ( text ? textstr : '' );

         GV.ToolTip.PopupDiv.innerHTML=displayText;
         GV.ToolTip.tip_show();
      },
      tip_show : function (){
         if(GV.ToolTip.tip_move == 0)
            return;
         if(this.tip_hidden){
            GV.ToolTip.tip_hidden=0;
            GV.ToolTip.PopupDiv.style.display="";
         }
      },
      tip_hide : function (){
         if(GV.ToolTip.tip_move == 0)
            return;
         if(!GV.ToolTip.tip_hidden){
            GV.ToolTip.tip_hidden=1;
            GV.ToolTip.PopupDiv.style.display="none";
         }
      },

      Attach : function (obj,title,text,fixedView){
         if(!this.init)
            this.Write();
         GV.ToolTip.tip_write( text, title );
         obj.onmousemove = GV.ToolTip.tip_mouseMove;
         obj.onmouseout = GV.ToolTip.tip_hide;
         if(fixedView)
		    obj.onclick=function(){
		    	GV.ToolTip.tip_move=0;
				this.onmouseout=null;
				this.onclick=function(){GV.ToolTip.tip_move=1;GV.ToolTip.tip_hide();};
			};
      },

      // public access method
      AttachToolTip : function (objID,title,text,fixedView){
      	var Obj = typeof objID == 'object' ? objID : GV.$(objID);
			if( Obj)
         	GV.ToolTip.Attach(Obj,title,text,fixedView);
      },
      
		// public access method
      AttachEncoded : function (obj,title,text,fixedView){
      	obj.title = '';
      	title = title ? GV.Base64.decode(title) : '';
      	text = text ? GV.Base64.decode(text) : '';
         GV.ToolTip.Attach(obj,title,text,fixedView);
      }
   }, // Window Over Object
    ActiveTip : {
      objID:'ActiveTip',
      objInner:'ActiveTipInner',
      objTitle:'ActiveTipTitle',
      objText:'ActiveTipText',
      objExit:'ActiveTipExit',
      ShowDiv : function (){
         GV.$(this.objID).style.height=document.body.clientHeight+'px';
         var height = document.documentElement.scrollTop;
         GV.$(this.objInner).style.marginTop=(100+height)+'px';
         //var height = document.documentElement.scrollTop+(document.documentElement.clientHeight/2)-100;
        // GV.$(this.objInner).style.marginTop=height+'px';
         GV.$(this.objID).style.display='';
          //Effect.Appear(this.objID, { duration: 1 });
      },
      HideDiv : function (){
         GV.$(this.objID).style.display='none';
         //Effect.Fade(this.objID)
      },
      AttachStyle : function(Status){
			var Style;
         if(Status==null)
            Style = 'messagebox_info';
         else if( Status == false )
            Style = 'messagebox_error';
         else
            Style = 'messagebox_ok';
         GV.$(this.objInner).className  = 'ActiveTipInner '+Style;
      },
      Write : function (title, text){
         GV.$(this.objTitle).innerHTML = title;
         GV.$(this.objText).innerHTML = text;
      },
      Show : function (title, text, Status){
         this.AttachStyle(Status);
         GV.$(this.objExit).onclick=function(){GV.ActiveTip.HideDiv();};
         this.Write(title, text);
         this.ShowDiv();
      },
      ShowEncoded : function (title, text, Status){
         this.AttachStyle(Status);
         GV.$(this.objExit).onclick=function(){GV.ActiveTip.HideDiv();};
         this.Write(GV.Base64.decode(title), GV.Base64.decode(text));
         this.ShowDiv();
      }
   },
	ActiveBox : {
		boxCreated : false,
		lastId : '',
		conteiner :false,
   	Init : function(){
   		var els=document.getElementsByTagName('*');
   	 	for(var x=0; x<=els.length; x++)
				if( els[x] && els[x].getAttribute('gvbox') )
					eval("els[x].onclick = function(){GV.ActiveBox.Display('"+els[x].getAttribute('gvbox')+"')};");
   	},
   	show : function (){
   		Effect.Appear('gvbox_overlay',0.3)
   	},
   	hide : function (){
   		Effect.Fade('gvbox_overlay', 0.3);
   	},
   	createBox : function(){
         this.boxCreated = 1;
   		var html = '\
							<table width="100%" id="gvbox" height="100%">\
								<tr>\
									<td align="center" valign="center">\
											<div class="popup"> \
												<table cellpadding=0 cellspacing=0> \
													<tr> \
														<td class="tl"/><td class="brd"/><td class="tr"/> \
													</tr> \
													<tr> \
														<td class="brd"/> \
														<td class="body"> \
                                             <div > \
                                                <div id="gvboxcontent" class="content"></div> \
                                                <div class="footer"> \
                                                   <a href="#" onclick="GV.ActiveBox.hide();return false;"> \
                                                   <img src="/images/closelabel.gif" title="Close" /> \
                                                   </a> \
                                                </div> \
                                              </div> \
														</td> \
														<td class="brd"/> \
													</tr> \
													<tr> \
														<td class="bl"/><td class="brd"/><td class="br"/> \
													</tr> \
												</table> \
											</div>\
									</td>\
								</tr>\
							</table>';
   		 var element = document.createElement("div");
	         element.id='gvbox_overlay';
	         element.style.display='none';
         	element.style.zIndex= 10000;
	         element.innerHTML=html;
         document.body.appendChild(element);
         
         this.conteiner = document.createElement("div");
	      this.conteiner.style.display='none';
         document.body.appendChild(this.conteiner);
         
   		this.boxCreated = 2;
		}
	},
 
   InitIframes : function(){
      var els=document.getElementsByTagName('IFRAME');
   	 	for(var x=0; x<=els.length; x++)
				if( els[x] && els[x].getAttribute('xml:src') )
               els[x].src=els[x].getAttribute('xml:src');
   },
   MainSlider : {
      items : [],
      selected : 0,
      autoInstance : {},
      Init : function(){
         var doc = GV.$('main-slider-items');
         if(doc){
            var els = doc.getElementsByTagName('TD');
            var imagesPreloader = '';
            for(var x=0; x < els.length; x++){
               this.items[x] = els[x].getElementsByTagName('A')[0];
               this.items[x].onmouseover = function(){GV.MainSlider.changeSlide(this.id, true)};
               this.items[x].href=this.items[x].getAttribute('xml:url');
               this.items[x].id = x;
               imagesPreloader += '<img src="'+this.items[x].getAttribute('xml:img')+'">';
            }
            
            // preload Images
            var d = document.createElement('DIV');
            d.style.display = 'none';
            d.innerHTML = imagesPreloader;
            GV.$('main-slider-items').appendChild(d);
            
            this.autoChanger();
         }
      },
      UnHighlightAll : function(){
         if(this.items){
            for(var x=0; x < this.items.length; x++)
               this.items[x].className = '';
         }
      },
      changeSlide : function(id, bdisableAuto){
         if(!this.items[id]) return;
         var sender = this.items[id];
         this.UnHighlightAll();
         GV.$('main-slider-content').style.background = "url('"+sender.getAttribute('xml:img')+"')";
         GV.$('main-slider-content').onclick = function(){window.location=sender.getAttribute('xml:url')};
         sender.className = 'main-slider-item-active';
         var cd = GV.$('main-slider-content-desc').getElementsByTagName('TD');
         cd[0].innerHTML = "<div>"+sender.getAttribute('xml:title')+"</div>"+sender.getAttribute('xml:text');
         this.selected = id;
         if(bdisableAuto)
            GV.MainSlider.autoInstance = clearInterval(GV.MainSlider.autoInstance);
         return false;
      },
      autoChanger : function(ext){
         if(ext == true){
            this.changeSlide((this.selected+1)%this.items.length);  
         }else{
            this.changeSlide(0);
            setTimeout(function(){GV.MainSlider.autoInstance =setInterval(function(){GV.MainSlider.autoChanger(true)}, 2000)}, 2000);
         }
      }
   },
   BlinkStyles : {
   	Elements : [],
   	Init : function(){
			var els=document.getElementsByTagName('*');
			for(var x=0; x<=els.length; x++)
				if( els[x] && ( els[x].className == GV.Data.BlinkingClassName || els[x].className == GV.Data.BlinkingClassName2 ))
					this.Elements.push(els[x]);
			if(this.Elements.length)
				setInterval( "GV.BlinkStyles.Run()", 500);
   	},
   	Run : function (){
   		for(var x=0; x<=this.Elements.length; x++ ){
				if(this.Elements[x])
               switch(this.Elements[x].className){
                  case GV.Data.BlinkingClassName :
                     this.Elements[x].style.color = this.Elements[x].style.color == 'red' ? 'blue' : 'red';
                     break;
                  case GV.Data.BlinkingClassName2:
                     this.Elements[x].style.color = this.Elements[x].style.color == 'rgb(242, 143, 1)' ? 'rgb(51, 51, 51)' : 'rgb(242, 143, 1)';
                     break;
               } 
   		}
      }
   },
   submitForm : function(sFormId, e){
      var keycode;
      if (window.event)
         keycode = window.event.keyCode;
      else if (e)
         keycode = e.which;
      else return true;
      if (keycode == 13){
         GV.$(sFormId).submit();
         return false;
      }else return true;
   },
// server communication (private)
      serverRequest : function(sAction, sValue, fCallback){
      http = window.XMLHttpRequest?new XMLHttpRequest():(window.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):null);
      http.open('GET', this.Data.ConnectionUrl+'?action='+sAction+'&value='+sValue);
      if(fCallback)
         http.onreadystatechange=function(){if(http.readyState==4)fCallback(http.responseText)};
      http.send(null);
   }
};

if(!this.JSON){this.JSON={};}
(function(){function f(n){return n<10?'0'+n:n;}
if(typeof Date.prototype.toJSON!=='function'){Date.prototype.toJSON=function(key){return isFinite(this.valueOf())?this.getUTCFullYear()+'-'+
f(this.getUTCMonth()+1)+'-'+
f(this.getUTCDate())+'T'+
f(this.getUTCHours())+':'+
f(this.getUTCMinutes())+':'+
f(this.getUTCSeconds())+'Z':null;};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(key){return this.valueOf();};}
var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'},rep;function quote(string){escapable.lastIndex=0;return escapable.test(string)?'"'+string.replace(escapable,function(a){var c=meta[a];return typeof c==='string'?c:'\\u'+('0000'+a.charCodeAt(0).toString(16)).slice(-4);})+'"':'"'+string+'"';}
function str(key,holder){var i,k,v,length,mind=gap,partial,value=holder[key];if(value&&typeof value==='object'&&typeof value.toJSON==='function'){value=value.toJSON(key);}
if(typeof rep==='function'){value=rep.call(holder,key,value);}
switch(typeof value){case'string':return quote(value);case'number':return isFinite(value)?String(value):'null';case'boolean':case'null':return String(value);case'object':if(!value){return'null';}
gap+=indent;partial=[];if(Object.prototype.toString.apply(value)==='[object Array]'){length=value.length;for(i=0;i<length;i+=1){partial[i]=str(i,value)||'null';}
v=partial.length===0?'[]':gap?'[\n'+gap+
partial.join(',\n'+gap)+'\n'+
mind+']':'['+partial.join(',')+']';gap=mind;return v;}
if(rep&&typeof rep==='object'){length=rep.length;for(i=0;i<length;i+=1){k=rep[i];if(typeof k==='string'){v=str(k,value);if(v){partial.push(quote(k)+(gap?': ':':')+v);}}}}else{for(k in value){if(Object.hasOwnProperty.call(value,k)){v=str(k,value);if(v){partial.push(quote(k)+(gap?': ':':')+v);}}}}
v=partial.length===0?'{}':gap?'{\n'+gap+partial.join(',\n'+gap)+'\n'+
mind+'}':'{'+partial.join(',')+'}';gap=mind;return v;}}
if(typeof JSON.stringify!=='function'){JSON.stringify=function(value,replacer,space){var i;gap='';indent='';if(typeof space==='number'){for(i=0;i<space;i+=1){indent+=' ';}}else if(typeof space==='string'){indent=space;}
rep=replacer;if(replacer&&typeof replacer!=='function'&&(typeof replacer!=='object'||typeof replacer.length!=='number')){throw new Error('JSON.stringify');}
return str('',{'':value});};}
if(typeof JSON.parse!=='function'){JSON.parse=function(text,reviver){var j;function walk(holder,key){var k,v,value=holder[key];if(value&&typeof value==='object'){for(k in value){if(Object.hasOwnProperty.call(value,k)){v=walk(value,k);if(v!==undefined){value[k]=v;}else{delete value[k];}}}}
return reviver.call(holder,key,value);}
cx.lastIndex=0;if(cx.test(text)){text=text.replace(cx,function(a){return'\\u'+
('0000'+a.charCodeAt(0).toString(16)).slice(-4);});}
if(/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,'@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,']').replace(/(?:^|:|,)(?:\s*\[)+/g,''))){j=eval('('+text+')');return typeof reviver==='function'?walk({'':j},''):j;}
throw new SyntaxError('JSON.parse');};}}());

GV.init();
