CCI.LIB_VERSION = "0.2KHInterOnly";

CCI.util = {
		"safeLoad"			:	function() {
			// safely execute a function after the DOM is ready
			// Listens for when the scrollbar is ready to be used
			
			//store this in a closure, in case we do asynchronous operation
			var This = this;
			this.timeoutLength = 200;	//millis
			
			// the first argument must be the function to call; 
			// any remaining arguments get passed to that function
			
			if (typeof arguments[0] != "function") {
				throw("First parameter to CCI.util.safeLoad is required and must be a function");
				} else {
					this.functionToCall = arguments[0];
					//console.dir(this);
					}
			
			this.execute = function() {
				//on the first call, we need to cache the arguments
				if (typeof This.arguments == "undefined") {
          This.arguments = arguments;
          }
				if ( typeof document.all == "object" && (document.readyState != "loaded" && document.readyState != "complete") ) {
					try {
						document.documentElement.doScroll("left");
						This.functionToCall.apply(This.functionToCall, This.arguments);
					} catch(error) {
						setTimeout(This.execute, This.timeoutLength);
					}
				} else {
					This.functionToCall.apply(This.functionToCall, This.arguments);
					}
				};
		},
		
		"getElementsByClassName"	:	function(bag) {
				bag = bag || {};
				if(bag.container === undefined) {
          bag.container = document;
          }
				var theContainer = bag.container;
				if (theContainer.getElementsByClassName) {
				// newer browsers have native support for getElementsByClassName
				return theContainer.getElementsByClassName(bag.classname);
				} else {
				var classElements = [];
        			var els = theContainer.getElementsByTagName("*");
        			var elsLen = els.length;
        			var pattern = new RegExp("(^|\\s)"+bag.classname+"(\\s|$)");
        			for (i = 0, j = 0; i < elsLen; i++) {
                		if ( pattern.test(els[i].className) ) {
                        classElements[j] = els[i];
                        j++;
                		}
        			}
        		return classElements;
				}
			},
	
	"toggleByTagName":function(tagName,toggleAction){
		    var objectArray = document.getElementsByTagName(tagName);
		    for (i=0;i<objectArray.length;i++) {
		        if (toggleAction == "hide") {
		        objectArray[i].style.visibility = "hidden";
		        } else if (toggleAction == "show") {
		        objectArray[i].style.visibility = "visible";
		        }
		    }
		},
			
  "createCookie" : function(bag) {
    bag = bag || {};
    var date, expires;
    if (bag.days) {
      date = new Date();
      date.setTime(date.getTime()+(bag.days*24*60*60*1000));
      expires = "; expires="+date.toGMTString();
    }
    else {
      expires = "";
      }
    document.cookie = bag.name+"="+bag.value+expires+"; path=/";
    },
    
  "readCookie" : function(bag) {
    bag = bag || {};
    var nameEQ, ca, c;
    nameEQ = bag.name + "=";
    ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++) {
      c = ca[i];
      while (c.charAt(0)==' ') {
        c = c.substring(1,c.length);
        }
      if (c.indexOf(nameEQ) === 0) {
        return c.substring(nameEQ.length,c.length);
        }
      }
    return null;
    },
    
   "testForCookies" : function() {
	   var tmpcookie = new Date();
	   chkcookie = (tmpcookie.getTime() + '');
	   document.cookie = "chkcookie=" + chkcookie + "; path=/";
	   if (document.cookie.indexOf(chkcookie,0) < 0) {
	     return false;
		  } else {
        return true; 		
		    }
	   },
	"countSessionViews"	: function() {
		cookiesOn = CCI.util.testForCookies();
		if (cookiesOn) {
			var counter = CCI.util.readCookie({ name:"cciCounter"});
			if (counter) {
				counterval = (Math.abs(counter)+1);
			} else {
				counterval = 1;
			}
			CCI.util.createCookie({ name:"cciCounter", value: counterval, days: 0});
		}
	}
};

CCI.util.ajax = {
	
		"callback"	:	function(a) {
			a.handler.apply(a.handler, [a.text]);
		},
		
	 	"post"	:	function(bag) {
		 bag = bag || {};
		 var request = 0;

		 var handler = bag.handler;
		 
		 
      	if (window.XMLHttpRequest) { // Mozilla, Safari,...
         request = new XMLHttpRequest();
      		} else if (window.ActiveXObject) { // IE
         		try {
            		request = new ActiveXObject("Msxml2.XMLHTTP");
         			} catch (e) {
            			try {
               				request = new ActiveXObject("Microsoft.XMLHTTP");
            				} catch (e) {}
         				}
      				}
      if (!request) {
         //console.log('Cannot create XMLHTTP instance');
         return false;
      }
      
      
      
      request.onreadystatechange = function() {
	      
	      
	       if (request.readyState == 4 && request.status == 200) {
		       CCI.util.ajax.callback({handler:handler,text:request.responseText});
			}
      	};
      
      request.open('POST', bag.url, true);
      request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      request.setRequestHeader("Content-length", bag.params.length);
      request.setRequestHeader("Connection", "close");
      request.send(bag.params);
   },
   
	 	"get"	:	function(bag) {
		 bag = bag || {};
		 bag.params = bag.params || "";
		 var request = 0;

		 var handler = bag.handler;
		 
		 
      	if (window.XMLHttpRequest) { // Mozilla, Safari,...
         request = new XMLHttpRequest();
      		} else if (window.ActiveXObject) { // IE
         		try {
            		request = new ActiveXObject("Msxml2.XMLHTTP");
         			} catch (e) {
            			try {
               				request = new ActiveXObject("Microsoft.XMLHTTP");
            				} catch (e) {}
         				}
      				}
      if (!request) {
         //console.log('Cannot create XMLHTTP instance');
         return false;
      }
      
      
      
      request.onreadystatechange = function() {
	      
	      
	       if (request.readyState == 4 && request.status == 200) {
		       CCI.util.ajax.callback({handler:handler,text:request.responseText});
			}
      	};
      
      request.open('GET', bag.url + bag.params, true);
      request.send(null);
   }
};

CCI.interstitial = {   
  
      "InitializeTimer" : function(bag) {
        bag = bag || {};
        var secs;
        var timerID = null;
        var timerRunning = false;
        var delay = 1000;

        secs = bag.s;
        
        timerRunning = CCI.interstitial.StopTheClock({ timerRunning: timerRunning});
        timerRunning = CCI.interstitial.StartTheTimer({secs: secs, timerRunning: timerRunning, delay: delay});
        },
        
      "StopTheClock"  : function(bag) {
        bag = bag || {};
        if(bag.timerRunning) {
          clearTimeout(timerID);
          }
        return (timerRunning = false);
        },
        
      "StartTheTimer" : function(bag) {
        bag = bag || {};
        secs = bag.secs;
        delay = bag.delay;
        
        timerRunning = bag.timerRunning;
        
        if (secs == 1) {
          CCI.interstitial.StopTheClock({ timerRunning: timerRunning});
          CCI.interstitial.hideIt({ e: "inter"});
          } else {
            self.status = secs;
            secs = secs - 1;
            timerRunning = true;
            if (secs == 1) {
              document.getElementById('secondHolder').innerHTML=secs + " second";
            } else {
              document.getElementById('secondHolder').innerHTML=secs + " seconds";
              }
            timerID = self.setTimeout("CCI.interstitial.StartTheTimer({secs: secs, timerRunning: timerRunning, delay: delay})", delay);
            }
          return timerRunning;
        },
        
      "hideIt" : function(bag) {
         bag = bag || {};
        CCI.util.toggleByTagName("object","show");
		CCI.util.toggleByTagName("embed","show");
         
	       if (window.XMLHttpRequest) {
	       document.body.style.overflow="auto";}
	       if (!document.getElementById) {
          return false;
          }
	       if (!document.getElementById(bag.e)) {
          return false;
          }
	       var mask = document.getElementById(bag.e);
	       if (mask.style.display != 'none') {
           mask.style.display = 'none';
	         }
        },
        
      "showIt" : function(bag) {
        bag = bag || {};
        floaterName = bag.floaterName || "interstitial";
        var hideInter = CCI.siteConfig[floaterName].hideInter;
        var interTimeout = CCI.siteConfig[floaterName].interTimeout;
        var interDays = CCI.siteConfig[floaterName].interDays;
        var interCookieName = CCI.siteConfig[floaterName].interCookieName;
      	var interURL = CCI.siteConfig[floaterName].interURL;
      	var showInterOnView = CCI.siteConfig[floaterName].showInterOnView || 0;
      	
        //Add onclick event to skip advertisement  
        var elements = CCI.util.getElementsByClassName({ classname: "inter_hide"});
        elements[0].onclick = function() {CCI.interstitial.hideIt({ e: 'inter'});};
        
        
        var cookiesOn = CCI.util.testForCookies();
        var cookedInter = CCI.util.readCookie({ name: interCookieName});
        var counter = CCI.util.readCookie({ name: "cciCounter"});

        if(cookedInter === null && hideInter === 0 && cookiesOn && showInterOnView==counter) {
		CCI.util.toggleByTagName("object","hide");
		CCI.util.toggleByTagName("embed","hide");
		
	      function ajaxCallback(results) {
		      	//console.log(results);
		      	document.getElementById(bag.container).innerHTML = results;
	      		}
	      CCI.util.ajax.get({ url: interURL, handler: ajaxCallback});
          CCI.util.createCookie({ name:interCookieName, value: "1", days: interDays});
          var s = interTimeout*1000;
          var e = "inter";
          
          location.href = "#";
          if (window.XMLHttpRequest) {
          document.body.style.overflow="hidden";}
          //console.info("showIt running...");
          if (!document.getElementById) {
            return false;
            }
          //console.log("document.getElementById is true");
          //if (!document.getElementById(e)) return false;
          //console.log("id " + bag.e + " on page");
          var mask = document.getElementById(e);
          //console.log("mask = " + mask);
          if (mask.style.display != 'block') {
            mask.style.display = 'block';
		        //console.log("mask visibile");
	          }
	         //if the seconds arent passed set it to 10
	        if (s === null || s === "" || s === undefined){
			      s = 15000;
					  }
	        //if the element is inter update the div with the seconds
          if (e == "inter"){
            CCI.interstitial.InitializeTimer({ s: interTimeout});
            }				
          if(s != "neverHide"){
            enoughalready = setTimeout("CCI.interstitial.hideIt({ e: '"+e+"'});", s);
            }
        }
      }
    };