/*****************************************************************************
*	JS Ajax Class
*	@author Brent Lintner
*	Dependecies: prototype.js 
*
*   NOTICE OF LICENSE
*
*   This source file is subject to the the MIT License
*   http://www.opensource.org/licenses/mit-license.php
*****************************************************************************/

/*
 * Ajax Base Class
 * Depends On: Prototype.js
 */
var params = Class.create({
	// initialize
	initialize: function(){
		this.data = 'e';
	},
	//add a data entry
	add: function(name, value){ if (this.data == 'e') {this.data = String(name) + '=' + String(value);} else {this.data = this.data + '&' + String(name) + '=' + String(value);}},
	//remove an entry, Returns: true if the entry was found and removed, false if not
	remove: function(name, value){ var bool = false;switch(this.indexOf(String(name) + '=' + String(value))){case -1:break;case 0:bool = true;this.data = this.data.replace(String(name) + '=' + String(value),'');break;default:bool = true;this.data = this.data.replace('&' + String(name) + '=' + String(value),'');}return bool;},
	//clear the data
	clear: function(){this.data = 'e';},
	//get cross browser body height
	getBrowserHeight: function(){
		var viewportheight;
		// the more standards compliant browsers (mozilla/netscape/opera/IE7) use window.innerWidth and window.innerHeight
		if (typeof window.innerHeight != 'undefined'){viewportheight = window.innerHeight;}
		// IE6 in standards compliant mode (i.e. with a valid doctype as the first line in the document)
		else if (typeof document.documentElement != 'undefined'&& typeof document.documentElement.clientHeight !='undefined' && document.documentElement.clientHeight != 0){viewportheight = document.documentElement.clientHeight;}
		// older versions of IE 
		else{viewportheight = document.getElementsByTagName('body')[0].clientHeight;}return(viewportheight);},
	//get cross browser body width
	getBrowserWidth: function(){
		var viewportwidth;
		// the more standards compliant browsers (mozilla/netscape/opera/IE7) use window.innerWidth and window.innerHeight
		if (typeof window.innerWidth != 'undefined'){viewportwidth = window.innerWidth;}
		// IE6 in standards compliant mode (i.e. with a valid doctype as the first line in the document)
		else if (typeof document.documentElement != 'undefined'&& typeof document.documentElement.clientWidth !='undefined' && document.documentElement.clientWidth != 0){viewportwidth = document.documentElement.clientWidth;}
		// older versions of IE
		else{viewportwidth = document.getElementsByTagName('body')[0].clientWidth;} return(viewportwidth);},
	// set external style sheet rule
	setRule: function(selector, styles){
		var i, x, sheet, rules;
	
		for (x = document.styleSheets.length - 1; 0 <= x ; x--){
			sheet = document.styleSheets[x];
			rules = sheet.cssRules || sheet.rules;
			
			for (i = rules.length - 1; 0 <= i; i--){
				if (rules[i].selectorText == selector){
					return Object.extend(rules[i].style, styles);
				}
			}
		}
		
		var index = rules.length;
		if (sheet.insertRule){ // Normal browsers
			sheet.insertRule(selector + '{ }', index);
		} else { // IE: if (sheet.addRule){
			sheet.addRule(selector, ';', index);
		}
		
		Object.extend((sheet.cssRules || sheet.rules)[index].style, styles);
	}
	
});

var functions = Class.create(params, {

	/*
	 * class initializer
	 */
	initialize: function($super){
		$super();
		this.preloadimages();
	},
	
	/*
	 * navigate to a page ajax style
	 */
	navigate: function(page){
		window.location = '/' + page;
		//if (navigator.appName=="Microsoft Internet Explorer"){
			//this.sub_navigateIE(page);
		//}
		//else{
			//this.sub_navigate(page);
		//}
		
	},
	
	/*
	 * navigate to a certain page
	 */
	sub_navigate: function(page){
		
		MochiKit.Visual.fade('main',{to: 0.00001, duration: 1, afterFinish: function(){

			// send off a polished cross browser request
			new Ajax.Request('/' + page, {
				method: 'get', 
				parameters: '?ajax_call=1',
				onSuccess: function(transport){
					
					window.scrollTo(0,0);
					$('main').innerHTML = transport.responseText;
					
					MochiKit.Visual.appear('main');
					}

				});
			
			}
			
		});
		
		
		
	},
	
	/*
	 * alternate navigate to a certain page, for IE (i.e. no fading) 
	 */
	sub_navigateIE: function(page){
		
		// send off a polished cross browser request
		new Ajax.Request('/' + page, {
			method: 'get', 
			parameters: '?ajax_call=1',
			onSuccess: function(transport){
				
				window.scrollTo(0,0);
				$('main').innerHTML = transport.responseText;

				}

			});	
		
	},
	
	preloadimages: function(){
	
		var i, num;
		
		if (document.images) {
		
			preload = new Array();
			image_url = new Array();

			image_url.push('/skin/frontend/default/default/images/kr3/left_hover.gif');
			image_url.push('/skin/frontend/default/default/images/kr3/main_hover.gif');
			image_url.push('/skin/frontend/default/default/images/kr3/bottom_1_hover.jpg');
			image_url.push('/skin/frontend/default/default/images/kr3/bottom_2_hover.jpg');
			image_url.push('/skin/frontend/default/default/images/kr3/bottom_3_hover.jpg');
			image_url.push('/skin/frontend/default/default/images/kr3/banners/categories/cat1_hover.gif');
			image_url.push('/skin/frontend/default/default/images/kr3/banners/categories/cat2_hover.gif');
			image_url.push('/skin/frontend/default/default/images/kr3/banners/categories/cat3_hover.gif');
			image_url.push('/skin/frontend/default/default/images/kr3/banners/categories/cat4_hover.gif');
			image_url.push('/skin/frontend/default/default/images/kr3/banners/categories/composite_cat1_hover.gif');
			image_url.push('/skin/frontend/default/default/images/kr3/banners/categories/composite_cat2_hover.gif');
			image_url.push('/skin/frontend/default/default/images/kr3/banners/categories/composite_cat3_hover.gif');
			image_url.push('/skin/frontend/default/default/images/kr3/banners/categories/holders_cat1_hover.gif');
			image_url.push('/skin/frontend/default/default/images/kr3/banners/categories/holders_cat2_hover.gif');
			image_url.push('/skin/frontend/default/default/images/kr3/banners/categories/holders_cat3_hover.gif');
			image_url.push('/skin/frontend/default/default/images/kr3/banners/categories/holders_cat4_hover.gif');
			
			num = image_url.length;
			
			for (i = 0; i < num; i++) {
				preload.push(new Image());
				preload[i].src = image_url[i];
			}
		}
	}
	
});//end class

var site = new functions();
