﻿
var IWRMain = {
	Version: '1.0.0',
	Debug: false,
   
	ICON_ERROR: "icon_error",
	ICON_WARN: "icon_warn",
	ICON_INFO: "icon_info",
	ICON_NONE: "icon_none",
	ICON_SUCCESS: "icon_success",
	
	VLDPAGE_CANCEL: null,
	VLDPAGE_CONFIRM: null,
	VLDPAGE_SCHD: null,
	VLDPAGE_RESCHD: null,
	
	id_dropsheet: "iwr_dropsheet",
	id_modal: "modal_window",
	
	load: function() {
		if((typeof Prototype=='undefined') || 
			(typeof Element == 'undefined') || 
			(typeof Element.Methods=='undefined') ||
			parseFloat(Prototype.Version.split(".")[0] + "." + Prototype.Version.split(".")[1]) < 1.5)
			throw("IWRMain requires the Prototype JavaScript framework >= 1.5.0");
       
		$A(document.getElementsByTagName("script")).findAll( function(s) {
			return (s.src && s.src.match(/iwr\.js(\?.*)?$/))
		}).each( function(s) {
		   var path = s.src.replace(/iwr\.js(\?.*)?$/,'');
		   var includes = s.src.match(/\?.*load=([a-z,]*)/);
		   (includes ? includes[1] : 'iwrvalidators').split(',').each(
			   function(include) { IWRMain.addScript(path+include+'.js') });
		});
		
		if (IWRMain.Debug && Prototype.Browser.IE)
		   IWRMain.addScript('http://getfirebug.com/releases/lite/1.2/firebug-lite-compressed.js');
	},
	
   addDS: function() {
      $$('select').each(function(o){o.hide()});
      
      if ($(IWRMain.id_dropsheet) == undefined) {
         $$('body')[0].insert({top:'<div id="' + IWRMain.id_dropsheet + '"></div>'});
      }
      
      var vp = document.viewport;
      var iWidth = vp.getWidth();
      var iHeight = vp.getHeight() + 100;
      var oDir = $(IWRMain.id_dropsheet);
      var oStyle = {};
      oStyle.backgroundColor = '#333';
      oStyle.opacity = 0.5;
      oStyle.width = Math.max(990,iWidth) + 'px';
      oStyle.height = iHeight + 'px';
      oStyle.top = 0;
      oStyle.left = 0;
      oStyle.zIndex = 22;
      oStyle.position = 'absolute';
      oDir.setStyle(oStyle);
   },
   removeDS: function() {
      var obj = $(IWRMain.id_dropsheet);
      $$('select').each(function(o){o.show()});
      if (obj != undefined) obj.remove();
   },
   addModal: function(sTitle, sContent) {
      IWRMain.addDS();
      var mk = [];
      mk.push('<div id="modal_wrapper" style="margin: 0 auto">');
      mk.push('<div id="modal_head">');
      mk.push('<span style="float:left;padding:8px 0 0 3px;"><img src="Images/icons/loading.gif" alt="" /></span>');
      mk.push('<span style="float:left;font-size: 24px;padding:8px 0 0 10px;">');
      mk.push(sTitle);
      mk.push('</span>');
      mk.push('<span style="float:right;padding-bottom:2px"><img src="Images/icons/logo_sm.gif" alt="" /></span>');
      mk.push('<div class="clearfloat">&nbsp</div></div>');
      mk.push('<div id="modal_body">');
      mk.push(sContent);
      mk.push('</div></div>');

      
      $$('body')[0].insert({top:'<div id="' + IWRMain.id_modal + '">'+mk.join('')+'</div>'});
      var oDir = $(IWRMain.id_modal);
      var oStyle = {};
      oStyle.zIndex = '33';
      oStyle.left = (document.viewport.getWidth()/2 - 700/2) + 'px';
      oDir.setStyle(oStyle);
   },
   removeModal: function() {
      IWRMain.removeDS();
      var obj = $(IWRMain.id_modal);
      if (obj != undefined) obj.remove();
   },
	addScript: function( url )	{
		eltScript = document.createElement("script");
		eltScript.setAttribute("type", "text/javascript");
      url += IWRMain.addPreventCacheParam(url);
		eltScript.setAttribute("src", url);
		document.getElementsByTagName('head')[0].appendChild(eltScript);
	},
	getRC: function(s) {
	   var mk=[];
	   mk.push('<div class="rc_cntnr">');
	   mk.push('<b class="rtop"><b class="r1"></b><b class="r2"></b><b class="r3"></b><b class="r4"></b></b>');
	   mk.push(s);
	   mk.push('<b class="rbottom"><b class="r4"></b><b class="r3"></b><b class="r2"></b><b class="r1"></b></b>');
	   mk.push('</div>');
      return mk.join('');
	},
   loadJsCssFile: function(filename, filetype, media){
	   filename += IWRMain.addPreventCacheParam(filename);

      if (filetype=='js') {
         var fileref = document.createElement('script');
         fileref.setAttribute('type','text/javascript');
         fileref.setAttribute('src', filename);
      } else if (filetype=='css') { 
         var fileref = document.createElement('link');
         fileref.setAttribute('rel', 'stylesheet');
         fileref.setAttribute('type', 'text/css');
         fileref.setAttribute('href', filename);
         fileref.setAttribute('media', media);
      }
      
      if (typeof fileref!='undefined')
         document.getElementsByTagName('head')[0].appendChild(fileref);
   },
   
   unloadJsCssFile: function (filename, filetype){
      filename += IWRMain.addPreventCacheParam(filename);
   
      var targetelement = (filetype=="js")? "script" : (filetype=="css")? "link" : "none";
      var targetattr = (filetype=="js")? "src" : (filetype=="css")? "href" : "none";
      var allsuspects = document.getElementsByTagName(targetelement);
      
      for (var i=allsuspects.length; i>=0; i--){ 
         if (allsuspects[i] && allsuspects[i].getAttribute(targetattr)!=null && allsuspects[i].getAttribute(targetattr).indexOf(filename)!=-1)
            allsuspects[i].parentNode.removeChild(allsuspects[i])
      }
   },
   
   addPreventCacheParam: function (url){
      var retVal = '';
	   if( url.indexOf('?') > -1)
		   retVal += '&';
	   else
		   retVal += '?';
	   retVal += 'preventCache=' + IWRMain.Version;
	   return retVal;
   },

   dbg: function(s) {
      if ($('pnlDbg') == undefined)
         new Insertion.Bottom($$('body')[0], '<div id="pnlDbg" style="position:absolute;top:0;right:0;width:200px;padding:5px;background-color:#eee;height:600px;overflow:auto"></div>');
      
      //$('pnlDbg').insert({top:IWRMain.getRC('<div style="border:solid 1px #000; margin:3px 0 3px 0; padding: 3px">'+s+'</div>')});
      $('pnlDbg').insert({top:'<div style="margin:2px 0">'+IWRMain.getRC(s)+'</div>'});
   },
   
   log: function(s) {
      if (console)
         console.log(s);
   },
   
   err: function(sIcon, sMsg) {
      if (sIcon != null)
      {
         switch (sIcon)
         {
            case IWRMain.ICON_ERROR:
               $('pnlError_img').update("<img alt='' src='images/icons/error.gif'>");
               $('pnlError_hld').addClassName("errorText");
               break;
            case IWRMain.ICON_INFO:
               $('pnlError_img').update("<img alt='' src='images/icons/info.gif'>");
               $('pnlError_hld').addClassName("errorText");
               break;
            case IWRMain.ICON_NONE:
               $('pnlError_img').update("&nbsp;");
               $('pnlError_hld').addClassName("errorText");
               break;
            case IWRMain.ICON_SUCCESS:
               $('pnlError_img').update("<img alt='' src='images/icons/ok.gif'>");
               break;
            case IWRMain.ICON_WARN:
               $('pnlError_img').update("<img alt='' src='images/icons/warn.gif'>");
               $('pnlError_hld').addClassName("errorText");
               break;
         }
         $('pnlError_hld').update(sMsg);
         $('pnlError').show();
         new Effect.Highlight('pnlError', {startcolor: '#ffff99', endcolor: '#ffffff', restorecolor: '#ffffff'});
      }
      else
      {
         $('pnlError_hld').update('&nbsp;');
         $('pnlError').hide();
      }
   },
   
   DisableLinks: function(sPath) {
      $$('a').each(function(s, index) {
         var linkValue = s.href.toLowerCase();
         var bDisable = true;   
         var pathObj = null;
         switch (sPath)
         {
            case "cancel":
               pathObj = IWRMain.VLDPAGE_CANCEL;
               break;
            case "confirm":
               pathObj = IWRMain.VLDPAGE_CONFIRM;
               break;
            case "reschd":
               pathObj = IWRMain.VLDPAGE_RESCHD;
               break;
            case "schd":
               pathObj = IWRMain.VLDPAGE_SCHD;
               break;
         }
         
         var currDomain = window.location.hostname.toLowerCase();         
         if (linkValue.indexOf(currDomain) == -1 || linkValue.indexOf("__dopostback") > -1)
         {
            bDisable = false;
         }
         else
         {  
            pathObj.each(function(sPage, j) {
               if (bDisable && linkValue.indexOf(sPage.toLowerCase()) > -1) bDisable = false;
            });
         }
         
         if (bDisable)
         {
            s.className = 'disable';
            s.href = "";
            s.onclick = function() {return false;}
         }
      });
   },

   getSiteInfoMarkup: function(oSite) {
      
      var mk = [];
      mk.push('<div class="siteInfo_name">');
      mk.push(oSite.SiteCode + ': ' + oSite.SiteName);
      mk.push('</div>');
      
      mk.push('<div class="siteInfo_address">');
      mk.push(oSite.SiteAddress1 + '<br />');
      if (!IWRValidator.isDBNullOrEmpty(oSite.SiteAddress2))
        mk.push(oSite.SiteAddress2 + '<br />');
      if (!IWRValidator.isDBNullOrEmpty(oSite.SiteAddress3))
        mk.push(oSite.SiteAddress3 + '<br />');
      if (!IWRValidator.isDBNullOrEmpty(oSite.SiteAddress4))
        mk.push(oSite.SiteAddress4 + '<br />');
      mk.push('</div>');  
        
      mk.push('<div class="siteInfo_place">');
      mk.push(oSite.SiteCity);
      if (!IWRValidator.isDBNullOrEmpty(oSite.SiteStateProvince) && oSite.SiteStateProvince != "00") {
        mk.push(', ' + oSite.SiteStateProvince);
        if (!IWRValidator.isDBNullOrEmpty(oSite.SitePostalCode)) mk.push(' ' + oSite.SitePostalCode);
      } else if (!IWRValidator.isDBNullOrEmpty(oSite.SiteCountryCode)) {
        mk.push(', ' + oSite.SiteCountryCode);
        if (!IWRValidator.isDBNullOrEmpty(oSite.SitePostalCode)) mk.push(' ' + oSite.SitePostalCode);
      } else if (!IWRValidator.isDBNullOrEmpty(oSite.SitePostalCode)) {
        mk.push(', ' + oSite.SitePostalCode);
      }
      mk.push('</div>');
      
      mk.push('<div class="siteInfo_contact">');
      if (!IWRValidator.isDBNullOrEmpty(oSite.SitePhone))
        mk.push('<br />Phone ' + oSite.SitePhone);
      if (!IWRValidator.isDBNullOrEmpty(oSite.SiteFax))
        mk.push('<br />Fax ' + oSitee.SiteFax);
      if (!IWRValidator.isDBNullOrEmpty(oSite.SiteEmail))
        mk.push('<br />Email ' + oSite.SiteEmail);  
      mk.push('</div>');
        
      return mk.join('');
   
   },

   attachEnterKeyToButton: function(controlId, actionControlId){
      $(controlId).observe('keypress', function(e) {
         var code;
         if (!e) var e = window.event;
         if (e.keyCode) code = e.keyCode;
         else if (e.which) code = e.which;
         if (code == Event.KEY_RETURN) {
            $(actionControlId).click(); e.stop();
         }
      });
   }
	
};


